分布式系统的技术栈
分布式系统需要干的两件事:
- 提高整体架构的吞吐量,服务更多的并发和流量。
- 为了提高系统的稳定性,让系统的可用性更高。
提高架构的性能
- 缓存系统。提高访问能力。缓存分配和路由。
- 负载均衡系统。水平扩展,多台机器分担流量请求。
- 异步调用。消息队列对请求做排队处理,削峰填谷。增加吞吐量,实时性较差。消息容易丢失。持久化又会有状态,增加服务调度难度。
- 数据分区和数据镜像。不同数据区承担不同区的流量。数据的一致性问题。初期读写分离的数据镜像方式,后期采用分库分表的方式。
提高架构的稳定性
- 服务拆分。目的:隔离故障;重用服务模块。问题:服务调用依赖。
- 服务冗余。目的:去除单点故障,支持服务的弹性伸缩,以及故障转移。问题:有状态的服务,带来更高的复杂性。
- 限流降级。限流,功能降级的方式停掉部分服务,拒绝部分用户,确保架构不会挂掉。
- 高可用架构。冗余架构角度保障。
- 高可用运维。
分布式系统的关键技术
技术问题需要从下面几个方面解决。
- 服务治理。服务拆分、服务调用、服务发现、服务以来、服务的关键度定义。
- 架构软件管理。架构版本管理、整体架构的生命周期管理,以及对服务的编排、聚合、事务处理等服务调度功能。
- DevOps。环境构建、持续集成、持续部署。
- 自动化运维。服务伸缩、故障迁移、配置管理、状态管理、
- 资源调度管理。
- 整体架构监控。眼睛。对三层系统(应用层、中间件层、基础层)进行监控。
- 流量控制。负载均衡、服务路由、熔断、降级、限流、灰度发布等。
分布式系统的「纲」
分布式系统的五个关键技术
- 全栈系统监控。
- 服务/资源调度。
- 流量调度。
- 状态/数据调度。
- 开发和运维的自动化。