4流量控制

259 阅读1分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

流量控制

流量控制指的是根据一些流量特质,控制流向下游的动作。

流量控制有很多应用场景,比如金丝雀发布,同机房优先路由,标签路由,全链路灰度等等。

金丝雀发布:只有新旧两个版本,根据流量特征,将部分流量流入新版本验证,确定新版本稳定后再全量发布。

同机房优先路由:当公司规模扩大,应用会跨机房部署来达到高可用的目的。由于异地跨机房调用出现网络延迟,需要确保服务消费方能优先调用相同机房的服务消费方。

全链路灰度:当公司规模扩大之后,微服务数量增多。微服务数量众多的情况下进行灰度发布会发现整个链路非常长。全链路灰度解决的问题是保证流量能够路由到所有的灰度版本。

流量控制需要解决两个能力:

流量识别能力:Ribbon内部无法解析HTTP请求信息,需要通过ThreadLocal完成HTTP请求解析结果的透传。

实例打标能力:在实例的metadata中添加标记信息。通过IRule获取Server列表并根据这些Server中元数据的标签信息决定路由情况。

流量控制随着项目规模的扩大至关重要,我们需要理解其中的概念,做好流量控制,在合适场景使用合适流量控制。