CN111327447B - 一种分布式***、仲裁方法、节点设备及存储介质 - Google Patents
一种分布式***、仲裁方法、节点设备及存储介质 Download PDFInfo
- Publication number
- CN111327447B CN111327447B CN201811543450.XA CN201811543450A CN111327447B CN 111327447 B CN111327447 B CN 111327447B CN 201811543450 A CN201811543450 A CN 201811543450A CN 111327447 B CN111327447 B CN 111327447B
- Authority
- CN
- China
- Prior art keywords
- node
- node device
- format
- equipment
- node equipment
- 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/30—Decision processes by autonomous network management units using voting and bidding
-
- 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
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种分布式***,包括:至少三个节点设备,该至少三个节点设备分属于至少两个不同的业务***,该至少三个节点设备分别配置有适配层和转换层,其中,适配层用于将每个节点设备各自所采用的实例的接口与目标接口进行相互转换,转换层用于将经过目标接口的消息的格式与目标格式进行相互转换,目标格式的消息用于至少两个不同的业务***中各业务***间的节点设备进行通信。本申请实施例还提供基于该分布式***的仲裁方法以及相应的节点设备、计算机可读存储介质。本申请技术方案由于将分布式***中的至少三个节点设备分别配置有适配层和转换层,构建了一个可以包括多个不同的业务***的分布式***,实现跨业务***进行仲裁。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种分布式***、基于该分布式***的仲裁方法、该分布式***中的节点设备以及存储介质。
背景技术
在多处理***中,多个设备或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理***中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的仲裁方法判断应获得对总线使用权的申请者。仲裁方法可分为集中式仲裁和分布式仲裁,集中式仲裁利用单个仲裁器分配多个处理机的请求,分布式仲裁中,每个仲裁节点都有自己的仲裁器。
分布式仲裁所在的***可以称为分布式***,在一个分布式***中,包含若干个节点设备,这若干个节点设备形成仲裁集群。仲裁集群可以整合资源,作为一个整体对外提供服务。当存在某些节点设备因为各种意外而崩溃或者状态异常,就无法保证它们和其他节点设备达成一致状态,同时仲裁集群又需要保证在这种情况下能够继续稳定的对外提供服务。分布式一致性算法,就是解决这类问题的算法,例如以paxos、raft协议为代表的分布式一致性算法。这些算法有坚实的理论基础,在众多的分布式***中成熟应用,是解决分布式一致性问题的公认解决方案。尤其是raft协议,相对于paxos更容易理解、实现,是当前解决分布式***一致性问题的事实标准。
但是,这些算法只能应用在一个分布式***中只包括一个业务***的场景,不同的业务***之间无法进行仲裁,因此,提供一种分布式***,使得该分布式***可以包括多个不同的业务***,实现跨业务***进行分布式仲裁成为一种有待解决的问题。
发明内容
本申请实施例提供了一种分布式***、基于该分布式***的仲裁方法、该分布式***中的节点设备及存储介质,使得一个分布式***可以包括多个不同的业务***,实现跨业务***进行仲裁,解决需要仲裁的多个***之间因为无法通信、***之间不信任,以及协议符合度不一致等原因而无法进行跨***仲裁的问题。
为解决上述技术问题,本申请实施例提供以下技术方案:
本申请第一方面提供一种分布式***,该分布式***可以包括至少三个节点设备,该至少三个节点设备分属于分布式***中的至少两个不同的业务***,该至少两个不同的业务***采用分布式一致性协议的不同实例以及适配不同的消息格式,该至少三个节点设备分别配置有适配层和转换层。其中,适配层,用于将至少三个节点设备中每个节点设备各自所采用的实例的接口转换为目标接口,或者将目标接口转换为每个节点设备各自所采用的实例的接口,该目标接口为至少两个不同的业务***中的节点设备都适配的接口。转换层,用于将经过目标接口的消息的格式转换为目标格式,该消息的格式为与每个节点设备各自所适配的格式,或者将目标格式转换为与每个节点设备各自所适配的消息格式,目标格式为与至少两个不同的业务***中的节点设备都适配的格式,目标格式的消息用于至少两个不同的业务***中各业务***间的节点设备进行通信。
由上述第一方面可知,该分布式***中的至少三个节点设备预先配置有适配层和转换层,不同的业务***之间可以通过分布式一致性协议进行分布式仲裁,也就是说,一个分布式***可以包括多个不同的业务***,解决需要仲裁的多个业务***之间因为无法通信、***之间不信任,以及协议符合度不一致等原因而无法进行跨***仲裁的问题。
可选地,结合上述第一方面,在第一种可能的实现方式中,在分布式***建立时,针对至少三个节点设备中用于注册的第一节点设备,还可以包括:第一节点设备接收第二节点设备发送的注册请求,注册请求中携带第二节点设备的地址信息和公钥,第二节点设备为至少三个节点设备中除第一节点设备之外的任一节点设备。第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥,以完成第二节点设备在第一节点设备上的注册。第一节点设备向已完成注册的节点设备发送第二节点设备的地址信息和公钥,并向第二节点设备发送已完成注册的节点设备的地址信息和公钥。
由第一方面第一种可能的实现方式可知,第二节点设备向第一节点设备发送注册请求,若第二节点设备成功注册到第一节点设备上,则第一节点设备向第二节点设备发送已完成注册的节点设备的地址信息和公钥,并向已完成注册的节点设备发送第二节点设备的地址信息和公钥,使得该分布式***中参与仲裁的业务***能够感知彼此的存在,获取加入该分布式***的节点设备的数量,同时实现该分布式***中的节点设备之间的安全通讯。
可选地,结合上述第一方面第一种可能的实现方式,在第二种可能的实现方式中,第一节点设备在内部生成M个分布式一致性协议的模拟实例,其中,M为大于1的整数。第一节点设备根据分布式一致性协议的要求,模拟不同场景下第二节点设备与M个模拟实例进行通信,不同场景可以包括正常场景和故障场景。若在正常场景和故障场景第二节点设备与模拟实例都能正常通信,则第一节点设备允许第二节点设备注册,也就是说,第二节点设备根据接收到的第一节点设备发送的消息向第一节点设备发送响应消息,若在正常场景和故障场景第二节点设备能正确响应第一节点设备发送的消息,则第一节点设备允许第二节点设备注册,在允许第二节点设备加入该分布式***之前,先对第二节点设备是否能够按照预先设定的分布式一致性协议进行通信,若能够正常通信,才允许第二节点设备加入该分布式***,保障了该分布式***的完整性及安全性。
可选地,结合上述第一方面,在第三种可能的实现方式中,在分布式***仲裁阶段,针对至少三个节点设备中的第三节点设备,第三节点设备为至少三个节点设备中的任意一个节点设备,还可以包括:向第四节点设备发送第一远程过程调用协议(remoteprocedure call protocol,RPC)消息,第四节点设备为至少三个节点设备中除第三节点设备之外的任意一个节点设备,第一RPC消息为经过第三节点设备目标接口的消息,第一RPC消息用于请求第四节点设备为仲裁主设备投票。
具体的说,第三节点设备获取第一RPC消息,该第一RPC消息由第三节点设备内部所采用的实例发出,此时的第一RPC消息为第三格式,该第三格式的第一RPC消息经过第三节点设备的目标接口被发送到第三节点设备的转换层,转换层将第三格式的第一RPC消息转换为目标格式的第一RPC消息,第三格式的RPC消息用于请求第四节点设备为仲裁主设备进行投票,第三格式为与第三节点设备所适配的格式,第三节点设备向第四节点设备发送该第一RPC消息,以使第四节点设备在将目标格式的第一RPC消息转换为第四格式的RPC 消息后为仲裁主设备进行投票,第四格式为与第四节点设备所适配的格式,第三格式与第四格式不同。
第三节点设备接收第四节点设备发送的响应消息,响应消息中包含第四节点设备对仲裁主设备的投票信息,响应消息为经过第四节点设备目标接口的消息。根据经过第三节点设备目标接口的响应消息获取投票信息,投票信息用于确定仲裁结果,仲裁结果用于指示第三节点设备是否能够成为主设备,具体的说,第三节点设备用于将目标格式的响应消息转换为第三格式的响应消息,以获取第四设备对仲裁主设备的投票信息,第三格式的响应消息经过适配层,第三节点设备根据投票信息,确定仲裁结果,仲裁结果用于指示第三节点设备是否能够成为主设备。由第一方面第三种可能的实现方式可知,当分布式***有仲裁的需求时,该分布式***的节点设备可以通过目标格式的消息进行通信,实现不同业务***之间的仲裁,并确定主设备。
可选地,结合上述第一方面第三种可能的实现方式,在第四种可能的实现方式中,还可以包括:第三节点设备还用于,当仲裁结果指示第三节点设备成为主设备,则第三节点设备接收用户设备发送第三格式的数据内容。第三节点设备存储第三格式的数据内容,并将第三格式的数据内容封装为目标格式的第二RPC消息。第三节点设备向第四节点设备发送目标格式的第二RPC消息,目标格式的第二RPC消息被第四节点设备转换为第四格式的数据内容进行存储。当确定主设备后,使得该分布式***可以对外服务,接收用户设备指令。
本申请第二方面提供一种分布式***的仲裁方法,该分布式***可以包括至少三个节点设备,至少三个节点设备分属于分布式***中的至少两个不同的业务***,在至少三个节点设备仲裁主设备的过程中,针对至少三个节点设备中的第一节点设备,第一节点设备为三个节点设备中的任意一个节点设备,该方法可以包括:第一节点设备获取第一格式的远程过程调用RPC消息,第一格式的RPC消息用于请求第二节点设备为仲裁主设备进行投票,第一格式为与第一节点设备所适配的格式。第一节点设备将第一格式的RPC消息转换为目标格式的第一RPC消息,目标格式为与至少两个不同的业务***中的节点设备都适配的格式。第一节点设备向第二节点设备发送目标格式的第一RPC消息,以使第二节点设备在将目标格式的第一RPC消息转换为第二格式的RPC消息后为仲裁主设备进行投票,第二格式为与第二节点设备所适配的格式,第一格式与第二格式不同。
第一节点设备接收第二节点设备发送的目标格式的响应消息,响应消息中包含第二节点设备对仲裁主设备的投票信息。第一节点设备将目标格式的响应消息转换为第一格式的响应消息,以获取第二设备对仲裁主设备的投票信息。第一节点设备根据投票信息,确定仲裁结果,仲裁结果用于指示第一节点设备是否能够成为主设备。提供一种跨业务***进行仲裁的方法,解决需要仲裁的多个业务***之间因为无法通信、***之间不信任,以及协议符合度不一致等原因而无法进行跨***仲裁的问题。
可选地,结合上述第二方面,在第一种可能的实现方式中,还可以包括:若仲裁结果指示第一节点设备成为主设备,则第一节点设备接收用户设备发送第一格式的数据内容。第一节点设备存储第一格式的数据内容,并将第一格式的数据内容封装为目标格式的第二 RPC消息。第一节点设备向第二节点设备发送目标格式的第二RPC消息,目标格式的第二 RPC消息被第二节点设备转换为第二格式的数据内容进行存储。
可选地,结合上述第二方面、第二方面第一种可能的实现方式,在第二种可能的实现方式中,若第一节点设备为分布式***中用于仲裁注册管理的节点时,在第一节点设备与第二节点设备还未建立通信关系之前,还可以包括:第一节点设备接收第二节点设备发送的注册请求,注册请求中携带第二节点设备的地址信息和公钥。第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥,以完成第二节点设备在第一节点设备上的注册。第一节点设备向已完成注册的节点设备发送第二节点设备的地址信息和公钥,并向第二节点设备发送已完成注册的节点设备的地址信息和公钥。
可选地,结合上述第二方面第二种可能的实现方式,在第三种可能的实现方式中,在第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥之前,还可以包括:第一节点设备生成M个分布式一致性协议的模拟实例,M为大于1的整数。第一节点设备根据分布式一致性协议的要求,模拟不同场景下第二节点设备与M个模拟实例进行通信,不同场景可以包括正常场景和故障场景。若在正常场景和故障场景第二节点设备与模拟实例都能正常通信,则第一节点设备允许第二节点设备注册,保障了该分布式***的完整性及安全性。
本申请第三方面提供一种分布式***的仲裁方法,该分布式***可以包括至少三个节点设备,至少三个节点设备分属于分布式***中的至少两个不同的业务***,在至少三个节点设备仲裁主设备的过程中,针对至少三个节点设备中除发起仲裁的第一节点设备之外的第二节点设备,第二节点设备为三个节点设备中的除第一节点设备之外的任意一个节点设备,该方法可以包括:第二节点设备接收第一节点设备发送的目标格式的第一RPC消息,目标格式的第一RPC消息为第一节点设备将获取到的第一格式的远程过程调用RPC消息转换后得到,第一格式的RPC消息用于请求第二节点设备为仲裁主设备进行投票,第一格式为与第一节点设备所采用的格式,目标格式为与至少两个不同的业务***中的节点设备都适配的格式。第二节点设备将目标格式的第一RPC消息转换为第二格式的RPC消息。第二节点设备根据第二格式的RPC消息为仲裁主设备进行投票,第二格式为与第二节点设备所适配的格式,第一格式与第二格式不同。
第二节点设备向第一节点设备发送目标格式的响应消息,响应消息中包含第二节点设备对仲裁主设备的投票信息,以使第一节点设备将目标格式的响应消息转换为第一格式的响应消息后获取第二设备对仲裁主设备的投票信息,并根据投票信息确定仲裁结果,仲裁结果用于指示第一节点设备是否能够成为主设备。
可选地,结合上述第三方面,在第一种可能的实现方式中,还可以包括:第二节点设备接收第一节点设备发送的目标格式的第二RPC消息,目标格式的第二RPC消息为第一节点设备为主设备时将接收到的用户设备发送的第一格式的数据内容封装后得到。第二节点设备将接收到的目标格式的第二RPC消息转换为第二格式的数据内容进行存储。
可选地,结合上述第三方面,第三方面第一种可能的实现方式,在第二种可能的实现方式中,若第一节点设备为分布式***中用于仲裁注册管理的节点时,在第一节点设备与第二节点设备还未建立通信关系之前,还可以包括:第二节点设备向第一节点设备发送注册请求,注册请求中携带第二节点设备的地址信息和公钥,以使第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥,以完成第二节点设备在第一节点设备上的注册,并向已完成注册的节点设备发送第二节点设备的地址信息和公钥,第二节点设备接收第一节点设备发送的已完成注册的节点设备的地址信息和公钥。
本申请第四方面提供一种分布式***的仲裁管理方法,该分布式***可以包括管理节点设备和至少两个节点设备,管理节点设备和至少两个节点设备分属于分布式***中的至少两个不同的业务***,该方法可以包括:管理节点设备接收第一节点设备发送的注册请求,注册请求中携带第一节点设备的地址信息和公钥,第一节点设备为至少两个节点设备中的任意一个节点设备。管理节点设备根据注册请求,记录第一节点设备的地址信息和公钥,以完成第一节点设备在管理节点设备上的注册。管理节点设备向第二节点设备发送第一节点设备的地址信息和公钥,并向第一节点设备发送第二节点设备的地址信息和公钥,第二节点设备为已注册在管理节点设备中的节点设备。
可选地,结合上述第四方面,在第一种可能的实现方式中,在管理节点设备根据注册请求,记录第一节点设备的地址信息和公钥之前,还可以包括:管理节点设备生成M个分布式一致性协议的模拟实例,M为大于1的整数。管理节点设备根据分布式一致性协议的要求,模拟不同场景下第一节点设备与M个模拟实例进行通信,不同场景可以包括正常场景和故障场景。若在正常场景和故障场景第一节点设备与模拟实例都能正常通信,则管理节点设备允许第一节点设备注册。
本申请第五方面提供一种分布式***的仲裁方法,该分布式***包括至少三个节点设备,该至少三个节点设备分属于分布式***中的至少两个不同的业务***,可以包括:第一节点设备将第一格式的第一RPC消息转换为目标格式的第一RPC消息,第一RPC消息用于请求第二节点设备为仲裁主设备进行投票,目标格式为至少两个不同的业务***中的节点设备都采用的格式,第一格式为第一节点设备所采用的格式,第一节点设备为三个节点设备中的任意一个节点设备,第二节点设备为三个节点设备中除第一节点设备之外的任意一个节点设备。
第二节点设备将目标格式的第一RPC消息转换为第二格式的RPC消息。第二节点设备根据第二格式的RPC消息为仲裁主设备进行投票,第二格式为第二节点设备所采用的格式,第一格式与第二格式不同。第二节点设备向第一节点设备发送目标格式的响应消息,响应消息中包含第二节点设备对仲裁主设备的投票信息。
第一节点设备将接收到的目标格式的响应消息转换为第一格式的响应消息,响应消息中包含第二节点设备对仲裁主设备的投票信息。第一节点设备根据投票信息,确定仲裁结果,仲裁结果用于指示第一节点设备是否能够成为主设备。
可选地,结合上述第五方面,在第一种可能的实现方式中,当仲裁结果指示第一节点设备成为主设备,则第一节点设备接收用户设备发送第一格式的数据内容。第一节点设备存储第一格式的数据内容,并将第一格式的数据内容封装为目标格式的第二RPC消息。第一节点设备向第二节点设备发送目标格式的第二RPC消息。
第二节点设备将接收到的目标格式的第二RPC消息转换为第二格式的数据内容进行存储。
可选地,结合上述第五方面或第五方面第一种可能的实现方式,在第二种可能的实现方式中,若第一节点设备为分布式***中用于仲裁注册管理的节点时,在第一节点设备与第二节点设备还未建立通信关系之前,第二节点设备向第一节点设备发送注册请求,注册请求中携带第二节点设备的地址信息和公钥。第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥,以完成第二节点设备在第一节点设备上的注册。第一节点设备向已完成注册的节点设备发送第二节点设备的地址信息和公钥,并向第二节点设备发送已完成注册的节点设备的地址信息和公钥。
本申请第六方面提供一种节点设备,该节点设备也可以简称为节点,该节点设备具有实现上述第二方面或第二方面任意一种可能实现方式或第三方面或第三方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
本申请第七方面提供一种节点设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该节点设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该节点设备执行如上述第二方面或第二方面任意一种可能实现方式或第三方面或第三方面任意一种可能实现方式的分布式***的仲裁方法。
本申请第八方面提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第二方面或第二方面任意一种可能实现方式或第三方面或第三方面任意一种可能实现方式的分布式***的仲裁方法。
本申请第九方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第二方面或第二方面任意一种可能实现方式或第三方面或第三方面任意一种可能实现方式的分布式***的仲裁方法。
本申请第十方面提供一种芯片***,该芯片***包括处理器,用于支持节点设备实现上述第二方面或第二方面任意一种可能实现方式或第三方面或第三方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片***还包括存储器,存储器,用于保存节点设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例的分布式***,包括至少三个节点设备,该至少三个节点设备分属于分布式***中的至少两个不同的业务***,该至少两个不同的业务***采用分布式一致性协议的不同实例以及采用不同的消息格式,该至少三个节点设备分别配置有适配层和转换层,其中适配层,用于将该至少三个节点设备中每个节点设备各自所采用的实例的接口转换为目标接口,或者将目标接口转换为每个节点设备各自所采用的实例的接口,目标接口为该至少两个不同的业务***中的节点设备都采用的接口。转换层,用于将经过目标接口的消息的格式转换为目标格式,该消息的格式为与每个节点设备各自所采用的格式,或者将目标格式转换为与每个节点设备各自所采用的消息格式,目标格式为与至少两个不同的业务***中的节点设备都采用的格式,目标格式的消息用于至少两个不同的业务***中各业务***间的节点设备进行通信,使得一个分布式***可以包括多个不同的业务***,实现跨业务***进行仲裁,解决需要仲裁的多个***之间因为无法通信、***之间不信任,以及协议符合度不一致等原因而无法进行跨***仲裁的问题。
附图说明
图1为本申请实施例提供的分布式***的组成结构示意图;
图2为本申请实施例提供的接口层的架构示意图;
图3为本申请实施例中分布式***的一个实施例示意图;
图4为本申请实施例中分布式***的另一个实施例示意图;
图5为本申请实施例中组建分布式***方法的一个实施例示意图;
图6为本申请实施例中分布式***仲裁方法的一个实施例示意图;
图7为本申请实施例中分布式***仲裁方法的另一个实施例示意图;
图8为本申请实施例中节点设备的硬件结构示意图;
图9为本申请实施例中节点设备的一个实施例示意图;
图10为本申请实施例中节点设备的另一个实施例示意图;
图11为本申请实施例中节点设备的另一个实施例示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请实施例提供一种分布式***,分布式***的仲裁方法,分布式***中的节点设备。使得一个分布式***可以包括多个不同的业务***,实现跨业务***进行仲裁,解决需要仲裁的多个***之间因为无法通信、***之间不信任,以及协议符合度不一致等原因而无法进行跨***仲裁的问题,以下分别进行详细说明。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
如图1所示,为本申请实施例提供的分布式***的组成结构示意图,该***可以包括:至少三个节点设备,如图1中所示的第一节点设备、第二节点设备以及第三节点设备,节点设备也可以简称为节点,这至少三个节点形成仲裁集群,仲裁集群可以整合资源,作为一个整体对外提供服务。在本申请实施例中提供的分布式***中,至少三个节点设备分属于分布式***中的至少两个不同的业务***,两个不同的业务***也可以称为异构***,两个不同的业务***可以包括两个***的操作***不同,两个***为两个不同的厂家生产的产品,两个***采用不同的开发语言或者两个***采用不同的基础软件栈等。需要说明的是,至少两个不同的业务***,可以包括两个以及两个以上的不同的业务***,至少两个不同的业务***当然不止包括第一节点设备、第二节点设备以及第三节点设备,还可以包括其他节点设备。下面以该分布式***包括两个不同的业务***以及包括三个不同的业务***进行说明:
第一种情况:第一节点设备,第二节点设备属于相同的业务***,第三节点设备属于第三业务***,其中第一业务***与第二业务***是同一业务***,第一业务***与第三业务***不同;第二种情况:第一节点设备属于第一业务***,第二节点设备属于第二业务***,第三节点设备属于第三业务***,其中第一业务***、第二业务***以及第三业务***彼此之间均不相同。需要说明的,第一种情况和第二种情况并不是对分布式***中可以包括的不同业务***的数目进行限制,仅仅是为了说明该分布式***至少包括两个不同的业务***。第一节点设备、第二节点设备以及第三节点设备之间可以通过通用RPC通信框架进行通讯,通用RPC通信框架基于的协议是RPC,该协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
第一节点设备、第二节点设备以及第三节点设备之间预先配置有相同的接口层,该接口层可以包括适配层以及转换层。图2为本申请实施例提供的接口层的架构示意图,如图2 所示,该接口层的适配层采用统一的框架适配不同业务***内部的分布式一致性协议的实例,具体的说,适配层将该至少三个节点设备中每个节点设备各自所采用的实例的接口转换为目标接口,或者将目标接口转换为每个节点设备各自所采用的实例的接口,目标接口为至少两个不同的业务***中的节点设备都采用的接口,举例说明,若分布式一致性协议采用raft协议,则raft协议的不同实例可以包括zookeeper,etcd,consul,redis,对于raft协议的不同实例可能采用了不同的通信方式,比如有的采用了传输控制协议(transmission control protocol,TCP)通信,有的采用了超文本传输协议(hyper textrransport protocol,HTTP)通信,适配层采用统一的框架可以适应不同的raft协议的不同实例的通信方式的需求。适配层将获取到的节点设备内部的分布式一致性协议的RPC消息发送到转换层,转换层将经过目标接口的消息的格式转换为目标格式,转换为目标格式之前的消息格式为与每个节点设备各自所采用的格式,或者将目标格式转换为与每个节点设备各自所采用的消息格式,目标格式为与至少两个不同的业务***中的节点设备都采用的格式,目标格式的消息用于至少两个不同的业务***中各业务***间的节点设备进行通信。
需要说明的是,在不同的应用场景下,适配层也可以被称为适配器、适配体或结构综合器等,转换层也可以被称为转换器等,目标接口也可以被称为目标窗口,通用接口、统一接口或共有接口等,相应的,每个节点设备各自所采用的实例的接口也可以被称为私有接口、专有接口或自有接口等,目标格式也可以被称为通用格式、统一格式或共有格式等,相应的,各节点设备采用的消息格式也可以被称为私有格式、专有格式或自有格式等,本申请实施例对具体名称不作限定。
目标格式的消息可以采用XML格式,或其他,比如JSON的格式,对于消息的编码方式可以采用UTF-8或其他任意一种消息的编码方式。下面给出一种采用raft协议,目标格式的消息为RPC消息,消息格式为XML格式,采用UTF-8的编码方式的一组具体代码:
<?xml version="1.0"encoding="UTF-8"?>
<vote>
<term>…</term>
<candidateId>…</candidateId>
<lastLogIndex>…</lastLogIndex/>
<lastLogTerm>…</lastLogTerm>
上述代码为RPC消息为request vote RPC的编码方式,其中<term>…</term>表示备选人任期号,<candidateId>…</candidateId>表示备选人的地址,<lastLogIndex>…</lastLogIndex/>表示备选人的最后日志条目的索引值,<lastLogTerm>… </lastLogTerm>表示备选人的最后日志条目的任期号。
针对第一种情况中的分布式***,第一业务***可以为主备双机的***,第一节点设备和第二节点设备互为主备机,主备机之间通过心跳线进行连接,以保持它们运行状态的相互感知,当主机出现故障时,内置在主备双机的软件***支持将备机切换为主机,对外提供业务服务。这样,相对于单机的***,主备双机提供了更高的业务可靠性。主备双机之间的心跳通信链路发生故障时,两台设备都可能会切换为主设备的状态,发生脑裂现象。当脑裂发生时,对外提供服务的单一入口变为两个入口,有可能导致对外服务状态的不一致,甚至业务***内部处理数据不一致,从而发生严重的***故障。在本申请实施例中,第三节点设备所属的第三业务***可以为第三方仲裁***,该第三方仲裁***也可以称为公共仲裁***,第三节点设备可以是一种嵌入式服务器。具体的说,当第一节点设备和第二节点设备出现脑裂问题时,在第三节点设备的支持下,分布式***可以采用分布式一致性协议进行分布式仲裁,确定主设备。需要说明的是,当第三节点设备是一种嵌入式服务器时,第三节点设备可以作为公共仲裁设备,比如,第一节点设备和第二节点设备为第一组主备双机***,A节点设备和B节点设备为第二组主备双机***,第三节点设备可以即为第一组主备双机***提供仲裁服务支持,也为第二组主备双机***提供仲裁服务支持,此外,需要说明的是,第一种情况中的第一业务***并不限于主备双机的***,还可以是其他的业务***,比如双数据中心***,此时第三业务***还可以是一个数据中心的高可用集群,高可用性集群是指如单***一样地运行并支持计算机持续正常运行的一个主机群。
针对第二种情况中的分布式***,第一节点设备、第二节点设备以及第三节点设备分别属于不同的业务***,举例说明,当第一业务***、第二业务***以及第三业务***需要进行分布式一致性仲裁时,比如,甲在A市建立了第一监控业务***,在B市建立了第二监控业务***,在C市建立了第三监控业务***,当甲需要对A市、B市、C市三地的监控***的视频录像进行备份处理时,第一监控业务***、第二监控业务***以及第三监控业务***三者之间需要进行服务仲裁。可以由第一监控业务***中的第一节点设备、第二监控业务***中的第二节点设备以及第三监控业务***中的第三节点设备参与仲裁,当仲裁结果确定后,第一监控业务***中的其他节点设备可以从第一节点设备中获取仲裁的结果,第二监控***中的其他节点设备可以从第二节点设备中获取仲裁的结果,第三监控***中的其他节点设备可以从第三节点设备中获取仲裁的结果。
图1为本申请实施例提供的分布式***的组成结构示意图,下面对本申请实施例提供的处于建立阶段、仲裁阶段的该分布式***的组成结构以及基于该分布式***进行仲裁的方法进行具体的介绍。
图3为本申请实施例中分布式***的一个实施例示意图,图3示出了在分布式***建立时,该分布式***的组成结构。如图3所示,在分布式***建立时,该分布式***至少包括一个用于注册的节点设备,一个待注册的节点设备,可能包括一个已经注册完成的节点设备,比如,若第一节点设备为用于注册的节点设备,相对于第一节点设备,第二节点设备可以为待注册的节点设备,第三节点设备可以为已经注册的节点设备,具体的说,第一节点接收第二节点设备发送的注册请求,注册请求中携带第二节点设备的地址信息和公钥,第一节点设备根据注册请求,记录第二节点设备的地址信息和公钥,以完成第二节点设备在第一节点设备上的注册,并向第三节点设备发送第二节点设备的地址信息和公钥,向第二节点设备发送第三节点设备的地址信息和公钥。
可选地,第一节点设备还用于生成M个分布式一致性协议的模拟实例,M为大于1的整数,根据分布式一致性协议的要求,模拟不同场景下第二节点设备与M个模拟实例进行通信,不同场景包括正常场景和故障场景,若在正常场景和故障场景第二节点设备与模拟实例都能正常通信,则第一节点设备允许第二节点设备注册。
图4为本申请实施例中分布式***的另一个实施例示意图,图4示出了在分布式***仲裁阶段时,该分布式***的组成结构。如图4所示,在分布式***仲裁阶段时,该分布式***中的任意一个节点设备,比如第一节点设备,将第一格式的远程过程调用第一RPC 消息转换为目标格式的第一RPC消息,第一RPC消息为经过第一节点设备目标接口的消息,第一格式为与第一节点设备所采用的格式,第一格式的RPC消息用于请求该分布式***中除第一节点设备之外的其他节点设备为仲裁主设备进行投票,比如在本申请实施例中,该其他节点设备为第二节点设备和第三节点设备,即请求第二节点设备、第三节点设备为仲裁主设备进行投票。以使该其他节点设备在将目标格式的第一RPC消息转换为自身所采用格式的RPC消息后为仲裁主设备进行投票,第一格式与其他节点设备自身所采用格式可以不同。
可选地,第一节点设备还用于,接收其他节点设备发送的目标格式的响应消息,响应消息中包含其他设备对仲裁主设备的投票信息,第一节点设备将目标格式的响应消息转换为第一格式的响应消息,以获取其他节点设备对仲裁主设备的投票信息,具体的说,其他节点设备发送的响应消息,先经过其他节点设备的目标窗口被发送到其他节点设备的转换层,经过转换层该响应消息被转换为目标格式,之后该目标格式的响应消息经过第一节点设备的转换层被转换为第一格式的响应消息,则第一节点设备可以获取该响应中携带的内容,第一节点设备根据投票信息,确定仲裁结果,仲裁结果用于指示第一节点设备是否能够成为主设备。
可选地,若仲裁结果指示第一节点设备成为主设备,则第一节点设备接收用户设备发送第一格式的数据内容,第一节点设备存储第一格式的数据内容,并将第一格式的数据内容封装为目标格式的第二RPC消息,第一节点设备向其他节点设备发送目标格式的第二RPC 消息,目标格式的第二RPC消息被其他节点设备转换为其他格式的数据内容进行存储。需要说明的是,图4对应的实施例中的第一节点设备可以对应于权利要求中的第三节点设备,图4对应的实施例中的其他节点设备可以对应于权利要求中的第四节点设备。
以上对本申请实施例提供的分布式***的组成结构进行了描述,下面将对组建该分布式***的方法,以及基于该分布式***仲裁的方法进行说明。
图5为本申请实施例中组建分布式***方法的一个实施例示意图。
如图5所示,本申请实施例中组建分布式***方法的一个实施例,可以包括:
501、第一节点设备接收第二节点设备发送的注册请求。
第二节点设备向第一节点设备发送注册请求,该注册请求中携带第二节点设备的地址信息和公钥。该公钥用于第二节点设备与已注册的节点设备之间进行超文本传输安全协议 (hypertext transfer protocol secure,HTTPS)通信。HTTPS是一种基于安全传输层协议 (transport layer security,TLS)建立的通讯方式,HTTPS通讯方式可以保证数据传输的安全性,此外,HTTPS通讯方式还可以使得通信在跨数据中心时能够比较容易地穿越公网或防火墙,采用HTTPS通讯的双方在建立链路前需要交换通信公钥,通讯的双方将自己的公钥发送给对方,比如,第二节点设备要与第一节点设备进行通信,第二节点设备将自己的公钥发送给第一节点设备,第一节点设备将需要发送给第二节点设备的通讯内容封装在HTTPS的消息内,并且采用第二节点设备的公钥对该消息进行加密,第二节点设备收到该消息后,再用与公钥相匹配的私钥对该消息进行解密,就可以查看该通讯内容。需要说明的是,本申请实施例列举的安全通讯过程并不是一种限制性说明,HTTPS协议还可以通过 TLS层和证书机制结合的方式实现安全通讯,本申请实施例并不对节点设备间实现安全通讯的方式进行限定。
502、第一节点设备根据注册请求,对第二节点设备是否符合分布式一致性协议进行校验。
第一节点设备生成M个分布式一致性协议的模拟实例,其中M为大于1的整数,第一节点设备根据分布式一致性协议的要求,模拟不同场景下第二节点设备与M个模拟实例进行通信,不同场景包括正常场景和故障场景,若在正常场景和故障场景下,第二节点设备与模拟实例都能正常通信,则第一节点设备允许第二节点设备注册。举例说明,raft协议是一种分布式一致性协议,假设第一节点设备在第一节点设备的内部生成2个raft协议的模拟实例,按照raft协议的要求,raft协议的实例包括三种角色,领导者,备选者以及跟随者,正常场景下,所有实例中只有一个是领导者,为了简化说明,下文中所有的领导者,备选者以及跟随者是指领导者角色的实例,备选者角色的实例以及跟随者角色的实例,实例之间通过RPC消息通信,领导者会主动发起RPC消息,该RPC消息用于心跳和日志复制,跟随者不会主动发起RPC消息,只能响应领导者发起的RPC消息。故障场景下,跟随者在预设时间内没有接收到领导者发起的RPC消息,则跟随者转换为备选者,备选者向其他实例发送RPC消息,该RPC消息用于请求其他实例为竞选领导者进行投票,如果备选者在预设时间内得到了半数以上投票,则备选者转换为领导者,若备选者在预设时间内接收到了领导者发送的RPC消息,则备选者转换为跟随者。
具体来说,raft协议把时间分为连续的任期,每个任期可以是任意时长,任期用连续的整数进行标号。每个任期首先进行领导者选举,选举时,多个备选者竞争成为领导者,一旦某个备选者成为领导者,其他节点则变回跟随者,成为领导者的节点将在该任期内一致担任领导者,如果该领导者发生故障,其他实例会在新的任期内进行选举。任何一个任期内都不会有多个领导者。raft***中,每个实例都维护着当前任期的值,每次实例间的通信都包含任期信息,每个实例在检测到自己的任期值低于其他实例,都会更新自己的任期值,设置为检测到的较高的值。当领导者和备选者发现自己的任期低于别的实例,则立即把自己转换为跟随者。raft实例的通信采用RPC调用,RPC消息包括request vote RPC 和appendentries RPC,其中request vote RPC由备选者发起,用于请求其他实例为竞选领导者进行投票。append entries RPC由领导者发起,用于心跳和日志复制。而跟随者不会发起任何RPC。
raft协议采用心跳机制触发领导者选举。当***启动时,所有实例初始化为跟随者,设置任期为0,并启动计时器,计时器超时后,跟随者转化为备选者,则增加自己的任期数,启动一个新的计时器,给自己投一票并向所有其他实例发送请求投票RPC(requestvote RPC)请求,并等待其他实例回复。如果在计时器超时前接收到多数实例的同意投票,则转换为领导者。如果接受到其他领导者的附加日志RPC(append entries RPC),说明其他领导者已经被选为领导者,则转换为跟随者。如果计时器超时之时还没有接受到以上两种信息中的任何一种,则重复步骤:增加自己的任期数,启动新的定时器,给自己投一票并向所有其他实例发送request vote RPC请求,并等待其他实例回复,进行新的选举。
一个实例在接受到多数实例的投票成为领导者后,会根据用户设备的请求,向所有实例发送append entries RPC,以使得其他实例获取该实例被选为领导者的信息。所有备选者收到该RPC后,转换为跟随者,选举结束。
每个跟随者在一个任期内只能投一票,采取先到先得的策略。每个跟随者有一个计时器,在计时器超时之时仍然没有接受到来自领导者发送的RPC,则转换为备选者,开始请求投票。也就是在当期领导者故障后,就会有跟随者开始转换为备选者开始请求投票。
上述内容举例说明了raft协议的正常场景以及故障场景下第二节点设备与模拟实例进行通信的过程,若第二节点设备可以根据接收到的第一节点设备发送的消息向第一节点设备发送响应消息,并且能正确响应第一节点设备发送的消息,则说明第二节点设备校验通过。需要说明的,在具体应用过程中,可以按照实际需求,不执行步骤502。
503、若校验通过,则第一节点设备记录第二节点设备的地址信息和公钥,以完成第二节点设备在所述第一节点设备上的注册。
504、第一节点设备向第二节点设备发送注册成功的消息。
需要说明的,在具体应用过程中,可以按照实际需求,不执行步骤504。
505、第一节点设备向已完成注册的节点设备发送第二节点设备的地址信息和公钥。
506、第二节点设备接收第一节点设备发送的已完成注册的节点设备的地址信息和公钥。
507、第一节点设备启动扩容流程。
扩容是指在原有分布式***中增加节点设备,可以在一次执行过程中增加一个节点设备或多个节点设备。将进行扩容之前的分布式***称为旧分布式***,将扩容之后的分布式***称为新分布式***。例如:旧分布式***包括管理节点设备,即第一节点设备以及已注册节点设备,比如第一节点设备、第二节点设备,增加第三节点设备和第四节点设备,扩容处理后得到的新分布式***则包含第一节点设备、第二节点设备、第三节点设备和第四节点设备。
第一节点设备记录第二节点设备的地址信息和公钥后,即第二节点设备完成注册后,第一节点设备向旧分布式***中的主设备发送扩容请求消息,主设备接收扩容请求消息后向新分布式***中的每个节点设备发送扩容操作消息,每个扩容操作消息中携带该主设备当前的任期,以使得新分布式***中的每个节点设备进行任期的更新,主设备接收新分布式***中的多个节点设备发送的响应消息,如果达到预设条件,该预设条件可以是接收到预设数目的节点设备发送的响应消息,则主设备向新分布式***中的每个节点设备发送激活消息,该激活消息中携带新分布式***中的全部节点设备的信息,以使得新分布式***中的每一个节点设备进行节点地图的更新。一个分布式***的每个节点设备本地都会缓存节点地图,节点地图中包括该节点设备所在分布式***中的所有节点设备的标识。主设备接收新分布式***中的多个节点设备完成节点地图的更新后发送的激活操作响应消息,当节点设备接收到的响应消息的个数达到预设值时,主设备将新分布式***中的全部节点设备的信息更新到自身的节点地图中。需要说明的是上述描述的仅仅是扩容流程的一种实现方式,在启动扩容流程的同时无需中断原有的分布式一致性协议的过程,在具体应用中扩容流程也可以采用也可以冷重配技术,即中断当前分布式一致性协议协商过程、更改配置信息之后重启分布式一致性***,恢复协商。
上述图5对应的实施例描述了组建分布式***的步骤,上述过程描述的是自动组建分布式***的过程,也可以选择手动组建,组建的过程与上述自动组建的过程一致,此处不再重复赘述。下面对基于该分布式***如何进行仲裁进行说明。
图6为本申请实施例中分布式***仲裁方法的一个实施例示意图。
如图6所示,本申请实施例提供的分布式***仲裁方法的一个实施例,可以包括:
601、第一节点设备将第一格式的第一RPC消息转换为目标格式的第一RPC消息。
第一节点设备为至少三个节点设备中的任意一个节点设备,第一节点设备内部包括多种消息,第一节点设备的适配层可以获取到通过该适配层的第一格式的第一RPC消息,第一格式为与第一节点设备所采用的格式,第一格式的第一RPC消息用于请求第二节点设备为仲裁主设备进行投票,第二节点设备为至少三个节点设备中除第一节点设备之外的任意一个节点设备。第一节点设备的适配层将获取到的第一格式的RPC消息发送到第一节点设备的转换层,第一节点设备的转换层将第一格式的RPC消息转换为目标格式的第一RPC消息。
602、第一节点设备向第二节点设备发送目标格式的第一RPC消息。
603、第二节点设备接收到目标格式的第一RPC消息后,将目标格式的第一RPC消息转换为第二格式的RPC消息。
604、第二节点设备根据第二格式的RPC消息为仲裁主设备进行投票,第二格式为与第二节点设备所采用的格式,第一格式与所述第二格式不同。
可选地,还可以包括如下步骤:
605、第一节点设备接收第二节点设备发送的目标格式的响应消息。
该响应消息中包含第二节点设备对仲裁主设备的投票信息。
606、第一节点设备将目标格式的响应消息转换为第一格式的响应消息。
第一节点设备将目标格式的响应消息转换为第一格式的响应消息,以获取第四设备对仲裁主设备的投票信息。
607、第一节点设备根据投票信息,确定仲裁结果。
该仲裁结果用于指示第一节点设备是否能够成为主设备。
上述图6对应的实施例说明了如何实现对不同的业务***实现跨***的仲裁,以及如何确定仲裁结果。下面将对该分布式***如何对外提供服务进行说明:
图7为本申请实施例中分布式***仲裁方法的另一个实施例示意图,图7对应的实施例为图6对应的实施例中当仲裁结果指示第一节点设备成为主设备时描述的实施例,还可以包括如下步骤:
701、第一节点设备接收用户设备发送的第一格式的数据内容。
第一节点设备接收用户设备发送的第一格式的数据内容,比如当第一节点设备成为主设备时,就开始负责接收用户设备的请求消息,每个用户设备的请求可以包含一个要被状态机执行的指令,该请求消息为第一格式,要被状态机执行的指令为数据内容。
702、第一节点设备存储第一格式的数据内容,并将第一格式的数据内容封装为目标格式的第二RPC消息。
第一节点设备要把用户设备发送的请求中携带的数据内容追加到第一节点设备的日志中,形成一个新的日志条目,并且将该数据内容封装为目标格式的第二RPC,该第二RPC 可以为append entries RPC。
703、第一节点设备向第二节点设备发送目标格式的第二RPC消息。
704、第二节点设备将该目标格式的第二RPC消息转换为第二格式的数据内容进行存储。
上述主要从各个网元之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,上述执行功能网元和控制功能网元为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,该分布式***中的节点设备可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,上述图1至图7中的节点设备可以通过图8中的节点设备来实现。图8所示为本申请实施例提供的节点设备的硬件结构示意图。该节点设备80包括至少一个处理器801,通信线路802,存储器803以及至少一个通信接口804。
处理器801可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路802可包括一通路,在上述组件之间传送信息。
通信接口804,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器803可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器 (electricallyer服务器able programmable read-only memory,EEPROM)、只读光盘 (compact discread-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路802与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器803用于存储执行本申请方案的计算机执行指令,并由处理器801来控制执行。处理器801用于执行存储器803中存储的计算机执行指令,从而实现本申请下述实施例提供的策略控制的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器801可以包括一个或多个CPU,例如图8中的CPU0和CPU1。
在具体实现中,作为一种实施例,节点设备80可以包括多个处理器,例如图8中的处理器801和处理器807。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,节点设备80还可以包括输出设备805和输入设备806。输出设备805和处理器801通信,可以以多种方式来显示信息。例如,输出设备805 可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备等。输入设备806和处理器801通信,可以以多种方式接收用户的输入。例如,输入设备806可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的节点设备80可以是一个通用设备或者是一个专用设备。在具体实现中,节点设备80可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant, PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图8中类似结构的设备。本申请实施例不限定节点设备80的类型。
本申请实施例可以根据上述方法示例对节点设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能模块的情况下,图9示出了一种节点设备的结构示意图。
如图9所示,本申请实施例提供的节点设备可以包括:
接收模块901,用于执行上述图5对应的实施例中的步骤501,506。
发送模块902,用于执行上述图5对应的实施例中的步骤504,505。
扩容模块903,用于执行上述图5对应的实施例中的步骤507。
校验模块904,用于执行上述图5对应的实施例中的步骤502。
注册模块905,用于执行上述图5对应的实施例中的步骤503。
图10示出了另一种节点设备的结构示意图。
如图10所示,本申请实施例提供的节点设备可以包括:
转换模块1001,用于执行上述图6对应的实施例中的步骤601,图6对应的实施例中的步骤606。
发送模块1002,用于执行上述图6对应的实施例中的步骤602,可选地,用于执行图7 对应的实施例中的步骤703。
接收模块1003,用于执行上述图6对应的实施例中的步骤605,可选地,用于执行图7 对应的实施例中的步骤701。
确定模块1004,用于执行上述图6对应的实施例中的步骤607。
可选地,还包括存储模块1005,用于执行上述图7对应的实施例中的步骤702。
图11示出了另一种节点设备的结构示意图。
如图11所示,本申请实施例提供的节点设备可以包括:
接收模块1101,用于执行上述图6对应的实施例中的步骤603。
选举模块1102,用于执行上述图6对应的实施例中的步骤604。
可选地,还可以包括存储模块1103,用于执行上述图7对应的实施例中的步骤704。
可选的,本申请实施例提供了一种芯片***,该芯片***包括处理器,用于支持用户面功能实体实现上述分布式***仲裁的方法。在一种可能的设计中,该芯片***还包括存储器。该存储器,用于保存节点设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
以上对本申请实施例所提供的分布式***,基于该分布式***的方法,节点设备,存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种分布式***,其特征在于,所述分布式***包括至少三个节点设备,所述至少三个节点设备分属于所述分布式***中的至少两个不同的业务***,所述至少两个不同的业务***采用分布式一致性协议的不同实例以及采用不同的消息格式,所述至少三个节点设备中每个节点设备分别配置有适配层和转换层,
所述适配层,用于对所述每个节点设备各自所采用的分布式一致性协议的不同实例的接口与目标接口进行相互转换,所述目标接口为所述至少两个不同的业务***中的节点设备都适用的接口;
所述转换层,用于对经过所述目标接口的消息的格式与目标格式进行相互转换,所述经过所述目标接口的消息的格式为所述每个节点设备各自所采用的格式,所述目标格式为所述至少两个不同的业务***中的节点设备都采用的格式,所述目标接口的消息用于所述至少两个不同的业务***中各业务***间的节点设备进行通信,以使所述分布式***为所述至少两个不同的业务***进行仲裁。
2.根据权利要求1所述的分布式***,其特征在于,所述至少三个节点设备中的第一节点设备用于:
接收第二节点设备发送的注册请求,所述注册请求中携带所述第二节点设备的地址信息和公钥,所述第一节点设备为所述至少三个节点设备中用于注册的设备,所述第二节点设备为所述至少三个节点设备中除所述第一节点设备之外的任一节点设备;
根据所述注册请求,记录所述第二节点设备的地址信息和公钥,以完成所述第二节点设备在所述第一节点设备上的注册;
向已完成注册的节点设备发送所述第二节点设备的地址信息和公钥,并向所述第二节点设备发送所述已完成注册的节点设备的地址信息和公钥。
3.根据权利要求2所述的分布式***,其特征在于,所述第一节点设备,还用于:
在所述第一节点设备内部生成M个分布式一致性协议的模拟实例,其中,M为大于1的整数;
根据分布式一致性协议的要求,模拟不同场景下所述第二节点设备与所述M个模拟实例进行通信,所述不同场景包括正常场景和故障场景;
当在正常场景和故障场景所述第二节点设备与所述模拟实例都能正常通信,则所述第一节点设备允许所述第二节点设备注册。
4.根据权利要求1所述的分布式***,其特征在于,所述至少三个节点设备中的第三节点设备,用于:
向第四节点设备发送第一RPC消息,所述第四节点设备为所述至少三个节点设备中除所述第三节点设备之外的任意一个节点设备,所述第一RPC消息为经过所述第三节点设备目标接口的消息,所述第一RPC消息用于请求所述第四节点设备为仲裁主设备投票;
接收所述第四节点设备发送的响应消息,所述响应消息中包含所述第四节点设备对仲裁主设备的投票信息,所述响应消息为经过所述第四节点设备目标接口的消息;
根据经过所述第三节点设备目标接口的所述响应消息获取所述投票信息,所述投票信息用于确定仲裁结果,所述仲裁结果用于指示所述第三节点设备是否能够成为主设备。
5.根据权利要求4所述的分布式***,其特征在于,所述第三节点设备,还用于:
当所述仲裁结果指示所述第三节点设备成为主设备,则所述第三节点设备接收用户设备发送的第三格式的数据内容;
存储所述第三格式的数据内容,并将所述第三格式的数据内容封装为目标格式的第二RPC消息;
向所述第四节点设备发送所述目标格式的第二RPC消息;
所述第四节点设备,还用于:
将接收到的所述目标格式的第二RPC消息转换为第四格式的数据内容进行存储。
6.一种分布式***的仲裁方法,其特征在于,所述分布式***包括至少三个节点设备,所述至少三个节点设备分属于所述分布式***中的至少两个不同的业务***,所述至少两个不同的业务***采用分布式一致性协议的不同实例以及采用不同的消息格式,所述方法包括:
第一节点设备将第一格式的第一RPC消息转换为目标格式的第一RPC消息,所述第一RPC消息用于请求第二节点设备为仲裁主设备进行投票,所述目标格式为所述至少两个不同的业务***中的节点设备都采用的格式,所述第一格式为所述第一节点设备所采用的格式,所述第一节点设备为所述三个节点设备中的任意一个节点设备,所述第二节点设备为所述三个节点设备中除所述第一节点设备之外的任意一个节点设备;
所述第一节点设备向所述第二节点设备发送所述目标格式的第一RPC消息;
所述第一节点设备将接收到的所述目标格式的响应消息转换为第一格式的响应消息,所述响应消息中包含所述第二节点设备对仲裁主设备的投票信息;
所述第一节点设备根据所述投票信息,确定仲裁结果,所述仲裁结果用于指示所述第一节点设备是否能够成为主设备。
7.根据权利要求6所述的仲裁方法,其特征在于,所述方法还包括:
当所述仲裁结果指示所述第一节点设备成为主设备,则所述第一节点设备接收用户设备发送第一格式的数据内容;
所述第一节点设备存储所述第一格式的数据内容,并将所述第一格式的数据内容封装为目标格式的第二RPC消息;
所述第一节点设备向所述第二节点设备发送所述目标格式的第二RPC消息,所述目标格式的第二RPC消息被所述第二节点设备转换为第二格式的数据内容进行存储。
8.根据权利要求6或7所述的仲裁方法,其特征在于,若所述第一节点设备为所述分布式***中用于仲裁注册管理的节点时,在所述第一节点设备与所述第二节点设备还未建立通信关系之前,所述方法还包括:
所述第一节点设备接收第二节点设备发送的注册请求,所述注册请求中携带所述第二节点设备的地址信息和公钥;
所述第一节点设备根据所述注册请求,记录所述第二节点设备的地址信息和公钥,以完成所述第二节点设备在所述第一节点设备上的注册;
所述第一节点设备向已完成注册的节点设备发送所述第二节点设备的地址信息和公钥,并向所述第二节点设备发送所述已完成注册的节点设备的地址信息和公钥。
9.根据权利要求8所述的仲裁方法,其特征在于,所述第一节点设备根据所述注册请求,记录所述第二节点设备的地址信息和公钥之前,所述方法还包括:
所述第一节点设备生成M个分布式一致性协议的模拟实例,所述M为大于1的整数;
所述第一节点设备根据分布式一致性协议的要求,模拟不同场景下所述第二节点设备与所述M个模拟实例进行通信,所述不同场景包括正常场景和故障场景;
当在正常场景和故障场景所述第二节点设备与所述模拟实例都能正常通信,则所述第一节点设备允许所述第二节点设备注册。
10.一种分布式***的仲裁方法,其特征在于,所述分布式***包括至少三个节点设备,所述至少三个节点设备分属于所述分布式***中的至少两个不同的业务***,所述至少两个不同的业务***采用分布式一致性协议的不同实例以及采用不同的消息格式,所述方法包括:
第二节点设备接收第一节点设备发送的目标格式的第一RPC消息,所述目标格式为所述至少两个不同的业务***中的节点设备都采用的格式,所述第二节点设备为所述至少三个节点设备中除发起仲裁的第一节点设备之外的任意一个节点设备;
所述第二节点设备将所述目标格式的第一RPC消息转换为第二格式的RPC消息;
所述第二节点设备根据所述第二格式的RPC消息为仲裁主设备进行投票,所述第二格式为所述第二节点设备所采用的格式;
所述第二节点设备向所述第一节点设备发送目标格式的响应消息,所述响应消息中包含所述第二节点设备对仲裁主设备的投票信息。
11.根据权利要求10所述的仲裁方法,其特征在于,所述方法还包括:
所述第二节点设备接收所述第一节点设备发送的目标格式的第二RPC消息,所述目标格式的第二RPC消息为所述第一节点设备为主设备时将接收到的用户设备发送的第一格式的数据内容封装后得到;
所述第二节点设备将接收到的所述目标格式的第二RPC消息转换为第二格式的数据内容进行存储。
12.根据权利要求10或11所述的仲裁方法,其特征在于,若所述第一节点设备为所述分布式***中用于仲裁注册管理的节点时,在所述第一节点设备与所述第二节点设备还未建立通信关系之前,所述方法还包括:
所述第二节点设备向所述第一节点设备发送注册请求,所述注册请求中携带所述第二节点设备的地址信息和公钥;
所述第二节点设备接收所述第一节点设备发送的已完成注册的节点设备的地址信息和公钥。
13.一种节点设备,其特征在于,所述节点设备为权利要求6至12任一所述的方法中描述的第一节点设备或第二节点设备。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机装置上运行时,使得所述计算机装置执行如权利要求6至12任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543450.XA CN111327447B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式***、仲裁方法、节点设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811543450.XA CN111327447B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式***、仲裁方法、节点设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111327447A CN111327447A (zh) | 2020-06-23 |
CN111327447B true CN111327447B (zh) | 2021-09-14 |
Family
ID=71168553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811543450.XA Active CN111327447B (zh) | 2018-12-17 | 2018-12-17 | 一种分布式***、仲裁方法、节点设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111327447B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112671934B (zh) * | 2021-03-15 | 2021-06-22 | 国网江苏省电力有限公司信息通信分公司 | 一种电力物联网*** |
CN112988876B (zh) * | 2021-04-14 | 2023-04-07 | 济南工程职业技术学院 | 一种工业数据采集管理方法及*** |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810647A (zh) * | 2014-02-13 | 2014-05-21 | 国家电网公司 | 标准消息适配器设计方法及电网集成展示平台构建方法 |
US9367410B2 (en) * | 2014-09-12 | 2016-06-14 | Facebook, Inc. | Failover mechanism in a distributed computing system |
CN106155780B (zh) * | 2015-04-02 | 2020-01-31 | 阿里巴巴集团控股有限公司 | 一种基于时间的节点选举方法及装置 |
CN106911728B (zh) * | 2015-12-22 | 2019-11-29 | 华为技术服务有限公司 | 分布式***中主节点的选取方法和装置 |
CN106301900B (zh) * | 2016-08-08 | 2019-08-23 | 华为技术有限公司 | 设备仲裁的方法和设备 |
CN108810046A (zh) * | 2017-04-28 | 2018-11-13 | 华为技术有限公司 | 一种选举领导者Leader的方法、装置及设备 |
CN108616566B (zh) * | 2018-03-14 | 2021-02-23 | 华为技术有限公司 | raft分布式***选主方法、相关设备及*** |
CN108984349B (zh) * | 2018-08-17 | 2021-10-08 | 杭州朗和科技有限公司 | 主节点选举方法及装置、介质和计算设备 |
-
2018
- 2018-12-17 CN CN201811543450.XA patent/CN111327447B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111327447A (zh) | 2020-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220079958A (ko) | 블록체인 메시지 처리 방법 및 장치, 컴퓨터 및 판독 가능한 저장 매체 | |
JP2022530580A (ja) | エッジ・コンピューティング配備におけるマルチ・エンティティ・リソース、セキュリティ、及びサービス管理 | |
WO2020062131A1 (zh) | 一种基于区块链技术的容器云管理*** | |
CN112104723B (zh) | 一种多集群的数据处理***及方法 | |
US10785088B2 (en) | Management method and management apparatus of internet of things and internet of things system | |
US20220311607A1 (en) | Key generation method and apparatus, device, and medium | |
CN112861190B (zh) | 数据跨链协同方法、***及装置 | |
CN114787781A (zh) | 用于启用高可用性受管理故障转移服务的***和方法 | |
CN107959582B (zh) | 一种切片实例的管理方法及装置 | |
US20120291090A1 (en) | Access management architecture | |
CN110113381A (zh) | 一种区块链中订阅主题的方法及装置 | |
CN106911648B (zh) | 一种环境隔离方法及设备 | |
US20200112499A1 (en) | Multiple quorum witness | |
US11656902B2 (en) | Distributed container image construction scheduling system and method | |
CN110658794A (zh) | 一种制造执行*** | |
US11948021B2 (en) | Method for inter-core communication, processor, inter-core communication system and computer readable storage medium | |
US10721335B2 (en) | Remote procedure call using quorum state store | |
CN111327447B (zh) | 一种分布式***、仲裁方法、节点设备及存储介质 | |
CN114363154A (zh) | 节点选举方法、装置、电子设备及存储介质 | |
US11797271B2 (en) | Dynamic web-based integrated development environment | |
WO2022134809A1 (zh) | 模型训练处理方法、装置、计算机设备及介质 | |
US10205545B2 (en) | Resource creation method and apparatus | |
US12047377B2 (en) | Restricted operations due to attachment of compute instances owned by different tenancies | |
US11880791B2 (en) | Attachment and detachment of compute instances owned by different tenancies | |
CN115988078A (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 |