②服务延时处理 , 加入服务缓冲队列延缓服务压力 , 用于削峰
③服务弹性伸缩 , 依赖服务监控 , 弹性伸缩容
4)流控算法
①计数器
- 单机或者集群保存某用户某时间段请求数 , 达到阈值则触发流控
- FIFO 队列
- 请求速度波动 , 消费速度均匀 , 队列满则流控
- 权重队列
- 按服务划分优先级队列 , 不同队列权重不同
- 队列算法设计关键:队列长度的预设非常关键
- 队列太长 , 流控未生效 , 服务已经被打死
- 队列太短 , 流控被频繁触发 , 体验差
- 本质上是队列+限流器实现 , 限流器保证消费速度均匀类 TCP sync backlog
- 转发速度均匀
- 中间人已恒定速率向桶里发放令牌 , 服务请求拿到 token 则开始服务 , 否则不处理
- 转发速度不均匀 , 流量小时积累 , 流量大时消费
- 实时计算服务能力如 QPS , 对比服务 RT 如果 RT 过大 , 则减少 QPS
①手动开关 , 主动运维和应急使用
②监控通知 , 限流发生时干系人要清楚
③用户感知 , 如返回特定错误信息(错误code/错误提示)
④链路标识 , RPC链路加入限流标识方便上下游业务识别限流场景做不同处理
4、熔断设计
1)场景
①过载保护 , 系统负载过高情况为防止故障产生 , 而采取的一种保护措施
②防止应用程序不断尝试可能会失败的操作
2)三个状态
①Closed , 闭合状态 , 正常状态 , 系统需要一个基于时间线到错误计数器 , 如果错误累计达到阈值则切换至 Open 状态
②Open , 断开状态 , 所有对服务对请求立即返回错误 , 不用调用后端服务进行计算
③Half-Open , 半开状态 , 允许部分请求流量进入并处理 , 如果请求成功则按照某种策略切换到 Closed 状态
3)设计要点
①定义触发熔断的错误类型
②所有触发熔断的错误请求必须要有统一的日志输出
③熔断机制必须有服务诊断及自动恢复能力
④最好为熔断机制设置手动开关用于三种状态的切换
⑤熔断要切分业务 , 做到业务隔离熔断
5、补偿事务
①CAP
- 一致性 (Consistence)、可用性 (Availability)、分区容忍性 (Partition Tolerance)
- Basic Availabillity , 基本可用
- Soft State , 软状态
- Eventual Consistency , 最终一致性
④Exponential Blackoff , 指数级退避
四、DevOps
1、部署
1)基础设施
①云
- 公有云
推荐阅读
- 浦峰|冬奥纪实8k超高清试验频道开播,冬奥结束后转入常态化运转
- 年轻人|人生缺少的不是运气,而是少了这些高质量订阅号
- 精度|将建模速率提升10倍,消费级3D扫描仪Magic Swift在2021高交会大显“身手”
- Tesla|最高涨幅21088元:特斯拉Model 3/Y入门车型价格调整
- 新机|快准稳,捕捉每个高光瞬间! 刘衡分享EOS R5拍摄体验
- Apple|苹果高管解读AirPods 3代技术细节 暗示蓝牙带宽可能成为瓶颈
- 人工智能|聚焦车载人工智能计算芯片研究 推进汽车产业高质量发展
- 凝胶|高交会刮起 “专精特新”风 “小巨人”撑起大视野
- Tesla|特斯拉新款Model S电池体积小能量密度高 外媒揭秘三大关键技术
- 养殖|科创信达冠名!第二届智慧养殖高峰论坛帷幕:推动畜牧行业新升级