微服务原理与治理实践 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第 1篇笔记 ~
-
为什么需要架构的演进
- 互联网爆发性的增长
- 硬件设施的快速发展
- 需求复杂性的多样化
- 开发人员的急剧增加
- 计算机理论及技术的发展
-
架构演进的历史
- 单体架构 --> 垂直应用架构 --> 分布式架构 --> SOA架构 --> 微服务架构
-
各种架构的优缺点
-
单体架构
- 性能高,冗余小,但是debug比较困难,耦合度高
-
垂直应用架构
- 业务独立开发和维护
- 不同的业务存在冗余并且每个业务也都是单体
-
分布式架构
- 业务无关的服务独立开发
- 调用关系复杂,不同服务冗余,服务模块debug可能导致全站瘫痪
-
SOA(面向服务的架构)
- 服务之间相互独立
- 需要从上至下设计,重构困难,整个系统设计是中心化的
-
微服务架构
- 开发效率高,业务独立设计,故障隔离
- 治理运维难度较高
-
-
微服务架构的核心要素
-
服务治理
- 服务注册,服务发现,负载均衡,扩缩容,流量治理,重试。。。
-
可观测性
- 日志采集,日志分析,监控打点,异常报警,链路追踪。。。
-
安全性
- 身份验证,认证授权,访问令牌,审计,传输加密。。。
-
-
重试
- 意义:降低错误率,降低长尾延迟,容忍暂时性错误,避开下游故障实例
- 重试的难点:幂等性,重试风暴,超时机制
- 要防止链式重试,比如A调用B调用C,如果BC发生了重试,那么必然又会发生A调用B的重试,可以返回特殊的状态要A别重试。