从用户的视角来感受一个开源项目的成长,是我们推出「开发者说」专栏的初衷,即在开发者进行开源项目选型时,提供更为立体的项目信息。专栏所有内容均来自作者原创/投稿,本文是「开发者说」的第6篇,作者 Jason Joo,@友乐活(北京),Sentinel Committer.
1st:《深度剖析开源分布式事务方案 Seata 的事务协调器》
2nd:《RocketMQ 消息发送的高可用设计》
3st:《消息队列 Kafka 和 RocketMQ 之我见》
4th:《如何参与定义一款 IDE 插件》
5th:《基于 Nacos 的网关灰度路由和服务权重灰度》
集成 Sentinel 前生
流控在分布式系统中是较为基本的需求,其需要在系统负载、服务质量、流量甄别、安全⻛控等⽅⾯进⾏保障,并根据业务需求,进⾏动态调整或⼈工临时介入,尤其是在⼀些事件性的时期,以实现快速控制和恢复服务的效果。
流控手段一般挂载在流量网关和业务内的逻辑。
流量网关常见于 Nginx 这类代理层,通过扩展插件、Lua脚本进⾏针对 IP/Path/Query 等形式的流控。业务内则⼤多在局部或框架层进行信号量、线程池、超时时间或其它逻辑来实现流控。前者主要体现在运维的可操作性,不侵⼊业务线,而后者则针对性更强,但有侵⼊性或修改时需要部署,⾯向业务团队可控。
两种类型的流控往往⽐较割裂(由不同的团队在不共享的空间内进行控制),常出现指标的不协调性。
为了解决这⼀问题,我们开始汇总现有的需求,调研相关的系统,并准备实现⼀套可以同时面向业务和运维,进行应用级隔离和满足基本规则类型需求的流控实现,预期