个推微服务网关架构实践详解( 二 )
文章插图
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 后端架构 》,话痨技术,职场,招聘,在线面试,进阶提升 。每天一篇技术分享
【个推微服务网关架构实践详解】
推荐阅读
- 浅谈在Linux中如何将脚本做成系统服务开机自启动
- 汽车|男子买宝马导航一年连换7个都不行 卖家:我这服务可以吧?
- 微信小程序怎么制作自己的程序?
- 快乐男声|昔日快男亚军卑微求职,晒出个人简历,为什么会沦落到这种地步?
- 为什么催收非要加微信?
- 服务器最大内存是多少?制约因素有些什么呢?
- Linux服务器磁盘满了怎么办
- SRS流媒体服务器之HTTP-FLV框架分析
- 宝宝怎么练习抬头?
- 微信|最高领168元!微信1500万元数字人民币红包来了