系统架构演变历史
- 单体架构
- 垂直应用架构
- 分布式架构
- SOA架构
- 微服务架构
单体架构
- 性能最高
- 冗余小
- Debug困难
- 模块相互影响
- 模块分工、开发流程
垂直应用架构
- 业务独立开发维护
- 不同业务存在冗余
- 还是单体
分布式
- 业务无关的独立服务
SOA
- 服务注册
- 系统设计是中心化的
微服务
- 彻底的服务化
- 自下而上
- 业务独立设计
核心要素
- 服务治理
- 服务注册
- 服务发现
- 负载均衡
- 可观测性
- 日志采集
- 日志分析
- 监控打点
- 安全
- 身份验证
服务治理
流量治理
可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行管理。
重试的意义
本地函数调用没有重试的必要。
远程函数调用存在网络抖动、下游负载高、宕机等问题,重试可以避免偶发的错误。
- 降低错误率
- 降低长尾延时
- 容忍暂时性错误
- 避开下游故障实例
限制重试比例:设置一个阈值,不超过该阈值。
防止链路重试、Hedged Requests。
稳定性治理
- 网络攻击
- 流量徒增
- 机房断电
- 光纤被挖
- 机器故障
解决方式:限流、熔断、过载保护、降级。