这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
1.服务发布:
服务发布:即指让一个服务升级运行行的代码的过程。 难点: 1.服务不可用 2.服务抖动 3.服务回滚
蓝绿部署:简单,稳定,但需要俩倍资源
2.流量治理
在微服务架构下,我们可以基于地区、集群、实例、请求等维度。
3.负载均衡
负载均衡负责分配请求在每个下游实例上的分布。 常见的LB策略: Round Robin Random Ring Hsh Least Request
4.稳定性治理
线上服务总会出问题,这与程序的正确性无关。
网络攻击 流量突增 机房断电等等等等
5.重试的意义:
可以避免掉偶发的错误,提高SLA。 降低错误率 降低长尾延时 容忍暂时性错误 避开下游故障实例
本地函数调用可能有的异常
参数非法 OOM NPE 边界case 系统崩溃 死循环 程序异常退出
远程函数调用可能有的异常
网络抖动 下游负载高导致超时 下游机器宕机 本地机器负载高,调度超时 下游熔断、限流
6.重试的难点:
幂等性 重试风暴 超时设置
7.重试策略
限制重试比例: 设定一个重试比例(例如1%),重试次数占所有请求比例不超过该阈值。 防止链路重试: 链路层次的防重试风暴的核心是限制每层都发生重试,理想情况下只有最下一层发生重试。可以返回特殊的status表明"请求失败,但别重试” Hedged requests 对于可能超时的请求,重新向另一个下游实例发送一个相同的请求,并等待先到达的响应
8.重试效果验证:
实际验证经过上述重试策略后,在链路上发生的重试放大效应。