CN106598762B - 一种消息同步方法 - Google Patents

一种消息同步方法 Download PDF

Info

Publication number
CN106598762B
CN106598762B CN201611241828.1A CN201611241828A CN106598762B CN 106598762 B CN106598762 B CN 106598762B CN 201611241828 A CN201611241828 A CN 201611241828A CN 106598762 B CN106598762 B CN 106598762B
Authority
CN
China
Prior art keywords
message
node
slave
master
synchronization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201611241828.1A
Other languages
English (en)
Other versions
CN106598762A (zh
Inventor
项剑峰
邬来军
彭亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Ideal Information Industry Group Co Ltd
Original Assignee
Shanghai Ideal Information Industry Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Ideal Information Industry Group Co Ltd filed Critical Shanghai Ideal Information Industry Group Co Ltd
Priority to CN201611241828.1A priority Critical patent/CN106598762B/zh
Publication of CN106598762A publication Critical patent/CN106598762A/zh
Application granted granted Critical
Publication of CN106598762B publication Critical patent/CN106598762B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种消息同步方法,该方法包括如下步骤:步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;步骤二,从节点接收主节点发来的同步消息请求,并存储消息;步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中,通过本发明,实现了分布式消息中间件的高可靠的消息同步的目的。

Description

一种消息同步方法
技术领域
本发明涉及消息处理技术领域,特别是涉及一种高可靠的消息同步方法。
背景技术
在分布式***中,为了保证***高可用,常常需要在不同物理位置的机器中保存一份数据的多个副本。为保证数据的一致性,可以采用多种复制技术。数据复制有同步复制、异步复制和半同步复制等多种技术,为了追求一致性和性能的平衡,常常会采用半同步复制方案。
在数据库***中目前有两种半同步复制的方案,第一种半同步复制方案如下:先在主节点写重做日志,然后将事务提交到主节点,之后触发等待直到从节点将主节点的重做日志写入磁盘但不要求事务在从节点完全的执行;第二种半同步复制方案如下:先在主节点写重做日志,复制重做日志到从节点,主节点等待从节点反馈接收到重做日志的ack(应答信号)之后,再提交事务并且返回commit OK(确认信号)结果给客户端。
第一种半同步复制方案的主要问题是:当主节点等待从节点回应超时,会直接向客户端返回成功。如果主节点的重做日志并没有同步到从节点,这时主节点崩溃,从节点会丢失最后一个事务的内容;第二种半同步复制方案很好的解决了第一种方案的问题,如果主节点等待从节点反馈接收到重做日志的ack超时之后,主节点上面的事务不会提交,会进行回滚操作。
Kafka是当前比较出色的一款高吞吐量的分布式发布订阅消息***,其数据复制原理就采用的上述第一种半同步复制方案,为提高性能,Kafka的从节点接收到数据后就立马向主节点发送ack,而非等到持久化到磁盘上。Kafka同样存在主从同步失败后主挂掉的数据丢失问题,由于Kafka的消息存储***不同于一般的数据库***,如果采用第二种半同步复制方案,做数据回滚操作时需要阻塞其他线程的写操作,代价很高。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种消息同步方法,以实现分布式消息中间件的高可靠的消息同步的目的。
为达上述及其它目的,本发明提出一种消息同步方法,包括如下步骤:
步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;
步骤二,从节点接收主节点发来的同步消息请求,并存储消息;
步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中。
进一步地,步骤一进一步包括:
主节点接收客户端的消息写入请求生成WAL日志文件,并持久化到磁盘;
主节点上通过WAL日志文件生成消息存储文件和消息索引文件;
主节点同步WAL日志到所有的从节点。
进一步地,步骤三进一步包括:
步骤S1,若所有从节点的消息都同步成功,则更新主从一致的检查点信息并返回客户端消息发送成功;
步骤S2,若消息同步超时,则提取消息标识和消息内容发送到该控制节点;
步骤S3,若消息标识和消息发送给该控制节点成功,则返回客户端消息发送成功,否则进入步骤S4;
步骤S4,返回客户端Pendding状态和消息标识信息;
步骤S5,该客户端通过该控制节点判断主节点是否故障;
步骤S6,若判断结果为主节点故障,则在该控制节点上获取主节点故障时刻的主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已同步成功,准备发送下一条消息,否则说明消息同步失败且新的主节点上无此消息,尝试重新发送;
步骤S7,若判断结果为主节点没有故障,则在主broker上查询主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已经同步成功,准备发送下一条消息,否则重复本次操作直到确定消息同步成功。
为达到上述目的,本发明还提供一种消息同步方法,包括如下步骤:
步骤一,主节点的消息处理线程接收客户端的消息写入请求,于存储单元写入消息的WAL日志,生成批量同步请求至批量同步请求队列,并阻塞触发等待;
步骤二,主节点接收从节点定时发来的心跳信息,解析出其中包含的已经同步到从节点的WAL的最大偏移量信息;
步骤三,于本地WAL日志中读取从节点心跳中该偏移量之后的数据复制到相应的从节点;
步骤四,主节点将多个从节点发来心跳中的偏移量信息的最小值作为主从一致的检查点信息,持久化到磁盘上,并定时同步到所有从节点;
步骤五,主节点于批量同步请求队列中取出批量同步请求;
步骤六,若当前批量同步请求中的偏移量小于主从一致的检查点,则于批量同步队列中删除该批量同步请求,并唤醒对应的消息处理线程向客户端返回消息写入成功。
进一步地,于步骤六之后,还包括如下步骤:
判断消息同步是否超时,如果超时则根据超时处理方式进行处理;否则,主节点继续等待从节点定时发来的心跳信息,返回步骤二,直到消息同步成功或者同步超时。
进一步地,步骤一进一步包括:
主节点的消息处理线程接收客户端的消息写入请求,在缓存中写入消息的WAL日志,并生成批量持久化请求给异步数据持久化线程,并阻塞触发等待;
该异步数据持久化线程将消息的WAL日志批量持久化到磁盘上,并唤醒持久化成功的消息对应的消息处理线程;
主节点上的消息处理线程继续生成批量同步请求发给批量同步请求队列,并阻塞触发等待。
进一步地,该方法还包括如下步骤:
步骤S31,利用控制节点定时获取主从一致的检查点信息,删除所有缓存的偏移量小于检查点信息的消息及其消息标识;
步骤S32,控制节点检测主节点是否故障,如果没有故障则返回步骤S31,否则进入步骤S33;
步骤S33,控制节点在所有从节点中选出新的主节点,但先不改变它的角色;
步骤S34,控制节点将消息标识中偏移量大于新的主节点的WAL日志最大偏移量的所有消息按照顺序写入新主节点的WAL日志;
步骤S35,修改新主节点的角色为主节点,并将切换时刻的新主节点的WAL日志的最大偏移量作为主从一致的检查点信息;
步骤S36,故障节点恢复后,根据检查点信息回滚老主节点上的多余的消息。
与现有技术相比,本发明一种消息同步方法及***于主broker上写入消息成功后,通过异步线程将消息同步到从broker上,于所有从broker消息同步成功后更新主从一致的检查点信息并返回消息发送成功,而于消息同步超时,提取消息标识和消息内容发送到控制节点,若消息标识和消息发送给控制节点成功,则返回客户端消息发送成功,否则返回客户端Pendding状态和消息标识信息,由客户端通过控制节点判断主broker是否故障,根据判断结果相应处理,实现了消息中间件的高可靠的消息同步的目的。
附图说明
图1为本发明第一实施例之一种消息同步方法的步骤流程图;
图2为本发明第一实施例中步骤103的细部流程图;
图3为本发明第二实施例之一种消息同步方法的步骤流程图;
图4为本发明具体实施例中防止消息丢失的步骤流程图;
图5为本发明第三实施例一种消息同步***的***架构图;
图6为本发明具体实施例中主broker的结构示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
图1为本发明第一实施例之一种消息同步方法的步骤流程图。如图1所示,本发明一种消息同步方法,包括如下步骤:
步骤101,主broker(主节点)接收消息生产者的消息写入请求,存储消息,并同步消息到从broker(从节点)。在本发明中,broker指的是消息服务器,提供消息生产、消费,主从同步、数据刷盘等核心功能,可以横向扩展、在线扩容以提高集群性能。具体地,步骤101进一步包括:
步骤S11,主broker接收消息生产者的消息写入请求生成WAL日志文件,并持久化到磁盘;
步骤S12,主broker上的异步线程通过WAL日志文件生成消息存储文件和消息索引文件;
步骤S13,主broker同步WAL日志到所有的从broker。
在本发明中,主broker可以接收多个消息生产者同时发送的消息写入请求,从broker不可以接收生产者的写入消息请求。
步骤102,从broker接收主broker发来的同步消息请求,存储消息。
在本发明中,broker可以分组多个组,一个组内可以有一个主broker,多个从broker,同一个组内的broker上面存储的消息是完全一致的。具体地,所有从broker的异步线程通过同步过来的WAL日志生成消息存储文件和消息索引文件。
这里需说明的是,为提升性能,WAL日志同步到从broker时仅写入从broker缓存,不需要持久化到磁盘。从broker上面的WAL日志写入和消息存储文件生成由不同的线程来完成,但是将消息写入消息存储文件必须等待WAL日志中对应的二进制消息持久化到磁盘才能进行。
步骤103,利用控制节点缓存同步超时的消息和消息标识,在主broker故障后,将相应的超时消息按照顺序更新到新的主broker中。在一个组内,控制节点可以多个,一主多从,控制节点责管理组内broker数据的一致性以及组内broker故障后的切换操作。
具体地,如图2所示,步骤103进一步包括:
步骤S1,若所有从broker的消息都同步成功,则更新主从一致的检查点信息并返回客户端消息发送成功,否则进入步骤S2;
具体地,主从一致的检查点指是WAL日志中的某个偏移量信息,它表示这个偏移量之前的WAL日志数据在同一个broker组中是一致的,所有只有当主broker确定消息同步到所有从broker了以后才可以更新这个检查点信息。
步骤S2,若消息同步超时,提取消息标识(包括消息所在的broker信息、消息在WAL日志中存储的偏移量和WAL日志存储的二进制消息信息等)和消息内容发送到控制节点。具体地说,消息同步超时一般发生在主从之间网络不稳定或当前负载较高的场景,因为超时数据一般不会太多,所以将超时的消息缓存到控制节点,当主broker故障后,再从控制节点将超时的消息同步到从broker,这样可以避免主broker故障后的消息丢失问题。
步骤S3,判断消息标识和消息发送给控制节点是否成功,若消息标识和消息发送给控制节点成功,则返回客户端(即消息生产者)消息发送成功,否则进入步骤S4;
步骤S4,返回客户端Pendding(待处理)状态和消息标识信息;
步骤S5,客户端通过控制节点判断主broker是否故障;
步骤S6,若判断结果为主broker故障,则在控制节点上获取主broker故障时刻主从一致的检查点信息。如果返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已经同步成功,准备发送下一条消息,否则说明消息同步失败且新主上无此消息,尝试重新发送;
步骤S7,若判断结果为主broker没有故障,客户端休眠一段时间后在主broker上查询主从一致的检查点信息。如果返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已经同步成功,准备发送下一条消息,否则重复本次操作直到确定消息同步成功。
具体地,Pendding状态表示消息发送到主broker成功,但是不一定复制到了从节点,当前消息是否发送成功是一个不确定的状态。如果主broker不发生故障,则对应的消息迟早会复制到从broker,所以消息一定会发送成功,只是我们需要等待,确定消息已经写入了从节点;反之如果主broker发生故障,控制节点会进行主备切换操作,并选出新主broker,根据新主broker中是否有该消息来判断消息是否发送成功。
特别地,本发明不考虑客户端发送消息超时又得不到任何返回值的情况,客户端通过建立一个长连接向主broker发送消息,且将超时时间设置为一个很大的值。除非客户端或者broker故障,客户端发送消息时一定会得到一个返回值。
图3为本发明第二实施例之一种消息同步方法的步骤流程图。如图2所示,本发明一种消息同步方法,包括如下步骤:
步骤301,主broker的消息处理线程接收客户端的消息写入请求,在缓存中写入消息的WAL日志,并生成批量持久化请求给异步数据持久化线程,并阻塞触发等待;
步骤302,异步数据持久化线程将消息的WAL日志批量持久化到磁盘上,并唤醒持久化成功的消息对应的消息处理线程;
步骤303,主broke上的消息处理线程继续生成批量同步请求(包含消息在本地WAL日志中存储的偏移量信息)发给WAL日志同步单元中的批量同步请求队列,并阻塞触发等待;
步骤304,主broker上的WAL日志同步单元接收从broker定时发来的心跳信息,解析出其中包含的已经同步到从broker的WAL的最大偏移量信息;
步骤305,主broker上的WAL日志同步单元在本地WAL日志中读取从broker心跳中该偏移量之后的数据复制到相应的从broker;
步骤306,主broker的主从一致的检查点更新单元将多个从节点发来心跳中的偏移量信息的最小值作为主从一致的检查点信息,持久化到磁盘上,并定时同步到所有从broker;
步骤307,主broker上的WAL日志同步单元在批量同步请求队列中取出批量同步请求;
步骤308,如果当前批量同步请求中的偏移量小于主从一致的检查点,则在批量同步队列中删除该批量同步请求,并唤醒对应的消息处理线程向客户端返回消息写入成功,否则进入下一步;
步骤309,判断消息同步是否超时,如果超时则根据第一实施例的超时处理方式进行处理;否则,主broker上的WAL日志同步单元继续等待从broker定时发来的心跳信息,按照上述步骤重复处理,直到消息同步成功或者同步超时。
较佳地,本发明之消息同步方法还包括在消息同步过程中防止消息丢失的处理步骤。如图4所示,在消息同步过程中防止消息丢失的处理步骤如下:
步骤S31,利用控制节点定时获取主从一致的检查点信息,删除所有缓存的偏移量小于检查点信息的消息及其消息标识;
步骤S32,控制节点检测主broker是否故障,如果没有故障则返回步骤S31,否则进入步骤S33;
步骤S33,控制节点在所有从broker中选出新的主broker,但先不改变它的角色;
步骤S34,控制节点将消息标识中偏移量大于新的主broker的WAL日志最大偏移量的所有消息按照顺序写入新主broker的WAL日志;
步骤S35,修改新主broker的角色为主broker,并将切换时刻的新主broker的WAL日志的最大偏移量作为主从一致的检查点信息;
步骤S36,故障broker恢复后,根据上述的检查点信息回滚老主broker上的多余的消息。
图5为本发明第三实施例一种消息同步***的***架构图。如图5所示,本发明一种消息同步***,包括:消息生产者50、主broker51、1个或多个从broker52以及控制节点53。
其中,消息生产者50,用于负责生产消息,并发送消息到主broker,在本发明具体实施例中,消息生产者50为一客户端。
主broker51,用于接收消息生产者50发来的消息写入请求,存储消息,并同步消息到从broker52,具体地,broker指的是消息服务器,提供消息生产、消费,主从同步、数据刷盘等核心功能,可以横向扩展、在线扩容以提高集群性能;
从broker52,用于接收主broker发来的同步消息请求,并存储消息,具体地,broker可以分组多个组,一个组内可以有一个主broker,多个从broker,同一个组内的broker上面存储的消息是完全一致的。
控制节点53,用于缓存同步超时的消息和消息标识,在主broker故障后,将相应的超时消息按照顺序更新到新的主broker中。具体地,在一个组内,控制节点可以有多个,一主多从,控制节点负责管理组内broker数据的一致性以及组内broker故障后的切换操作。
图6为本发明具体实施例中主broker的结构示意图。如图6所示,主broker包括WAL日志生成单元510、消息存储单元511、WAL日志同步单元512和主从一致的检查点更新单元513。
WAL日志生成单元510,用于根据消息生产者50发来的消息在WAL日志文件中顺序存储经过处理的二进制消息,并记录二进制消息在WAL日志文件中的偏移量信息;
消息存储单元511,用于根据WAL日志文件生成消息存储文件和消息索引文件;
WAL日志同步单元512,用于同步WAL日志文件的增量变化信息到所有从broker上;
主从一致的检查点更新单元513,用于定时接收所有从broker的心跳信息,提取其中从broker上面WAL日志文件的最大偏移量信息,并将多个从broker发来的偏移量的最小值作为主从一致的检查点信息,定时更新这个检查点信息,并同步到所有从broker。
具体地,WAL日志生成单元生成的WAL日志文件中保存完整的消息信息,可以根据这些信息异步生成消息存储文件和消息索引文件。主从一致的检查点存储了WAL日志文件中的某个偏移量信息,在这个偏移量之前的数据在整个broker组中是一致的。主从一致的检查点的主要作用是根据这个偏移量信息可以回滚主从切换后老主上的多余的信息。
综上所述,本发明一种消息同步方法及***于主broker上写入消息成功后,通过异步线程将消息同步到从broker上,于所有从broker消息同步成功后更新主从一致的检查点信息并返回消息发送成功,而于消息同步超时,提取消息标识和消息内容发送到控制节点,若消息标识和消息发送给控制节点成功,则返回客户端消息发送成功,否则返回客户端Pendding状态和消息标识信息,由客户端通过控制节点判断主broker是否故障,根据判断结果相应处理,实现了消息中间件的高可靠的消息同步的目的。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。

Claims (5)

1.一种消息同步方法,包括如下步骤:
步骤一,主节点接收客户端的消息写入请求,存储消息,并同步消息到从节点;
步骤二,从节点接收主节点发来的同步消息请求,并存储消息;
步骤三,利用控制节点缓存同步超时的消息和消息标识,在主节点故障后,将相应的超时消息更新到新的主节点中;步骤三进一步包括:
步骤S1,若所有从节点的消息都同步成功,则更新主从一致的检查点信息并返回客户端消息发送成功;
步骤S2,若消息同步超时,则提取消息标识和消息内容发送到该控制节点;
步骤S3,若消息标识和消息发送给该控制节点成功,则返回客户端消息发送成功,否则进入步骤S4;
步骤S4,返回客户端Pendding状态和消息标识信息;
步骤S5,该客户端通过该控制节点判断主节点是否故障;
步骤S6,若判断结果为主节点故障,则在该控制节点上获取主节点故障时刻的主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已同步成功,准备发送下一条消息,否则说明消息同步失败且新的主节点上无此消息,尝试重新发送;
步骤S7,若判断结果为主节点没有故障,则在主broker上查询主从一致的检查点信息,若返回的消息标识中偏移量小于检查点中的消息偏移量,则说明消息已经同步成功,准备发送下一条消息,否则重复本次操作直到确定消息同步成功。
2.如权利要求1所述的一种消息同步方法,其特征在于,步骤一进一步包括:
主节点接收客户端的消息写入请求生成WAL日志文件,并持久化到磁盘;
主节点上通过WAL日志文件生成消息存储文件和消息索引文件;
主节点同步WAL日志到所有的从节点。
3.一种消息同步方法,包括如下步骤:
步骤一,主节点的消息处理线程接收客户端的消息写入请求,于存储单元写入消息的WAL日志,生成批量同步请求至批量同步请求队列,并阻塞触发等待;
步骤二,主节点接收从节点定时发来的心跳信息,解析出其中包含的已经同步到从节点的WAL的最大偏移量信息;
步骤三,于本地WAL日志中读取从节点心跳中该偏移量之后的数据复制到相应的从节点;
步骤四,主节点将多个从节点发来心跳中的偏移量信息的最小值作为主从一致的检查点信息,持久化到磁盘上,并定时同步到所有从节点;
步骤五,主节点于批量同步请求队列中取出批量同步请求;
步骤六,若当前批量同步请求中的偏移量小于主从一致的检查点,则于批量同步队列中删除该批量同步请求,并唤醒对应的消息处理线程向客户端返回消息写入成功;
还包括在消息同步过程中防止消息丢失的处理步骤:
步骤S31,利用控制节点定时获取主从一致的检查点信息,删除所有缓存的偏移量小于检查点信息的消息及其消息标识;
步骤S32,控制节点检测主节点是否故障,如果没有故障则返回步骤S31,否则进入步骤S33;
步骤S33,控制节点在所有从节点中选出新的主节点,但先不改变它的角色;
步骤S34,控制节点将消息标识中偏移量大于新的主节点的WAL日志最大偏移量的所有消息按照顺序写入新主节点的WAL日志;
步骤S35,修改新主节点的角色为主节点,并将切换时刻的新主节点的WAL日志的最大偏移量作为主从一致的检查点信息;
步骤S36,故障节点恢复后,根据检查点信息回滚老主节点上的多余的消息。
4.如权利要求3所述的一种消息同步方法,其特征在于,于步骤六之后,还包括如下步骤:
判断消息同步是否超时,如果超时则根据超时处理方式进行处理;否则,主节点继续等待从节点定时发来的心跳信息,返回步骤二,直到消息同步成功或者同步超时。
5.如权利要求3所述的一种消息同步方法,其特征在于,步骤一进一步包括:
主节点的消息处理线程接收客户端的消息写入请求,在缓存中写入消息的WAL日志,并生成批量持久化请求给异步数据持久化线程,并阻塞触发等待;
该异步数据持久化线程将消息的WAL日志批量持久化到磁盘上,并唤醒持久化成功的消息对应的消息处理线程;
主节点上的消息处理线程继续生成批量同步请求发给批量同步请求队列,并阻塞触发等待。
CN201611241828.1A 2016-12-29 2016-12-29 一种消息同步方法 Active CN106598762B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611241828.1A CN106598762B (zh) 2016-12-29 2016-12-29 一种消息同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611241828.1A CN106598762B (zh) 2016-12-29 2016-12-29 一种消息同步方法

Publications (2)

Publication Number Publication Date
CN106598762A CN106598762A (zh) 2017-04-26
CN106598762B true CN106598762B (zh) 2020-04-17

Family

ID=58603969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611241828.1A Active CN106598762B (zh) 2016-12-29 2016-12-29 一种消息同步方法

Country Status (1)

Country Link
CN (1) CN106598762B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273228B (zh) * 2017-07-13 2020-09-04 焦点科技股份有限公司 基于星型拓扑架构的消息传输方法
CN107295106B (zh) * 2017-07-31 2020-08-14 杭州多麦电子商务股份有限公司 消息数据服务集群
CN107483604B (zh) * 2017-08-29 2020-12-15 武汉斗鱼网络科技有限公司 Nginx-RTMP动态更新DNS缓存的方法和装置
CN108023968A (zh) * 2017-12-21 2018-05-11 东软集团股份有限公司 一种会话信息同步方法、装置及设备
CN108008921B (zh) * 2017-12-26 2019-06-25 北京百度网讯科技有限公司 分布式存储环境下的复制数据的方法及服务器
CN108200157B (zh) * 2017-12-29 2020-12-25 北京奇虎科技有限公司 主节点触发回退的日志同步方法及装置
CN108228812B (zh) * 2017-12-29 2021-06-15 北京奇虎科技有限公司 自适应的主节点切换方法及装置
CN108628688B (zh) * 2018-03-30 2022-11-18 创新先进技术有限公司 一种消息处理方法、装置及设备
CN108540353B (zh) * 2018-06-14 2021-11-05 平安科技(深圳)有限公司 一种网络节点的监测方法与***
CN109165117B (zh) * 2018-06-29 2022-05-31 华为技术有限公司 数据处理的方法和***
CN110213317B (zh) * 2018-07-18 2021-10-29 腾讯科技(深圳)有限公司 消息存储的方法、装置及存储介质
CN109408203B (zh) * 2018-11-01 2019-10-18 无锡华云数据技术服务有限公司 一种队列消息一致性的实现方法、装置、计算***
CN109710421B (zh) * 2018-11-16 2020-12-08 深圳证券交易所 消息中间件的接收者异常处理方法、服务器及存储介质
CN110263093B (zh) * 2019-05-27 2021-07-23 东软集团股份有限公司 数据同步方法、装置、节点、集群及存储介质
CN112306962B (zh) * 2019-07-26 2024-02-23 杭州海康威视数字技术股份有限公司 计算机集群***中的文件拷贝方法、装置及存储介质
CN110633164B (zh) * 2019-08-09 2023-05-16 锐捷网络股份有限公司 一种面向消息的中间件故障恢复方法及装置
CN110688254B (zh) * 2019-09-06 2022-06-03 北京达佳互联信息技术有限公司 一种数据同步方法、装置、电子设备及存储介质
CN112559243B (zh) * 2019-09-25 2022-04-29 阿里巴巴集团控股有限公司 数据快照方法、装置、电子设备及计算机可读存储介质
CN111324668B (zh) * 2020-02-18 2023-11-21 中国联合网络通信集团有限公司 数据库数据同步处理方法、装置及存储介质
CN111522789A (zh) * 2020-04-20 2020-08-11 京东数字科技控股有限公司 一种主从服务器的日志复制方法、装置及日志存储***
CN112087501B (zh) * 2020-08-28 2023-10-24 北京明略昭辉科技有限公司 保持数据一致性的传输方法及***
CN115396454A (zh) * 2022-09-23 2022-11-25 重庆紫光华山智安科技有限公司 数据复制方法、装置、存储节点及可读存储介质
CN116893914A (zh) * 2023-09-11 2023-10-17 中移(苏州)软件技术有限公司 消息处理的方法、消息队列***、客户端和电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102122306A (zh) * 2011-03-28 2011-07-13 中国人民解放军国防科学技术大学 一种数据处理方法及应用该方法的分布式文件***
CN103581262A (zh) * 2012-08-06 2014-02-12 腾讯科技(深圳)有限公司 一种主备数据同步方法、装置和***
CN103870977A (zh) * 2012-12-18 2014-06-18 风网科技(北京)有限公司 移动广告平台数据同步方法及其***
CN104731912A (zh) * 2015-03-24 2015-06-24 浪潮集团有限公司 一种消息中间件mq的消息传输方法和装置
CN105208125A (zh) * 2015-09-30 2015-12-30 百度在线网络技术(北京)有限公司 消息传输方法、装置及***
CN105511805A (zh) * 2015-11-26 2016-04-20 深圳市中博科创信息技术有限公司 集群文件***的数据处理方法和装置
CN105912628A (zh) * 2016-04-07 2016-08-31 北京奇虎科技有限公司 主从数据库的同步方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102122306A (zh) * 2011-03-28 2011-07-13 中国人民解放军国防科学技术大学 一种数据处理方法及应用该方法的分布式文件***
CN103581262A (zh) * 2012-08-06 2014-02-12 腾讯科技(深圳)有限公司 一种主备数据同步方法、装置和***
CN103870977A (zh) * 2012-12-18 2014-06-18 风网科技(北京)有限公司 移动广告平台数据同步方法及其***
CN104731912A (zh) * 2015-03-24 2015-06-24 浪潮集团有限公司 一种消息中间件mq的消息传输方法和装置
CN105208125A (zh) * 2015-09-30 2015-12-30 百度在线网络技术(北京)有限公司 消息传输方法、装置及***
CN105511805A (zh) * 2015-11-26 2016-04-20 深圳市中博科创信息技术有限公司 集群文件***的数据处理方法和装置
CN105912628A (zh) * 2016-04-07 2016-08-31 北京奇虎科技有限公司 主从数据库的同步方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于分布式的远程复制***研究;叶斌等;《微处理机》;20080831(第4期);全文 *

Also Published As

Publication number Publication date
CN106598762A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
CN106598762B (zh) 一种消息同步方法
US7653668B1 (en) Fault tolerant multi-stage data replication with relaxed coherency guarantees
CA2550003C (en) Geographically distributed clusters
US8671151B2 (en) Maintaining item-to-node mapping information in a distributed system
EP2434729A2 (en) Method for providing access to data items from a distributed storage system
US20140089259A1 (en) Operation method and apparatus for data storage system
US10114848B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
CN109992628B (zh) 数据同步的方法、装置、服务器及计算机可读存储介质
EP1704480B1 (en) Cluster database with remote data mirroring
CN101809558A (zh) 远程异步数据复制***和方法
EP2976714B1 (en) Method and system for byzantine fault tolerant data replication
CN102724304A (zh) 订阅/发布***中信息仓库联邦及数据同步方法
CN109582686B (zh) 分布式元数据管理一致性保证方法、装置、***及应用
CN111198662B (zh) 一种数据存储方法、装置和计算机可读存储介质
US20230110826A1 (en) Log execution method and apparatus, computer device and storage medium
CN115794499B (zh) 一种用于分布式块存储集群间双活复制数据的方法和***
CN113282604B (zh) 基于消息队列实现的高可用时序数据库集群***
CN115617908A (zh) 一种MySQL数据同步方法、装置、数据库终端、介质及***
CN114238353A (zh) 一种分布式事务的实现方法及***
CN115658245B (zh) 一种基于分布式数据库***的事务提交***、方法及装置
CN113905054A (zh) 基于RDMA的Kudu集群数据同步方法、装置、***
CN115563221A (zh) 数据同步方法、存储***、设备及存储介质
Tang et al. Design of high availability service discovery for microservices architecture
WO2021212493A1 (zh) 数据同步方法、装置、数据存储***及计算机可读介质
CN111274258B (zh) 一种区块链数据上链方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant