[发明专利]一种消息同步方法有效
申请号: | 201611241828.1 | 申请日: | 2016-12-29 |
公开(公告)号: | CN106598762B | 公开(公告)日: | 2020-04-17 |
发明(设计)人: | 项剑峰;邬来军;彭亮 | 申请(专利权)人: | 上海理想信息产业(集团)有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 上海国智知识产权代理事务所(普通合伙) 31274 | 代理人: | 潘建玲 |
地址: | 200135 上海市浦*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 同步 方法 | ||
本发明公开了一种消息同步方法,该方法包括如下步骤:步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;步骤二,从节点接收主节点发来的同步消息请求,并存储消息;步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中,通过本发明,实现了分布式消息中间件的高可靠的消息同步的目的。
技术领域
本发明涉及消息处理技术领域,特别是涉及一种高可靠的消息同步方法。
背景技术
在分布式系统中,为了保证系统高可用,常常需要在不同物理位置的机器中保存一份数据的多个副本。为保证数据的一致性,可以采用多种复制技术。数据复制有同步复制、异步复制和半同步复制等多种技术,为了追求一致性和性能的平衡,常常会采用半同步复制方案。
在数据库系统中目前有两种半同步复制的方案,第一种半同步复制方案如下:先在主节点写重做日志,然后将事务提交到主节点,之后触发等待直到从节点将主节点的重做日志写入磁盘但不要求事务在从节点完全的执行;第二种半同步复制方案如下:先在主节点写重做日志,复制重做日志到从节点,主节点等待从节点反馈接收到重做日志的ack(应答信号)之后,再提交事务并且返回commit OK(确认信号)结果给客户端。
第一种半同步复制方案的主要问题是:当主节点等待从节点回应超时,会直接向客户端返回成功。如果主节点的重做日志并没有同步到从节点,这时主节点崩溃,从节点会丢失最后一个事务的内容;第二种半同步复制方案很好的解决了第一种方案的问题,如果主节点等待从节点反馈接收到重做日志的ack超时之后,主节点上面的事务不会提交,会进行回滚操作。
Kafka是当前比较出色的一款高吞吐量的分布式发布订阅消息系统,其数据复制原理就采用的上述第一种半同步复制方案,为提高性能,Kafka的从节点接收到数据后就立马向主节点发送ack,而非等到持久化到磁盘上。Kafka同样存在主从同步失败后主挂掉的数据丢失问题,由于Kafka的消息存储系统不同于一般的数据库系统,如果采用第二种半同步复制方案,做数据回滚操作时需要阻塞其他线程的写操作,代价很高。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种消息同步方法,以实现分布式消息中间件的高可靠的消息同步的目的。
为达上述及其它目的,本发明提出一种消息同步方法,包括如下步骤:
步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;
步骤二,从节点接收主节点发来的同步消息请求,并存储消息;
步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中。
进一步地,步骤一进一步包括:
主节点接收客户端的消息写入请求生成WAL日志文件,并持久化到磁盘;
主节点上通过WAL日志文件生成消息存储文件和消息索引文件;
主节点同步WAL日志到所有的从节点。
进一步地,步骤三进一步包括:
步骤S1,若所有从节点的消息都同步成功,则更新主从一致的检查点信息并返回客户端消息发送成功;
步骤S2,若消息同步超时,则提取消息标识和消息内容发送到该控制节点;
步骤S3,若消息标识和消息发送给该控制节点成功,则返回客户端消息发送成功,否则进入步骤S4;
步骤S4,返回客户端Pendding状态和消息标识信息;
步骤S5,该客户端通过该控制节点判断主节点是否故障;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海理想信息产业(集团)有限公司,未经上海理想信息产业(集团)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611241828.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于中间件的事务连接建立方法及装置
- 下一篇:BI报表测试方法