个推微服务网关架构实践详解( 二 )


个推微服务网关架构实践详解

文章插图
 
2.流量控制
流量控制主要是通过一个名为“Counter”的后端服务和网关中的流控插件实现的 。Counter负责存储请求的访问次数和限值,并且支持按时间维度进行计数 。流控插件负责拦截流量,调用Counter的接口进行超限查询,如果Counter返回请求超限,网关就会直接拒绝访问,实现限次的功能,再结合时间维度就可以实现限频的需求 。同时流控插件通过输出日志信息到fluent-bit,由fluent-bit聚合计次来更新Counter中的计数 。
个推微服务网关架构实践详解

文章插图
 
3.链路追踪
整个微服务体系的链路追踪是基于分布式的链路追踪系统Zipkin来实现的 。通过在网关安装Zipkin插件和在后端服务中引入Zipkin中间件,实现最终的链路追踪功能 。具体架构如下图所示 。
个推微服务网关架构实践详解

文章插图
 
4. A/B测试
在A/B测试的实现中,有以下几个关键点:
(1)所有的策略信息都配置在Consul上,并通过Consul-Template实时生效到各个微服务的内存中;
(2)每条策略均有指明,调用一个微服务时应调用A还是B(默认为A);
(3)网关中实现A/B插件,在请求到达网关时,通过A/B插件配置的规则,即可确定请求适用的A/B策略;
(4)网关会将请求适用的A/B策略通过URL参数传递下去;
(5)每个微服务通过传递下来的策略,选择正确的服务进行访问 。
下图给出了两种场景下的调用链路 。
个推微服务网关架构实践详解

文章插图
 
总结以上就是个推微服务网关的设计和主要功能的实现 。之后,个推的技术团队会不断提升API网关的弹性设计,使其能够在故障出现时,缩小故障的影响范围;同时,我们也会继续将网关与DevOps平台做进一步地结合,以确保网关在迭代更新时,能够有更多的自动化测试来保证质量,实现更快速地部署 。
个推微服务网关架构实践详解

文章插图
 
关注头条号《 JAVA 后端架构 》,话痨技术,职场,招聘,在线面试,进阶提升 。每天一篇技术分享

【个推微服务网关架构实践详解】


推荐阅读