分布式系统的技术栈

分布式系统需要干的两件事:

  1. 提高整体架构的吞吐量,服务更多的并发和流量。
  2. 为了提高系统的稳定性,让系统的可用性更高。

提高架构的性能

image.png

  • 缓存系统。提高访问能力。缓存分配和路由。
  • 负载均衡系统。水平扩展,多台机器分担流量请求。
  • 异步调用。消息队列对请求做排队处理,削峰填谷。增加吞吐量,实时性较差。消息容易丢失。持久化又会有状态,增加服务调度难度。
  • 数据分区和数据镜像。不同数据区承担不同区的流量。数据的一致性问题。初期读写分离的数据镜像方式,后期采用分库分表的方式。

提高架构的稳定性

image.png

  • 服务拆分。目的:隔离故障;重用服务模块。问题:服务调用依赖。
  • 服务冗余。目的:去除单点故障,支持服务的弹性伸缩,以及故障转移。问题:有状态的服务,带来更高的复杂性。
  • 限流降级。限流,功能降级的方式停掉部分服务,拒绝部分用户,确保架构不会挂掉。
  • 高可用架构。冗余架构角度保障。
  • 高可用运维。

分布式系统的关键技术

技术问题需要从下面几个方面解决。

  • 服务治理。服务拆分、服务调用、服务发现、服务以来、服务的关键度定义。
  • 架构软件管理。架构版本管理、整体架构的生命周期管理,以及对服务的编排、聚合、事务处理等服务调度功能。
  • DevOps。环境构建、持续集成、持续部署。
  • 自动化运维。服务伸缩、故障迁移、配置管理、状态管理、
  • 资源调度管理。
  • 整体架构监控。眼睛。对三层系统(应用层、中间件层、基础层)进行监控。
  • 流量控制。负载均衡、服务路由、熔断、降级、限流、灰度发布等。

分布式系统的「纲」

分布式系统的五个关键技术

  • 全栈系统监控。
  • 服务/资源调度。
  • 流量调度。
  • 状态/数据调度。
  • 开发和运维的自动化。

image.png