浅谈可靠消息服务实现
纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。
Linux技术交流QQ群:2632018(十月份最新!!)
导读分布式事务往往是服务化的痛点,很多场景通过业务避免了分布式事务,但是还是存在一些场景必须依赖分布式事务,下面来讲讲如何处理分布式事务一 、常用解决方案
分布式事物解决方式有很多,网上博客也有一大堆 总结一般有如下两种
1 刚性分布式事务,两阶段提交 强一致性
2 柔性分布式事务 最大努力提交 ,tcc,可靠消息服务
首先解决分布式事务前提保障:接口必须幂等性,防止消息重复发送对业务影响
二 、可靠消息系统设计(这个感觉不错比较简单,就拿来分享下)
如上图
开始执行 比如:
try{
if(prepare()) { //预发送阶段
doService(); //执行业务逻辑
updateMsgStatus();//更新消息为确认状态
}
}
1 预发送消息,try阶段,如果预发送消息失败了,业务还未执行,所以 系统A,B还是一致性的 不需要处理
这一点容易理解
2 预发送消息成功了,开始执行业务逻辑。执行成功 更新预发送消息转态为确认发送。如果 此时 业务逻辑执行失败了,那预发送消息就不会跟新状态,此时消息确认系统就开启工作,到业务系统1上回查此消息状态,此时发现业务执行失败了,就更新预发送状态至失败状态。
3 如果此时 业务执行成功了消息也被更新成确认发送了 那就ok 完美。如果消息更新失败,还是由消息确认系统回查转态 更新此消息被删除状态还是确认发送状态。
4 消息者开始消费
1> 比如消费失败了,此时产生不一致, 消息恢复系统检测消息状态,重新发送消息
2>如果执行业务失败了,此消息也就不会被确认了,还是由消息恢复系统检测消息状态,重新发送消息
3>如果ask失败了,还是以上逻辑重新发送上诉重新发送当然有次数限制,不能一直发送,超过最大次数就要进入死信队列,等待人工干预了
4> ask成功,消息也就成功消费了,完美,解决了消息可靠服务
三、 努力提交
这个比较简单 ,将失败的消息重复提交,实时性比较弱的一些场景,确保消息推送成功。
比如交易完成推送第三方消息。 此时可以使用努力提交
原文来自: http://my.oschina.net/xliangbo/blog/1545040
本文地址: http://www.linuxprobe.com/message-serve.html编辑员:郝大发,审核员:逄增宝
让您学习到的每一节课都有所收获
《Linux就该这么学》是由资深运维专家刘遄及全国多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。
? 刘遄老师QQ:5604241 微信:gnu_chuan
? 学员助教QQ:5604674
? Linux技术交流A群(满):560843
? Linux技术交流B群:340829
? Linux技术交流C群:463590
? Linux技术交流D群:915246
? Linux技术交流E群:1663106
? Linux技术交流F群:1653851
? Linux技术交流G群:2632018(新群,火热加群中……)
? 官方站点:www.linuxprobe.com
? 电脑在线阅读效果更佳:
http://www.linuxprobe.com/chapter-00.html
按住图片3秒,即可自动关注。
点击左下角查看更多热门技术
- 邬贺铨:卖设备不如做服务,做服务不如做互联网
- 一站搞定“所有”,东玉北街社区便民服务中心欢迎您
- 紧急通知(附宝坻供电公布抢修维护便民服务电话)
- 各位家长注意!天津市医院儿科诊疗服务信息表来了!
- 中国铁路总公司首推常旅客服务 会员可凭积分兑火车票
- 北京大学2017“网络新青年”候选人 | “平安燕园”校园安全服务
- 五台大小事 ┃五台境内高速的固定测速点、服务区(史上最全),
- 中国工业机器人服务行业逾百个
- 让文史工作更贴近现实服务现实
- 青岛出租汽车电召服务中心昨启用