了解分布式架构,让你的软件架构之路越走越顺( 三 )

了解分布式架构,让你的软件架构之路越走越顺
文章插图
 
 
image.png

三阶段的协调者
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
TCC(Try)
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 最终一致性
查询模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
补偿模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
异步确保模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
定期校对模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
可靠消息模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
image.png
  • 服务交互的模式
同步模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
异步模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
image.png
消息模式
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 同步与异步的抉择
尽量使用异步来替换同步操作
能用同步解决的问题,不要引入异步
  • 超时模式
同步两个状态的接口超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
同步两个状态的内部超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
同步三状态的内部超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
异步受理超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
消息队列发送超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
消息对垒接收超时
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 补偿的博弈
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
服务1调用服务2,如果服务2响应服务1,并且告诉服务1消息我接收了,那么服务1的任务就结束了,如果服务2处理失败,服务2应该负责重试或者补偿 。在这种情况下,服务2通常先持久化消息后再告诉服务1接收成功,随后服务2才开始处理持久的消息,避免服务进程被傻吊丢失消息的情况 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
服务1调用服务2,如果服务2没有给出明确的接收响应,那么服务1应该持久尝试重试,知道服务2明确表达已经接收消息,这种情况下,容易出现消息重复,因此在服务2中通常要保证滤重或者幂等性 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 缓存使用的一致性模式
缓存是用来加速的,牺牲了一致性,获得高性能,只适合特殊场景 。
保持数据库和缓存的强一致性是个伪命题
如果性能要求不是非常的高,尽量使用分布式缓存,而不是使用本地缓存,本地缓存可能你现在读的时候本地是开,其实另一个时间其他人读的是关,你想想多可怕 。


推荐阅读