The invention discloses a system and a message synchronization method, which comprises the following steps: A, the master node receives the client request message is written, storage and message synchronization message from node; step two, receiving synchronization messages sent from the master node request node, and stores the message; step three, the use of control node cache synchronization timeout message and message identifier, a master node in the corresponding fault after the update timeout message to the main node of the new, the invention realizes high reliable message distributed message middleware synchronization purposes.
【技术实现步骤摘要】
本专利技术涉及消息处理
,特别是涉及一种高可靠的消息同步方法及系统。
技术介绍
在分布式系统中,为了保证系统高可用,常常需要在不同物理位置的机器中保存一份数据的多个副本。为保证数据的一致性,可以采用多种复制技术。数据复制有同步复制、异步复制和半同步复制等多种技术,为了追求一致性和性能的平衡,常常会采用半同步复制方案。在数据库系统中目前有两种半同步复制的方案,第一种半同步复制方案如下:先在主节点写重做日志,然后将事务提交到主节点,之后触发等待直到从节点将主节点的重做日志写入磁盘但不要求事务在从节点完全的执行;第二种半同步复制方案如下:先在主节点写重做日志,复制重做日志到从节点,主节点等待从节点反馈接收到重做日志的ack(应答信号)之后,再提交事务并且返回commitOK(确认信号)结果给客户端。第一种半同步复制方案的主要问题是:当主节点等待从节点回应超时,会直接向客户端返回成功。如果主节点的重做日志并没有同步到从节点,这时主节点崩溃,从节点会丢失最后一个事务的内容;第二种半同步复制方案很好的解决了第一种方案的问题,如果主节点等待从节点反馈接收到重做日志的ack超时之后,主节点上面的事务不会提交,会进行回滚操作。Kafka是当前比较出色的一款高吞吐量的分布式发布订阅消息系统,其数据复制原理就采用的上述第一种半同步复制方案,为提高性能,Kafka的从节点接收到数据后就立马向主节点发送ack,而非等到持久化到磁盘上。Kafka同样存在主从同步失败后主挂掉的数据丢失问题,由于Kafka的消息存储系统不同于一般的数据库系统,如果采用第二种半同步复制方案,做数据 ...
【技术保护点】
一种消息同步方法,包括如下步骤:步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;步骤二,从节点接收主节点发来的同步消息请求,并存储消息;步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中。
【技术特征摘要】
1.一种消息同步方法,包括如下步骤:步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;步骤二,从节点接收主节点发来的同步消息请求,并存储消息;步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中。2.如权利要求1所述的一种消息同步方法,其特征在于,步骤一进一步包括:主节点接收客户端的消息写入请求生成WAL日志文件,并持久化到磁盘;主节点上通过WAL日志文件生成消息存储文件和消息索引文件;主节点同步WAL日志到所有的从节点。3.如权利要求1所述的一种消息同步方法,其特征在于,步骤三进一步包括:步骤S1,若所有从节点的消息都同步成功,则更新主从一致的检查点信息并返回客户端消息发送成功;步骤S2,若消息同步超时,则提取消息标识和消息内容发送到该控制节点;步骤S3,若消息标识和消息发送给该控制节点成功,则返回客户端消息发送成功,否则进入步骤S4;步骤S4,返回客户端Pendding状态和消息标识信息;步骤S5,该客户端通过该控制节点判断主节点是否故障;步骤S6,若判断结果为主节点故障,则在该控制节点上获取主节点故障时刻的主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已同步成功,准备发送下一条消息,否则说明消息同步失败且新的主节点上无此消息,尝试重新发送;步骤S7,若判断结果为主节点没有故障,则在主broker上查询主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已经同步成功,准备发送下一条消息,否则重复本次操作直到确定消息同步成功。4.一种消息同步方法,包括如下步骤:步骤一,主节点的消息处理线程接收客户端的消息写入请求,于存储单元写入消息的WAL日志,生成批量同步请求至批量同步请求队列,并阻塞触发等待;步骤二,主节点接收从节点定时发来的心跳信息,解析出其中包含的已经同步到从节点的WAL的最大偏移量信息;步骤三,于本地WAL日志中读取从节点心跳中该偏移量之后的数据复制到相应的从节点;步骤四,主节点将多个从节点发来心跳中的偏移量信息的最小值作为主从一致的检查点信息,持久化到磁盘上,并定时同步到所有从节点;步骤五,主节点于批量同步请求队列中取出批量同步请求;步骤六,若当前批量同步请求中的偏移量小于主从一致的检查点,则于批量同步队列中删除该批量同步请求,并唤醒对应的消息处理线程向客户端返回消息写入成功。5.如权利要求4所述的一种消息同步方法,其特征在于,于步骤六之后,还包括如下步骤:判断消息同步是否超时,如果超时则...
【专利技术属性】
技术研发人员:项剑峰,邬来军,彭亮,
申请(专利权)人:上海理想信息产业集团有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。