CN108400881B - 基于状态机的消息引擎动态调整方法、装置及电子设备 - Google Patents
基于状态机的消息引擎动态调整方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108400881B CN108400881B CN201710069150.1A CN201710069150A CN108400881B CN 108400881 B CN108400881 B CN 108400881B CN 201710069150 A CN201710069150 A CN 201710069150A CN 108400881 B CN108400881 B CN 108400881B
- Authority
- CN
- China
- Prior art keywords
- node
- state
- replica
- replication state
- write
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/0836—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Abstract
本发明实施例提供了一种基于状态机的消息引擎动态调整方法、装置及电子设备,其中,方法包括:如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;和/或,如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。本发明实施例的方案可实现动态调整消息引擎中各副本的复制状态,灵活调整系统吞吐量与高可用、高可靠性的侧重。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于状态机的消息引擎动态调整方法、装置及电子设备。
背景技术
吞吐量以及高可用、高可靠性是分布式消息引擎架构设计中需要考虑的两个重要因素。目前业界提出的基于多副本的高可用架构解决方案很难兼顾这两个要素使其均达到最优值。Backups、Master/Slave结构通常能达到较高的系统吞吐量,但由于很难保证消息副本的强一致性,最终导致部分节点宕机时存在丢消息的可能性、致使系统故障恢复时间延长,可用性、可靠性降低。2PC、基于Paxos的解决方案以牺牲系统吞吐量为代价来保证数据的强一致性,最终达到部分节点宕机时消息不丢、快速故障恢复的能力。
以Master/Slave结构为例,其包含如下特性:
1)Slave是Master的备份,可以根据消息的重要程度设置Slave的个数,即副本数。消息写请求命中Master,读请求可命中Master或者Slave。
2)写请求命中Master之后,消息可通过同步或者异步的方式从 Master复制到Slave上;其中,同步复制状态需要保证Master和Slave 均写成功后才反馈给客户端成功;异步复制状态只需要保证Master写成功即可反馈给客户端成功。
3)异步复制状态拥有较低的写延迟、较高的系统吞吐量,但只能保证消息多副本之间的最终一致性,进而导致节点宕机时出现丢消息的可能性,如在Master宕机时仍希望消息不丢失,Slave只能以只读的方式等待Master恢复,进而延长了系统故障恢复时间,降低了系统高可用性;相反,同步复制状态会以增大消息写入延迟、降低系统吞吐量的代价来保证机器宕机时数据不丢,降低系统故障恢复时间,提升消息引擎的高可用性。
现有的技术缺点:
通常情况下,消息引擎会通过静态配置设定主节点与多副本之间的复制状态,消息引擎运行过程中不能根据副本节点间的数据差异性、副本间消息复制的延迟等因素动态调整复制状态。这种方式下,不能灵活调整系统吞吐量与高可用、高可靠性的侧重,任意节点的宕机都会打破静态配置的复制状态,并且需要人工介入才能处理恢复至原有状态。
发明内容
本申请提供了一种基于状态机的消息引擎动态调整方法、装置及电子设备,以实现动态调整消息引擎中各副本的复制状态,灵活调整系统吞吐量与高可用、高可靠性的侧重。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种基于状态机的消息引擎动态调整方法,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
第二方面,提供了另一种基于状态机的消息引擎动态调整方法,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
第三方面,提供了另一种基于状态机的消息引擎动态调整方法,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
第四方面,提供了一种基于状态机的消息引擎动态调整装置,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
异同调整模块,用于如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
同异调整模块,用于如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
第五方面,提供了另一种基于状态机的消息引擎动态调整装置,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
异同调整模块,用于如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
第六方面,提供了另一种基于状态机的消息引擎动态调整装置,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
同异调整模块,用于如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
第七方面,提供了一种电子设备,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
第八方面,提供了另一种电子设备,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
第九方面,提供了另一种电子设备,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延展时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
本发明提供的基于状态机的消息引擎动态调整方法、装置及电子设备,通过动态的调整消息引擎中,副本节点从主节点复制数据的具体复制状态,包括异步复制状态、同步复制状态,从而灵活调整消息引擎的系统吞吐量与高可用、高可靠性的侧重。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的基于状态机的消息引擎动态调整逻辑图;
图2为本发明实施例的基于状态机的消息引擎动态调整系统的结构示意图;
图3为本发明实施例一的基于状态机的消息引擎动态调整的流程示意图;
图4为本申请实施例二的基于状态机的消息引擎动态调整装置的结构示意图一;
图5为本申请实施例二的基于状态机的消息引擎动态调整装置的结构示意图二;
图6为本申请实施例三的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明改变了现有技术中,静态配置多副本节点(如Master/Slave 结构中的Slave)从主节点(如Master/Slave结构中的Master)复制数据的复制状态,其核心思想在于,在副本节点从主节点复制数据的过程中可以存在如下的复制状态,并且根据副本节点间的数据差异性、数据复制的延迟等因素,动态调整副本节点的复制状态,以使整个消息引擎系统始终处于最优的状态。
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
本实施例中,基于状态机的消息引擎动态调整方法,其核心思想是在消息引擎架构中,动态调整各副本节点从主节点复制数据的复制状态,以实现最优的数据复制状态。如图1所示,其为本发明实施例的基于状态机的消息引擎动态调整逻辑图。
首先,结合图1所示,先对异步复制状态与同步复制状态之间的状态转换进行说明,这也是本发明方案的核心思想。
前面内容已经详述了异步复制状态和同步复制状态是消息引擎中,配置副本节点从主节点复制数据的两种普遍使用的复制状态。但是这两种复制状态都同时具有优缺点。单独采用任一种复制状态都不能达到最佳的数据复制效果,在一种复制状态的效果不佳时,需要及时将副本节点的复制状态切换到另一种复制状态下。
具体地,当副本节点处于同步复制状态,所有的写数据请求必须在所有副本节点上写成功后才能反馈给客户端写成功消息,当其中部分节点因磁盘、网络等故障导致数据复制延迟时间升高时,如果仍然保持同步复制状态,将导致系统吞吐量严重下降;此时,可以将当前副本节点的同步复制状态调整为异步复制状态,从而提高系统吞吐量。当副本节点处于异步复制状态,在副本节点间写数据操作的延迟时间极小,并且各副本节点间几乎无数据差异的场景下,如果仍然保持异步复制状态,很可能导致某节点出现宕机时丢消息的可能性以及系统无法自动故障恢复,从而严重降低系统可用性。
基于这些考虑,可以动态调整副本节点的复制状态,包括:
如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
相应的,如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。
通过动态调整副本节点的复制状态,可以有效利用各类型复制状态的优 点,规避其相应缺点,从而保证整个消息引擎处于较优的状态。
这里需要说明的是,在将副本节点从异步复制状态切换到同步复制状态时,需要满足各副本节点与主节点之间数据无差异,可以在异步复制状态到同步复制状态之间增加一个过渡状态,即图1中所示的半同步复制状态,来加快各副本节点与主节点之间数据无差异的进程。当然,如果当前各副本节点通过异步复制状态就达到了副本节点与主节点之间数据无差异,那么该半同步复制状态也可省略。
在阐述完异步复制状态以及同步复制状态之间的切换后,接下来将对一个消息引擎中数据复制的完整工作流程进行说明,以体现动态调整副本节点复制状态的内容和意义。
如图1所示,消息引擎从初始状态进入工作状态,消息引擎上的各节点陆续启动,此时消息引擎会先从初始状态转换到单主状态。所谓单主状态指当前消息引擎中有且仅有第一个节点启动后,以该节点作为主节点执行写请求的命令的状态。当其他节点陆续启动后,消息引擎会从单主状态切换到异步复制状态,即写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息。在消息引擎进入到异步复制状态后,就可以根据当前副本节点与主节点之间的数据差异性,主节点、副本节点的写数据操作的延迟时间,动态调整各副本节点的复制状态,具体内容已在前述内容中说明。
最后,当消息引擎从初始状态进入工作状态后,各节点均有可能出现宕机的情况。结合图1所示,根据不同类型的节点在不同工作状态下出现宕机的问题,本实施例给出了如下解决办法:
1)在消息引擎处于异步复制状态、半同步复制状态以及单主状态中的任一状态下,如果主节点发生宕机,则执行报警操作。
2)在消息引擎处于异步复制状态下,如果所有副本节点发生宕机,则将消息引擎从异步复制状态调整为单主状态。
3)在消息引擎处于半同步复制状态下,如果所有副本节点发生宕机,则将消息引擎从半同步复制状态调整为单主状态。
4)在消息引擎处于同步复制状态下,如果主节点、副本节点中任一节点发生宕机,则从剩余未发生宕机的节点中选择一个节点作为主节点,并将消息引擎从同步复制状态调整为单主状态。
基于图1所示的基于状态机的消息引擎动态调整的逻辑示意图,本发明实施例提供了一种基于状态机的消息引擎动态调整系统,用以动态调整消息引擎中各副本节点从主几点复制数据的复制状态,从而实现灵活调整系统吞吐量与高可用、高可靠性的侧重。如图2所示,该系统包括:消息引擎210和基于状态机的消息引擎动态调整装置220。
消息引擎210采用分布式架构,其可以是基于多副本的Master/Slave 结构,且该消息引擎210中包括一个主节点(如Master)和多个副本节点(如Slave),且副本节点从主节点复制数据的过程可采用如下的复制状态:同步复制状态和异步复制状态。关于这两种复制状态的内容已在前述内容中说明。
基于状态机的消息引擎动态调整装置220包括:异步调整模块、同步调整模块、单主调整模块、初始调整模块、宕机报警模块和宕机调整模块。这些模块均可以独立的对消息引擎210的工作运行状态进行监控,从而控制消息引擎210进入到相应模块指定的工作状态。
结合图1所示,消息引擎210从初始状态进入到工作状态后,各节点陆续启动,初始调整模块监测到当前消息引擎中有且仅有第一个节点启动后,则以该节点作为主节点执行写请求的命令,使得消息引擎210 从初始状态进入单主状态。
在单主状态下,当单主调整模块监测到除第一个节点的其他节点也陆续启动后,将消息引擎从单主状态调整到异步复制状态。
在各副本节点处于异步复制状态时,如果各副本节点与主节点之间的数据差异小于第一阈值,则异同调整模块会将各副本节点的复制状态从异步复制状态调整为同步复制状态。
可选的,异同调整模块可先将各副本节点的复制状态从异步复制状态切换为半同步复制状态,待主节点的写请求的维持状态解除后,再将副本节点的复制状态从半同步复制状态切换为同步复制状态。
在各副本节点处于同步复制状态时,如果各副本节点、所述主节点的写操作延展时间大于第二阈值,则同异调整模块将各副本节点的复制状态从同步复制状态再次调整为异步复制状态。
根据消息引擎210在任一工作状态下所满足的状态条件,可将其当前的工作状态灵活的切换为与当前状态条件相适应的工作状态下。
另外,在消息引擎210处于上述各状态期间,主节点和副本节点可能会出现宕机问题。
如果在消息引擎210处于异步复制状态、半同步复制状态以及单主状态中的任一状态时,宕机报警模块监测到主节点发生宕机,则执行报警操作。
如果在消息引擎210处于异步复制状态时,宕机调整模块监测到所有副本节点发生宕机,则将消息引擎210从异步复制状态调整为单主状态。
如果在消息引擎210处于半同步复制状态时,宕机调整模块监测到所有副本节点发生宕机,则将消息引擎210从半同步复制状态调整为单主状态。
如果在消息引擎210处于同步复制状态时,宕机调整模块监测到主节点、副本节点中任一节点发生宕机,则从剩余未发生宕机的节点中选择一个节点作为主节点,并将消息引擎从同步复制状态调整为单主状态。
下面通过多个实施例来进一步说明本发明的技术方案。
实施例一
如图3所示,其为本发明实施例一的基于状态机的消息引擎动态调整方法的流程示意图,可通过图2中所示的基于状态机的消息引擎动态调整装置执行完成。其中,所述消息引擎包括一个主节点和多个副本节点,且副本节点从主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息。
如图3所示,该基于状态机的消息引擎动态调整方法包括:
310,如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
和/或,
320,如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为所述异步复制状态。
步骤310和步骤320可以单独执行,也可以顺序执行,且具体执行顺序是基于当前消息引擎中各副本节点所处的复制状态,以及相应复制状态下各节点(包括主节点、副本节点)的状态条件来决定的。
当各副本节点处于异步复制状态时,意味着当前消息引擎具有较高的系统吞吐量。但异步复制本身也会隐含弊端,即在副本节点出现宕机时丢失消息的可能性增大并且系统无法自动实现固执恢复,从而严重降低系统可用性。因此,当各副本节点处于异步复制状态时,如果各副本节点与主节点之间的数据差异小于第一阈值(如两条写数据的数据量),则应尽可能采用同步复制的方法,将各副本节点的复制状态从异步复制状态调整为同步复制状态,以在不明显降低系统吞吐量的情况下,避免出现副本节点宕机而丢消息的可能,从而提高消息引擎的可用性及可靠性。
当各副本节点处于同步复制状态时,意味着当前消息引擎具有较高的可用性即可靠性。但同步复制本身也会隐含弊端,即部分节点因磁盘、网络等故障导致数据复制延迟时间升高时,如果仍然保持同步复制状态,将导致系统吞吐量严重下降。因此,当各副本节点处于同步复制状态时,各副本节点、主节点的写操作延展时间大于第二阈值(给用户感觉明显卡顿所对应的时间值,可以是经验值),则应尽可能采用异步复制的方法,将各副本节点的复制状态从同步复制状态调整为异步复制状态,以在消息引擎处于相对较高的可用性及可靠性的前提下,提高系统吞吐量。
总而言之,本方案就是根据各节点所满足的工作状态条件,灵活的调整副本节点从主节点复制数据的复制状态,以兼顾消息引擎对外所表现出的高系统吞吐量和高可用、高可靠性。
进一步地,副本节点从主节点复制数据的过程还可存在如下的复制状态:
半同步复制状态:当前命中主节点的写请求被维持,各副本节点从主节点复制写数据,并在各副本节点与主节点上的写数据无差异后,解除主节点的写请求的维持状态;
相对应的,将各副本节点的复制状态从异步复制状态调整为同步复制状态可包括:将各副本节点的复制状态从异步复制状态切换为半同步复制状态,待主节点的写请求的维持状态解除后,将副本节点的复制状态从半同步复制状态切换为同步复制状态。
具体地,将各副本节点的复制状态从异步复制状态调整为同步复制状态应满足严格的数据无差异条件,即在异步复制状态下,各副本节点的数据与主节点的数据无差异的情况下,才可以切换副本节点的复制状态为同步复制状态。当然,如果异步复制状态下,各副本节点与主节点之间已经自动满足了数据无差异性,那么可以直接进行复制状态的切换。大多数情况下,当需要将消息引擎从异步复制状态切换为同步复制状态,且各副本节点与主节点之间又不满足数据无差异性时,就需要额外通过加速手段来加快实现这种数据无差异性。
本实施例为此提供了一种半同步复制状态,即在需要将消息引擎从异步复制状态调整为同步状态时,先控制消息引擎进入半同步复制状态。在半同步复制状态中,命中主节点的写请求被维持(hold),即如果后续再有写请求时需要等待,主节点暂时不再响应这些写请求的命令,只有当前命中主节点的写请求的维持被解除后,才允许后续写请求可以命中主节点。而在命中主节点的写请求被维持的期间,各副本节点仍可以采取异步复制的方法,从主节点复制写数据,直到各副本节点与主节点上的写数据无差异后,当前命中主节点的写请求的维持状态才可被解除。维持状态解除后,可将副本节点的复制状态从半同步复制状态切换为同步复制状态。
进一步地,为了体现方案的完整性,使消息引擎从上电工作后,每个阶段都可对应一个具体的工作状态,本实施例中,将消息引擎的工作状态分为单主状态以及上述副本节点对应的复制状态(同步复制状态、异步复制状态以及半同步复制状态。
其中,单主状态是指当前消息引擎中有且仅有第一个节点启动后,以该节点作为主节点执行写请求的命令。
相应的,在消息引擎处于刚上电启动的初始状态下,如果当前消息引擎中有节点启动,则将消息引擎从初始状态调整到单主状态。在消息引擎处于单主状态下,如果存在除第一个节点的其他节点启动后,可将消息引擎从单主状态调整到异步复制状态。理论上消息引擎中各节点是陆续启动的,单主状态应该是从第一个节点启动后开始计算,而在单主状态下,当第二个节点的启动后,由于此时第二个节点只是启动,还未工作(从主节点复制数据),因此仍可视为当前状态为单主状态。
在消息引擎处于单主状态下,如果存在除第一个节点的其他节点启动后,将消息引擎从单主状态调整到异步复制状态。当消息引擎进入到异步复制状态后,就可以根据步骤S310、步骤S320的内容来动态调整消息引擎的工作状态,使其达到系统吞吐量、可用高及可靠性均较优的工作状态。
这里需要说明的是,当消息引擎中的节点陆续启动后,调整消息引擎的状态首先是从单主状态调整到异步复制状态是有原因的。因为各副本节点陆续启动工作,其从主节点复制数据的操作也是不同步的,与主节点之间的数据差异程度是不同的,因此为了维和消息引擎的稳定性,先使其进入异步复制状态。
另外,当消息引擎从初始状态进入工作状态后,各节点均有可能出现宕机的情况。根据不同类型的节点在不同工作状态下出现宕机的问题,本实施例给出了相应的解决办法,即在上述的基于状态机的消息引擎动态调整方法中,还可以进一步包括如下处理步骤:
1)在消息引擎处于异步复制状态、半同步复制状态以及单主状态中的任一状态下,如果主节点发生宕机,则执行报警操作。
具体地,本步骤中限定的这三种状态中,由于主节点和副本节点之间的数据存在差异性,或者单主状态中仅有主节点工作,因此当出现主节点宕机时,为了保证副本节点复制数据不丢失,或者使消息引擎还能够向外部提供服务,需要主节点能及时恢复工作状态,如可通过执行报警操作来通知运维人员对主节点进行及时恢复。
2)在消息引擎处于异步复制状态下,如果所有副本节点发生宕机,则将消息引擎从异步复制状态调整为单主状态。
在异步复制状态下,所有副本节点发生宕机,并不会影响主节点的读写操作,因此可将消息引擎调整为单主状态,以等待其他节点陆续被恢复,恢复后可再控制消息引擎进入到异步复制状态。
3)在消息引擎处于半同步复制状态下,如果所有副本节点发生宕机,则将消息引擎从半同步复制状态调整为单主状态。
当半同步复制状态下,所有副本节点发生宕机时,可将消息引擎再切换回单主状态,以等待各副本节点陆续恢复启动。
4)在消息引擎处于同步复制状态下,如果主节点、副本节点中任一节点发生宕机,则从剩余未发生宕机的节点中选择一个节点作为主节点,并将消息引擎从同步复制状态调整为单主状态。
实际上,在从同步复制状态调整为单主状态后,除选择出的主节点外,还可能存在其他未宕机的副本节点,因此,消息引擎的状态会马上从单主状态切换到异步复制状态。
需要说明的是,在基于状态机的消息引擎动态调整所对应的各个状态中,可通过维护一个全局唯一的SequenceID来保证多副本节点对外提供视图的一致性。当状态机发生变化时,全局唯一的SequenceID会自增一并推送给所有的副本节点,此时若主节点仍以未自增的SequenceID尝试向各副本节点提供复制数据,副本节点会以该SequenceID低于自身SequenceID的理由拒绝写入,直至主节点更新SequenceID后重新尝试推送数据。全局唯一SequenceID能有效保证弱网络环境下多副本节点上的数据的严格一致性。
另外,在本实施例示出的一种具体应用场景中,可对图3所示的方法步骤进行简化,即在一次基于状态机的消息引擎动态调整过程中,可以只单独执行将各副本节点的复制状态从异步复制状态调整为同步复制状态的方法步骤。
基于上述具体应用场景,本实施例提供了另一种基于状态机的消息引擎动态调整方法,其中,所述消息引擎包括一个主节点和多个副本节点,且副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
进一步地,副本节点从主节点复制数据的过程还存在如下的复制状态:
半同步复制状态:当前命中所述主节点的写请求被维持,各副本节点从主节点复制写数据,并在各副本节点与主节点上的写数据无差异后,解除主节点的写请求的维持状态;
在此基础上,将各副本节点的复制状态从异步复制状态调整为同步复制状态可包括:
将各副本节点的复制状态从异步复制状态切换为半同步复制状态,待主节点的写请求的维持状态解除后,将副本节点的复制状态从半同步复制状态切换为同步复制状态。
本方法的具体步骤原理可参见前述相应内容,在此不做赘述。
同理,在本实施例示出的另一种具体应用场景中,可对图3所示的方法步骤进行简化,即在一次基于状态机的消息引擎动态调整过程中,可以只单独执行将各副本节点的复制状态从同步复制状态调整为异步复制状态的方法步骤。
基于上述另一种具体应用场景,本实施例提供了另一种基于状态机的消息引擎动态调整方法,其中,所述消息引擎包括一个主节点和多个副本节点,且副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。
本方法的具体步骤原理可参见前述相应内容,在此不做赘述。
在执行上述两种特殊应用场景下的基于状态机的消息引擎动态调整方法过程中,仍可以借鉴和执行图3所示方法步骤中附加的步骤内容。
本实施例提供的基于状态机的消息引擎动态调整方法,通过动态的调整消息引擎中,副本节点从主节点复制数据的具体复制状态,包括异步复制状态、同步复制状态,从而灵活调整消息引擎的系统吞吐量与高可用、高可靠性的侧重。本方案最大的优势在于能根据副本节点当前状态、数据差异以及数据复制延迟等因素动态调整各副本节点的复制状态,从而赋予消息引擎以不同的吞吐量和高可用、高可用性,使其适配当前网络、硬件环境,始终运行在最优状态。
实施例二
如图4所示,为本发明实施例二的基于状态机的消息引擎动态调整装置的结构示意图,所述消息引擎包括一个主节点和多个副本节点,且副本节点从主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
如图4所示,该基于状态机的消息引擎动态调整装置包括:
异同调整模块410,用于如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
和/或,
同异调整模块420,用于如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。
进一步地,上述副本节点从主节点复制数据的过程还可存在如下的复制状态:
半同步复制状态:当前命中主节点的写请求被维持,各副本节点从主节点复制写数据,并在各副本节点与主节点上的写数据无差异后,解除主节点的写请求的维持状态;
相应的,上述异同调整模块410具体可用于,
将各副本节点的复制状态从异步复制状态切换为半同步复制状态,待主节点的写请求的维持状态解除后,将副本节点的复制状态从半同步复制状态切换为同步复制状态。
进一步地,消息引擎可包括单主状态以及上述副本节点对应的复制状态:
所述单主状态:当前消息引擎中有且仅有第一个节点启动后,以该节点作为主节点执行写请求的命令;
相应的,如图5所示,在图4所示装置的基础上,还可包括:
初始调整模块430,用于在初始状态下,如果当前消息引擎中有节点启动,则将消息引擎从初始状态调整到单主状态;
单主调整模块440,用于在消息引擎处于单主状态下,如果存在除第一个节点的其他节点启动后,将消息引擎从单主状态调整到异步复制状态。
进一步地,在图5所示装置中还可包括:
宕机报警模块450,用于在消息引擎处于异步复制状态、半同步复制状态以及单主状态中的任一状态下,如果主节点发生宕机,则执行报警操作。
进一步地,在图5所示装置中还可包括:
宕机调整模块460,用于在消息引擎处于异步复制状态下,如果所有副本节点发生宕机,则将消息引擎从异步复制状态调整为单主状态。
进一步的或可替代的,宕机调整模块460,可用于在消息引擎处于半同步复制状态下,如果所有副本节点发生宕机,则将消息引擎从半同步复制状态调整为单主状态。
进一步的或可替代的,宕机调整模块460,可用于在消息引擎处于同步复制状态下,如果主节点、副本节点中任一节点发生宕机,则从剩余未发生宕机的节点中选择一个节点作为主节点,并将消息引擎从同步复制状态调整为单主状态。
图4、图5所示装置结构可用于执行实施例1所示的方法步骤。
另外,在本实施例示出的一种具体应用场景中,可对图4或图5所示的装置结构进行简化,即在一个基于状态机的消息引擎动态调整装置中,可以只单独包括异同调整模块410,用于执行将各副本节点的复制状态从异步复制状态调整为同步复制状态的方法步骤。
基于上述具体应用场景,本实施例提供了另一种基于状态机的消息引擎动态调整装置,其中,所述消息引擎包括一个主节点和多个副本节点,且副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
所示装置包括:异同调整模块410,用于如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
进一步地,副本节点从主节点复制数据的过程还存在如下的复制状态:
半同步复制状态:当前命中所述主节点的写请求被维持,各副本节点从主节点复制写数据,并在各副本节点与主节点上的写数据无差异后,解除主节点的写请求的维持状态;
在此基础上,异同调整模块410可具体用于,
将各副本节点的复制状态从异步复制状态切换为半同步复制状态,待主节点的写请求的维持状态解除后,将副本节点的复制状态从半同步复制状态切换为同步复制状态。
本装置可用于执行实施例一中,只单独执行将各副本节点的复制状态从异步复制状态调整为同步复制状态的方法步骤。
同理,在本实施例示出的另一种具体应用场景中,可对图4或图5 所示的装置结构进行简化,即在一次基于状态机的消息引擎动态调整过程中,可以只单独包括同异调整模块420,用于执行将各副本节点的复制状态从同步复制状态调整为异步复制状态的方法步骤。
基于上述另一种具体应用场景,本实施例提供了另一种基于状态机的消息引擎动态调整装置,其中,所述消息引擎包括一个主节点和多个副本节点,且副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:同异调整模块420,用于如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。
本装置可用于执行实施例一中,只单独执行将各副本节点的复制状态从同步复制状态调整为异步复制状态的方法步骤。
进一步地,在上述另种简化的装置中,还可进一步地包括图4或图5 中所示的其他功能模块,用于执行图3所示方法步骤中附加的步骤内容。
本实施例提供的基于状态机的消息引擎动态调整装置,通过动态的调整消息引擎中,副本节点从主节点复制数据的具体复制状态,包括异步复制状态、同步复制状态,从而灵活调整消息引擎的系统吞吐量与高可用、高可靠性的侧重。本方案最大的优势在于能根据副本节点当前状态、数据差异以及数据复制延迟等因素动态调整各副本节点的复制状态,从而赋予消息引擎以不同的吞吐量和高可用、高可用性,使其适配当前网络、硬件环境,始终运行在最优状态。
实施例三
前面描述了基于状态机的消息引擎动态调整装置的内部功能和结构,该装置可实现为一种电子设备,如图6所示,其为本发明实施例三的电子设备的结构示意图,具体包括:存储器610和处理器620。
存储器610,用于存储基于状态机的消息引擎动态调整程序。所述消息引擎包括一个主节点和多个副本节点,且副本节点从主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各副本节点从主节点复制写数据,并在主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
除上述程序之外,存储器610还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器610可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器620,耦合至存储器610,用于执行存储器610中的程序,以用于:
如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
和/或,
如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为所述异步复制状态。
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
进一步,如图6所示,电子设备还可以包括:通信组件630、电源组件640、音频组件650、显示器660等其它组件。图6中仅示意性给出部分组件,并不意味着电子设备只包括图6所示组件。
通信组件630被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G 或3G,或它们的组合。在一个示例性实施例中,通信组件630经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件630还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件640,为电子设备的各种组件提供电力。电源组件640可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件650被配置为输出和/或输入音频信号。例如,音频组件650 包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器610或经由通信组件630发送。在一些实施例中,音频组件650还包括一个扬声器,用于输出音频信号。
显示器660包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。
另外,前面描述了基于状态机的消息引擎动态调整装置的内部功能和结构,该装置可实现为另一种电子设备,该电子设备与图6中的电子设备的区别仅在于处理器620,耦合至存储器610,用于执行存储器610 中的程序,以用于:
如果各副本节点处于异步复制状态,且各副本节点与主节点之间的数据差异小于第一阈值,则将各副本节点的复制状态从异步复制状态调整为同步复制状态;
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
同理地,前面描述了基于状态机的消息引擎动态调整装置的内部功能和结构,该装置可实现为另一种电子设备,该电子设备与图6中的电子设备的区别仅在于处理器620,耦合至存储器610,用于执行存储器 610中的程序,以用于:
如果各副本节点处于同步复制状态,且各副本节点、主节点的写操作延展时间大于第二阈值,则将各副本节点的复制状态从同步复制状态调整为异步复制状态。
上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (17)
1.一种基于状态机的消息引擎动态调整方法,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
2.根据权利要求1所述的方法,其特征在于,所述副本节点从所述主节点复制数据的过程还存在如下的复制状态:
半同步复制状态:当前命中所述主节点的写请求被维持,各所述副本节点从主节点复制写数据,并在各所述副本节点与所述主节点上的写数据无差异后,解除所述主节点的写请求的维持状态;
所述将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态包括:
将各所述副本节点的复制状态从所述异步复制状态切换为所述半同步复制状态,待所述主节点的写请求的维持状态解除后,将所述副本节点的复制状态从所述半同步复制状态切换为所述同步复制状态。
3.根据权利要求2所述的方法,其特征在于,所述消息引擎包括单主状态以及所述副本节点对应的所述复制状态:
所述单主状态:当前消息引擎中有且仅有第一个节点启动后,以该节点作为所述主节点执行所述写请求的命令;
所述方法还包括:
在初始状态下,如果当前所述消息引擎中有节点启动,则将所述消息引擎从初始状态调整到所述单主状态;
在所述消息引擎处于所述单主状态下,如果存在除所述第一个节点的其他节点启动后,将所述消息引擎从所述单主状态调整到所述异步复制状态。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述消息引擎处于所述异步复制状态、所述半同步复制状态以及所述单主状态中的任一状态下,如果所述主节点发生宕机,则执行报警操作。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述消息引擎处于所述异步复制状态下,如果所有所述副本节点发生宕机,则将所述消息引擎从所述异步复制状态调整为所述单主状态。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述消息引擎处于所述半同步复制状态下,如果所有所述副本节点发生宕机,则将所述消息引擎从所述半同步复制状态调整为所述单主状态。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述消息引擎处于所述同步复制状态下,如果所述主节点、所述副本节点中任一节点发生宕机,则从剩余未发生宕机的节点中选择一个节点作为主节点,并将所述消息引擎从所述同步复制状态调整为所述单主状态。
8.一种基于状态机的消息引擎动态调整方法,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
9.根据权利要求8所述的方法,其特征在于,所述副本节点从所述主节点复制数据的过程还存在如下的复制状态:
半同步复制状态:当前命中所述主节点的写请求被维持,各所述副本节点从主节点复制写数据,并在各所述副本节点与所述主节点上的写数据无差异后,解除所述主节点的写请求的维持状态;
所述将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态包括:
将各所述副本节点的复制状态从所述异步复制状态切换为所述半同步复制状态,待所述主节点的写请求的维持状态解除后,将所述副本节点的复制状态从所述半同步复制状态切换为所述同步复制状态。
10.一种基于状态机的消息引擎动态调整方法,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述方法包括:
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
11.一种基于状态机的消息引擎动态调整装置,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
异同调整模块,用于如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
同异调整模块,用于如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
12.根据权利要求11所述的装置,其特征在于,所述副本节点从所述主节点复制数据的过程还存在如下的复制状态:
半同步复制状态:当前命中所述主节点的写请求被维持,各所述副本节点从主节点复制写数据,并在各所述副本节点与所述主节点上的写数据无差异后,解除所述主节点的写请求的维持状态;
所述异同调整模块具体用于,
将各所述副本节点的复制状态从所述异步复制状态切换为所述半同步复制状态,待所述主节点的写请求的维持状态解除后,将所述副本节点的复制状态从所述半同步复制状态切换为所述同步复制状态。
13.一种基于状态机的消息引擎动态调整装置,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
异同调整模块,用于如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
14.一种基于状态机的消息引擎动态调整装置,其特征在于,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
所述装置包括:
同异调整模块,用于如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
15.一种电子设备,其特征在于,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态;
和/或,
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
16.一种电子设备,其特征在于,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述异步复制状态,且各所述副本节点与所述主节点之间的数据差异小于第一阈值,则将各所述副本节点的复制状态从所述异步复制状态调整为所述同步复制状态。
17.一种电子设备,其特征在于,包括:
存储器,用于存储基于状态机的消息引擎动态调整程序,所述消息引擎包括一个主节点和多个副本节点,且所述副本节点从所述主节点复制数据的过程存在如下的复制状态:
异步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点完成写操作后,向客户端反馈写成功消息;
同步复制状态:写请求命中主节点之后,各所述副本节点从主节点复制写数据,并在所述主节点和各所述副本节点均完成写操作后,向客户端反馈写成功消息;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
如果各所述副本节点处于所述同步复制状态,且各所述副本节点、所述主节点的写操作延迟时间大于第二阈值,则将各所述副本节点的复制状态从所述同步复制状态调整为所述异步复制状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710069150.1A CN108400881B (zh) | 2017-02-08 | 2017-02-08 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710069150.1A CN108400881B (zh) | 2017-02-08 | 2017-02-08 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108400881A CN108400881A (zh) | 2018-08-14 |
CN108400881B true CN108400881B (zh) | 2021-11-05 |
Family
ID=63093540
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710069150.1A Active CN108400881B (zh) | 2017-02-08 | 2017-02-08 | 基于状态机的消息引擎动态调整方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108400881B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955382A (zh) * | 2018-09-26 | 2020-04-03 | 华为技术有限公司 | 一种在分布式系统中写入数据的方法和装置 |
CN110968641B (zh) * | 2018-09-30 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 数据写入控制方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209105A (zh) * | 2010-05-03 | 2011-10-05 | 微软公司 | 用于同步和异步游戏模式的系统 |
WO2013000201A1 (zh) * | 2011-06-29 | 2013-01-03 | 中兴通讯股份有限公司 | 一种通信接口的多速率自适应方法及系统 |
CN104123198A (zh) * | 2013-04-28 | 2014-10-29 | 国际商业机器公司 | 管理数据复制模式的方法和装置 |
CN105468727A (zh) * | 2015-11-20 | 2016-04-06 | 国家电网公司 | 基于zookeeper实现MySQL强一致性复制方法 |
-
2017
- 2017-02-08 CN CN201710069150.1A patent/CN108400881B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209105A (zh) * | 2010-05-03 | 2011-10-05 | 微软公司 | 用于同步和异步游戏模式的系统 |
WO2013000201A1 (zh) * | 2011-06-29 | 2013-01-03 | 中兴通讯股份有限公司 | 一种通信接口的多速率自适应方法及系统 |
CN104123198A (zh) * | 2013-04-28 | 2014-10-29 | 国际商业机器公司 | 管理数据复制模式的方法和装置 |
CN105468727A (zh) * | 2015-11-20 | 2016-04-06 | 国家电网公司 | 基于zookeeper实现MySQL强一致性复制方法 |
Non-Patent Citations (2)
Title |
---|
万亿级数据洪峰下的分布式消息引擎;中间件小哥;《https://developer.aliyun.com/article/69299》;20170207;全文 * |
中间件小哥.万亿级数据洪峰下的分布式消息引擎.《https://developer.aliyun.com/article/69299》.2017, * |
Also Published As
Publication number | Publication date |
---|---|
CN108400881A (zh) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11892922B2 (en) | State management methods, methods for switching between master application server and backup application server, and electronic devices | |
CN108628874B (zh) | 迁移数据的方法、装置、电子设备和可读存储介质 | |
CN105159795A (zh) | 数据同步方法、装置和系统 | |
US8862843B2 (en) | Storage system, backup storage apparatus, and backup control method | |
EP3361383B1 (en) | Modifying membership of replication groups via journal operations | |
JP2008250695A (ja) | ディスクアレイコントローラ及びこれを備えたディスクアレイシステム | |
CN111897878B (zh) | 主辅数据同步方法及系统 | |
WO2014059804A1 (zh) | 数据同步方法及系统 | |
US20210311768A1 (en) | Switching between master and standby container systems | |
CN102890716A (zh) | 分布式文件系统和分布式文件系统的数据备份方法 | |
CN108400881B (zh) | 基于状态机的消息引擎动态调整方法、装置及电子设备 | |
CN112380062A (zh) | 一种基于系统备份点多次快速恢复系统的方法及系统 | |
CN111046024A (zh) | 一种共享存储数据库的数据处理方法、装置、设备及介质 | |
US8612799B2 (en) | Method and apparatus of backing up subversion repository | |
CN111865632A (zh) | 分布式数据存储集群的切换方法及切换指令发送方法和装置 | |
CN112929438B (zh) | 一种双站点分布式数据库的业务处理方法及装置 | |
CN113326251B (zh) | 数据管理方法、系统、设备和存储介质 | |
CN111352959B (zh) | 数据同步补救、存储方法及集群装置 | |
WO2016206568A1 (zh) | 数据更新方法、装置及相关系统 | |
CN110597467A (zh) | 高可用数据零丢失存储系统及方法 | |
JP5716460B2 (ja) | クラスタシステムおよびその制御方法 | |
CN113472891B (zh) | 一种sdn控制器集群数据处理方法、设备及介质 | |
WO2021259109A1 (zh) | 补丁加载方法、网元及计算机可读存储介质 | |
JP2007328595A (ja) | サーバシステムおよびそのシステムにおける同期化方法 | |
JP2015153128A (ja) | 呼処理制御装置及びそのソフトウェア更新方法、呼処理システム、並びにコンピュータ・プログラム |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1259214 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |