分布式弹力设计总结

分布式弹力设计的目的

保证服务的弹力,从两个方面体现,一是出现故障时能够自恢复,另一方面是在无法自愈的情况下,将范围控制在最小。

为了这个目标,弹力设计从以下三个方面考虑。

1 服务冗余,一方面是提升服务的总吞吐能力,另一方面也避免单点问题。

为了实现冗余的服务,主要使用的组件有

负载均衡,nginx haproxy

动态路由,

服务发现,如何发现服务,一般与服务注册一起

健康检查

2 服务解耦

目的,增加吞吐量,出现故障可以隔离在小范围内。它主要的技术有

异步通信,三种异步通信的模型,请求响应,发布订阅,消息中间件。异步通信会涉及到,失败是做业务补偿。

用户分片,多租户

业务分片,这其中有有个自包含的概念,独立的服务不依赖于外部,有自己的数据库和应用。

工作流,通过工作流将整个业务流程串联起来,方便进行业务补偿,业务重试,

3 服务容错

熔断,通过三种状态来控制熔断状态

降级,降低一致性,简化流程,缓存读数据。

限流,计数器算法,队列玩法,漏斗算法,令牌桶算法

重试 当调用超时,或者特殊的业务异常可进行重试,但要注意幂等。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容