CN111262918A - 一种跨平台分布式一致性框架系统及其实现方法 - Google Patents
一种跨平台分布式一致性框架系统及其实现方法 Download PDFInfo
- Publication number
- CN111262918A CN111262918A CN202010031327.0A CN202010031327A CN111262918A CN 111262918 A CN111262918 A CN 111262918A CN 202010031327 A CN202010031327 A CN 202010031327A CN 111262918 A CN111262918 A CN 111262918A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- module
- nodes
- raft
- 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
- G06F8/454—Consistency
-
- 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
-
- 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/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
一种跨平台分布式一致性框架系统,由多个安装有客户端软件的主机构成;每个客户端软件所在的主机为raft集群中的一个Node节点,包括通讯RPC模块,负责Node节点与其他Node节点的数据交互通讯;raft算法模块,用于保障Node与Node之间数据的一致性;多个功能模块,为该系统的业务模块,用于实现多种业务功能。还包括一种跨平台分布式一致性框架的实现方法。本发明提供raft算法实现了所有客户端软件数据的一致性。且适用于多芯片架构平台(普通x86、龙芯、兆芯、飞腾、申威)的多系统平台(Windows、Linux),及混用环境。在数据交互方面,采用国产加密算法,安全保密。本发明简单配置、调用接口就能组件分布式一致性。
Description
技术领域
本发明涉及计算机通信技术领域,具体地说是一种跨平台分布式一致性框架系统及其实现方法。
背景技术
随着同一商家自主产品在市场占有率的提高,同一区域(同一客户)内的客户端数量很容易达到万级甚至十万级。在这种环境下,传统的C/S模式难以解决大流量的数据同步、软件推送、产品升级等等业务需求。在多操作系统(Windows、Linux、国产操作系统混合)、网络资源紧张(低带宽、高延迟、丢包、乱序等等)、服务器宕机等复杂环境下,保持所有客户端软件的数据一致性,进而提高产品的可靠性、可用性是亟需解决的问题。
发明内容
本发明的目的在于一种跨平台分布式一致性框架系统及其实现方法,用于解决所有客户端软件数据一致性的问题。
本发明解决其技术问题所采取的技术方案是:
本发明第一方面提供了一种跨平台分布式一致性框架系统,由多个安装有客户端软件的主机构成;每个客户端软件所在的主机为raft集群中的一个Node节点,包括通讯RPC模块,负责Node节点与其他Node节点的数据交互通讯;
raft算法模块,用于保障Node与Node之间数据的一致性;
多个功能模块,为该系统的业务模块,用于实现多种业务功能。
结合第一方面,在第一方面第一种可能实现的方式中,所述的通讯RPC模块包括网络应用层、应用层、数据传输层、网络数据序列号/反序列化模块。
结合第一方面,在第一方面第二种可能实现的方式中,所述的网络应用层以多线程异步、绑定硬件CPU亲和性的方式基于boost::asio实现;
所述的应用层基于boost::bind/function及编译器宏实现,用于动/静态反射;
所述的数据传输层采用国产商密4算法进行加密;
所述的网络数据序列号/反序列化模块采用谷歌的protobuf。
本发明第二方面提供了一种跨平台分布式一致性框架的实现方法,该方法包括以下步骤:
功能模块通过通讯RPC模块与其他Node节点进行业务交互;
raft算法模块判断Node节点与其他Node节点之间数据是否一致;
如果Node节点与Node节点之间的数据不一致,raft算法模块进行数据同步。
结合第二方面,在第二方面第一种可能实现的方式中,raft算法模块判断Node节点与其他Node节点之间数据是否一致具体包括:raft算法模块实时检查功能模块产生的数据信息、二进制信息,并与其他Node节点的信息做对比。
结合第二方面,在第二方面第二种可能实现的方式中,当Node节点与Node节点之间的数据不一致时,raft算法模块进行数据同步具体包括以下方法:
根据时间帧确定数据是否更新,最新的时间帧所对应的数据为最新数据,将最新的数据替换之前的数据。
由以上方案可知,本发明提供raft算法实现了所有客户端软件数据的一致性。且适用于多芯片架构平台(普通x86、龙芯、兆芯、飞腾、申威)的多系统平台(Windows、Linux),及混用环境。在数据交互方面,采用国产加密算法,安全保密。本发明简单配置、调用接口就能组件分布式一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为raft算法原理示意图一;
图2为raft算法原理示意图二;
图3为一种跨平台分布式一致性框架系统结构示意图;
图4为本发明实施例所应用的一种跨平台分布式一致性框架实现方法流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议,raft也是一个共识算法。所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。利用raft算法协议,可以完整解决问题。
如图1和图2所示,正常状态下,集群中所有节点都处于三种状态(领袖、群众、候选人)的其中一种状态。
当客户端向集群领袖节点提交数据后,领袖节点接收到的数据处于将未提交状态。接着领袖节点会并发地向所有群众节点复制数据并等待接收响应。集群中至少超过半数的节点已接收到数据后,领袖节点再向客户端确认数据已接收。
一旦向客户端发出数据接收回复响应后,表明此时数据状态进入已提交状态,领袖节点再向群众节点发通知告知该数据状态已提交。
Raft协议强依赖领袖节点的可用性,以确保集群数据的一致性。当领袖节点因宕机或其他因素发生故障时,此时所有群众都会变成候选人,进入选举状态。
以最简单的三节点集群为例,初始状态ABC都是群众,然后发起选举这时有三种可能的情形发生。下图中前二种都能选出领袖,第三种则表明本轮投票无效。对于第三种,每方都投给了自己,结果没有任何一方获得多数票。之后每个参与方随机休息一阵(ElectionTimeout)重新发起投票直到一方获得多数票。这里的关键就是随机timeout,最先从timeout中恢复发起投票的一方,向还在timeout中的另外两方请求投票,这时它就只能投给自己,导致很快达成一致。
选出领袖后,领袖会定时向所有群众发送心跳,如果群众一段时间没有收到领袖发来的心跳,那么会认为领袖已经挂掉,会再次发起选举。
本发明实施例应用raft算法协议,提供了一种跨平台分布式一致性框架系统及其实现方法,解决了所有客户端中数据不一致的问题。
如图3所示,一种跨平台分布式一致性框架系统,由多个安装有客户端软件的主机构成;每个客户端软件所在的主机为raft集群中的一个Node节点,包括通讯RPC模块,负责Node节点与其他Node节点的数据交互通讯;raft算法模块,用于保障Node与Node之间数据的一致性;多个功能模块,为该系统的业务模块,用于实现多种业务功能。
通讯RPC模块包括网络应用层、应用层、数据传输层、网络数据序列号/反序列化模块。所述的网络应用层以多线程异步、绑定硬件CPU亲和性的方式基于boost::asio实现;应用层基于boost::bind/function及编译器宏实现,用于动/静态反射;数据传输层采用国产商密4算法进行加密;网络数据序列号/反序列化模块采用谷歌的protobuf。
如图4所示,一种跨平台分布式一致性框架的实现方法,该方法包括以下步骤:
S1、功能模块通过通讯RPC模块与其他Node节点进行业务交互;
S2、raft算法模块判断Node节点与其他Node节点之间数据是否一致;
S3、如果Node节点与Node节点之间的数据不一致,raft算法模块进行数据同步。
S2中raft算法模块判断Node节点与其他Node节点之间数据是否一致具体包括:raft算法模块实时检查功能模块产生的数据信息、二进制信息,并与其他Node节点的信息做对比。
S3中当Node节点与Node节点之间的数据不一致时,raft算法模块进行数据同步具体包括以下方法:根据时间帧确定数据是否更新,最新的时间帧所对应的数据为最新数据,将最新的数据替换之前的数据。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种跨平台分布式一致性框架系统,其特征是,由多个安装有客户端软件的主机构成;每个客户端软件所在的主机为raft集群中的一个Node节点,包括通讯RPC模块,负责Node节点与其他Node节点的数据交互通讯;
raft算法模块,用于保障Node与Node之间数据的一致性;
多个功能模块,为该系统的业务模块,用于实现多种业务功能。
2.根据权利要求1所述的系统,其特征是,所述的通讯RPC模块包括网络应用层、应用层、数据传输层、网络数据序列号/反序列化模块。
3.根据权利要求2所述的系统,其特征是,所述的网络应用层以多线程异步、绑定硬件CPU亲和性的方式基于boost::asio实现;
所述的应用层基于boost::bind/function及编译器宏实现,用于动/静态反射;
所述的数据传输层采用国产商密4算法进行加密;
所述的网络数据序列号/反序列化模块采用谷歌的protobuf。
4.一种跨平台分布式一致性框架的实现方法,根据权利要求1-3所述的所述的系统,其特征是,该方法包括以下步骤:
功能模块通过通讯RPC模块与其他Node节点进行业务交互;
raft算法模块判断Node节点与其他Node节点之间数据是否一致;
如果Node节点与Node节点之间的数据不一致,raft算法模块进行数据同步。
5.根据权利要求4所述的方法,其特征是,raft算法模块判断Node节点与其他Node节点之间数据是否一致具体包括:raft算法模块实时检查功能模块产生的数据信息、二进制信息,并与其他Node节点的信息做对比。
6.根据权利要求4所述的方法,其特征是,当Node节点与Node节点之间的数据不一致时,raft算法模块进行数据同步具体包括以下方法:
根据时间帧确定数据是否更新,最新的时间帧所对应的数据为最新数据,将最新的数据替换之前的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010031327.0A CN111262918A (zh) | 2020-01-13 | 2020-01-13 | 一种跨平台分布式一致性框架系统及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010031327.0A CN111262918A (zh) | 2020-01-13 | 2020-01-13 | 一种跨平台分布式一致性框架系统及其实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111262918A true CN111262918A (zh) | 2020-06-09 |
Family
ID=70953981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010031327.0A Pending CN111262918A (zh) | 2020-01-13 | 2020-01-13 | 一种跨平台分布式一致性框架系统及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111262918A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202746A (zh) * | 2020-09-24 | 2021-01-08 | 北京百度网讯科技有限公司 | Rpc成员信息获取方法、装置、电子设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726211A (zh) * | 2018-12-27 | 2019-05-07 | 无锡华云数据技术服务有限公司 | 一种分布式时序数据库 |
CN110648137A (zh) * | 2019-04-26 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 一种区块处理方法和节点以及系统 |
-
2020
- 2020-01-13 CN CN202010031327.0A patent/CN111262918A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109726211A (zh) * | 2018-12-27 | 2019-05-07 | 无锡华云数据技术服务有限公司 | 一种分布式时序数据库 |
CN110648137A (zh) * | 2019-04-26 | 2020-01-03 | 腾讯科技(深圳)有限公司 | 一种区块处理方法和节点以及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202746A (zh) * | 2020-09-24 | 2021-01-08 | 北京百度网讯科技有限公司 | Rpc成员信息获取方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110650189B (zh) | 一种基于中继的区块链的交互系统及方法 | |
Song et al. | Bosco: One-step byzantine asynchronous consensus | |
CN109981622B (zh) | 区块链网络节点权限反向代理方法及设备 | |
CN111262872A (zh) | 一种企业区块链服务平台 | |
CN111046110B (zh) | 用于区块链系统的节点管理的方法、节点和计算设备 | |
Hardekopf et al. | Secure and fault-tolerant voting in distributed systems | |
EP1543430A2 (en) | Peer to peer remote data storage and collaboration | |
WO2020083112A1 (zh) | 数值转移方法、装置及系统 | |
Hine et al. | An architecture for distributed OASIS services | |
CN111260474B (zh) | 跨区块链的资产交易方法、装置、设备、系统和存储介质 | |
CN111049696A (zh) | 用于区块链系统的节点管理的方法、节点和计算设备 | |
CN115633035B (zh) | 一种基于改进的pbft物联网区块链共识算法 | |
CN111262918A (zh) | 一种跨平台分布式一致性框架系统及其实现方法 | |
Bazzi et al. | Clairvoyant state machine replication | |
CN112927073A (zh) | 跨链数据互换方法、系统、装置、电子设备 | |
CN112508703B (zh) | 一种同构公有链价值交换方法 | |
Meling et al. | When you don't trust clients: Byzantine proposer fast paxos | |
US20230412390A1 (en) | Rollback protection with ephemeral identities for tee-based consensus protocols | |
CN113612732A (zh) | 一种资源调用方法、装置和多方安全计算系统 | |
CN112306762A (zh) | 通信处理方法、装置及系统、非易失性存储介质 | |
CN112162967A (zh) | 工控系统数据安全的拟态存储系统及方法 | |
CN115914244B (zh) | 一种优化分布式账本互操作性的方法 | |
Misra et al. | Byzantine Fault-Tolerant Causal Broadcast on Incomplete Graphs | |
Warfield et al. | Identifying open problems in distributed systems | |
Serafini et al. | The fail-heterogeneous architectural model |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200609 |
|
RJ01 | Rejection of invention patent application after publication |