文章插图
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中通常要保证滤重或者幂等性 。
文章插图
- 缓存使用的一致性模式
缓存是用来加速的,牺牲了一致性,获得高性能,只适合特殊场景 。
保持数据库和缓存的强一致性是个伪命题
如果性能要求不是非常的高,尽量使用分布式缓存,而不是使用本地缓存,本地缓存可能你现在读的时候本地是开,其实另一个时间其他人读的是关,你想想多可怕 。
推荐阅读
- 女职工因不了解生育险,错失了数万元的生育津贴,这些你必须知道
- 大部分英国人不懂泡茶 是真的吗
- 了解铁观音的冲泡方法
- Redis混合存储产品与架构介绍
- API网关在微服务架构中的应用
- 程序员必备!关系型数据库架构的超强总结
- 软件即服务 架构师必备技能指南:SaaS架构设计
- 派出所和公安局有什么不一样!来了解一下,对你的一生有帮助
- 【知识点】带你了解汽车保险知识
- 5G手机未必卖得都很贵 这几款价格美丽的新品了解下