分布式系统弹力设计

Posted huilei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式系统弹力设计相关的知识,希望对你有一定的参考价值。

弹力设计,其中着眼于分布式系统的各种“容忍”能力,包括容错能力(服务隔离、异步调用、请求幂等性)、可伸缩性(有 / 无状态的服务)、一致性(补偿事务、重试)、应对大流量的能力(熔断、降级)。可以看到,在确保系统正确性的前提下,系统的可用性是弹力设计保障的重点。

 

如下图:

技术图片

 

  • 冗余服务。通过冗余服务的复本数可以消除单点故障。这需要服务发现,负载均衡,动态路由和健康检查四个功能或组件。

  • 服务解耦。通过解耦可以做到把业务隔离开来,不让服务间受影响,这样就可以有更好的稳定性。在水平层面上,需要把业务或用户分片分区(业分做隔离,用户做多租户)。在垂直层面上,需要异步通讯机制。因为应用被分解成了一个一个的服务,所以在服务的编排和聚合上,需要有工作流(像 Spring 的 Stream 或 Akk 的 flow 或是 AWS 的 Simple Workflow)来把服务给串联起来。而一致性的问题又需要业务补偿机制来做反向交易。

  • 服务容错。服务容错方面,需要有重试机制,重试机制会带来幂等操作,对于服务保护来说,熔断,限流,降级都是为了保护整个系统的稳定性,并在可用性和一致性方面在出错的情况下做一部分的妥协。

以上是关于分布式系统弹力设计的主要内容,如果未能解决你的问题,请参考以下文章

简评:设计分布式系统(分布式系统的设计模式)

从Elasticsearch来看分布式系统架构设计

分布式系统设计应考虑的问题

分布式系统设计系列 -- 基本原理及高可用策略

分布式存储系统设计—— 系统架构

分布式系统如何设计?看Elasticsearch是怎么做的