分布式弹力设计总结

分布式弹力设计的目的

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

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

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

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

负载均衡,nginx haproxy

动态路由,

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

健康检查

2 服务解耦

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

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

用户分片,多租户

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

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

3 服务容错

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

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

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

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

你可能感兴趣的:(分布式弹力设计总结)