CN103347086B - 基于分布式协商算法的协同内核构建方法 - Google Patents
基于分布式协商算法的协同内核构建方法 Download PDFInfo
- Publication number
- CN103347086B CN103347086B CN201310292264.4A CN201310292264A CN103347086B CN 103347086 B CN103347086 B CN 103347086B CN 201310292264 A CN201310292264 A CN 201310292264A CN 103347086 B CN103347086 B CN 103347086B
- Authority
- CN
- China
- Prior art keywords
- service node
- daily record
- write
- node
- main service
- 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
Abstract
本发明公开了一种基于分布式协商算法的协同内核构建技术。协同内核是构建数据中心应用的一个关键元素,它部署于数据中心内的多个服务节点上。客户节点将请求发送给主服务节点:若请求属于读请求,主服务节点本地处理读请求;若请求属于写请求,主服务节点将该请求作为一条记录写入称为“副本日志”的数据结构中。副本日志基于滑动窗口技术,并通过分布式协商算法维护全局相同的日志记录。数据中心的计算设备是不可靠的,从服务节点基于副本日志检测主服务节点是否失效,并基于副本日志通过分布式协商算法选出新的主服务节点。本发明中的技术能够有效地构建协同内核,并且在典型的数据中心的环境中,能够保证很高的可用性。
Description
技术领域
本发明属于计算机应用领域,针对由大量不可靠设备组成的数据中心环境,基于分布式协商算法实现分布式协同内核的构建。
背景技术
计算与通信技术的高速发展加速了互联网应用在人们日常生活中的普及,而在数据中心内构建高效可靠的数据中心应用是支持高质量互联网应用的重要保障。在数据中心中,一类重要服务是协同服务,它对构建数据中心应用起着支撑作用。协同服务有很多种形式,而协同内核的主要目标是用来支撑这些不同形式的协同服务的构建。基于协同内核,可以高效地构建各种不同的协同服务。
协同内核是构建数据中心应用的一个关键元素,其主要挑战在于如何在同时满足数据一致性(协同内核的一个必要性质)和网络分隔容忍性(容忍节点出现类似宕机、网络断连等错误情况)的前提下,尽量保证协同内核的可用性(系统能够正常为客户提供服务)。
为了解决该问题,申请人设计了基于分布式协商算法的协同内核构建技术,该技术能够有效地构建协同内核,并且在典型的数据中心的环境中,能够保证很高的可用性。
发明内容
本发明提供了一种基于分布式协商算法的技术,该技术用于构建协同内核,其主要包括以下步骤:
1)数据中心包含三类节点:主服务节点,从服务节点,以及客户节点。主服务节点接收到客户节点发出的请求后,根据请求的类型,进入步骤2)或者步骤3)。
2)主服务节点处理客户节点发出的写请求。
3)主服务节点处理客户节点发出的读请求。
4)数据中心中的设备不可靠,当主服务节点无法正常运作时,协同内核将自动地在所有从服务节点中选出一个新的主服务节点,继续为客户节点提供服务。
协同内核的系统结构如图1所示。
上述步骤1)的具体过程为:
11)客户节点通过某种方式获知主服务节点的地址,并将操作请求通过网络协议封装在数据包中,然后发送给主服务节点。由于协同内核由不可靠的设备组成,所以原有的主服务节点可能无法正常工作。为了应对上述异常情况,需要动态地在所有从服务节点中选出新的主服务节点,以继续为客户节点提供服务。某些客户节点可能无法及时知晓新的主服务节点地址,其可能将请求发送给从服务节点。如果主服务节点接收到客户请求,进入步骤12)。如果从服务节点接收到客户请求,进入步骤13)。
12)主服务节点从数据包中解析出客户节点的操作请求。操作请求分为两种:写请求和读请求。如果是写请求,则进入步骤2),如果是读请求,则进入步骤3)。
13)从服务节点从数据包中解析出客户节点的操作请求后,不对该请求做任何处理,并向客户节点返回错误信息,告知该客户节点其主节点地址信息有误。出错信息通过网络协议封装在数据包中。
上述步骤2)的具体过程为:
21)根据读请求包含的信息,读取相应的数据。需要通过某种并发控制技术保证读取结果的正确性。
22)向客户节点返回读取结果,读取结果通过网络协议封装在数据包中。上述步骤3)的具体过程为:
31)将写请求作为一条日志记录写入副本日志的尾端。
副本日志是如下的一种数据结构:
副本日志类似于传统的本地日志,日志内部存储了连续的记录,其中每条记录由唯一的记录位置标记。同时,日志内部包含了一个指示当前读写位置的指针。当对副本日志成功执行读写操作后,该指针指向下一个读写位置。与本地日志的不同之处在于,副本日志是一个全局日志。所有的服务节点都包含一个副本日志,并且这些副本日志存储了相同的记录。
32)系统设置一个时间参数T,该参数用于限定上述写入操作的完成时间。如果写入操作在T时间内成功执行,以小幅增加的方式对时间参数T进行更新,并进入步骤33)。如果未能在T时间内成功执行,主服务节点自动地降级为从服务节点,同时向客户节点返回出错信息,出错信息通过网络协议封装在数据包中。副本日志的写入操作按如下方式执行:
副本日志维护一个滑动窗口,窗口大小W为一固定值。滑动窗口将副本日志分为三个部分:在滑动窗口左边的部分为已成功写入的日志记录,滑动窗口覆盖的部分为正在写入的日志记录,在滑动窗口右边的部分为待写入的日志记录。随着滑动窗口中的日志记录不断地成功写入,滑动窗口向右移动,原本处于待写入状态的日志记录开始进入写入操作过程。副本日志以正在写入的日志记录为算法参数P,尝试执行一次在所有服务节点之间的分布式协商算法,以使正在写入的日志记录更新到所有服务节点上。分布式协商算法是一种分布式算法,所有服务节点都会参与其中。当分布式协商算法产生协商结果后,写入操作成功执行。
33)根据写请求包含的信息,写入相应的数据。需要通过某种并发控制技术保证写入结果的正确性。
34)向客户节点返回写入成功信息,该信息通过网络协议封装在数据包中。
上述步骤4)的具体过程为:
41)根据步骤31),副本日志记录了客户节点发出的所有写请求。从服务节点通过读取副本日志来更新数据。根据步骤32),当主服务节点不断地接收到客户节点发出的写请求时,它会连续地向副本日志中写入记录。从服务节点通过能否成功地从副本日志中读取记录来判断主服务节点是否仍然正常工作。系统设置一个时间参数T',该参数用于限定从服务节点对副本日志执行读操作的完成时间。如果读操作在T'内成功执行,从服务节点根据读取的记录更新本地数据,同时以小幅增加的方式更新时间参数T'。如果未能在T'内成功执行,进入步骤42)。
42)向副本日志中写入一条特殊的记录,该条记录表明该从服务节点尝试成为新的主服务节点。写入操作的执行方式按照步骤32)。如果写入操作成功执行,该从服务节点执行如下三个操作:提升自己为新的主服务节点,初始化时间参数T,并将副本日志的读写指针重置到在当前位置之后的第W个位置。如果写入操作未能成功执行,重新进入步骤41)。
附图说明
图1为本发明的描述协同内核的系统结构。
图2为本发明的描述副本日志。
图3为本发明的描述副本日志写入操作的执行方式。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。
本发明为协同内核的实现提供了一种基于分布式协商算法的技术。整个系统的系统结构如图1所示。整个系统的工作流程具体如下:
1)协同内核提供一组通用接口,而协同服务基于该组接口实现。协同服务运行于客户节点,而协同内核运行于服务节点。客户节点向主服务节点发送请求,该请求对应于协同内核所提供的接口。
2)主服务节点处理客户节点发出的请求,根据请求的类型,执行不同的处理过程。待请求处理完毕后,返回给客户节点处理结果。
3)由于数据中心中的设备不可靠,当主服务节点无法正常运作时,系统自动地在所有从服务节点中选出一个新的主服务节点,它继续为客户节点提供服务。
下面,通过如下的一个具体实例来对本发明的技术方案进行详细的说明。选用一个典型的应用案例——锁服务。锁服务是一个典型的协同服务,主要用于协同对共享资源的并发访问,其在实际场景中有着广泛的应用。锁服务主要提供三个操作,加锁操作,解锁操作和查询操作。
1)硬件环境:
在数据中心中部署着大量的服务节点,这些服务节点通过高速局域网连接。同时,数据中心的设备是不可靠的设备,服务节点可能宕机,连接这些服务节点的网络设备也可能发生故障导致网络的断连。在这些服务节点中,选择部分节点用于运行协同内核,另外选择部分节点用于运行锁服务,剩余的节点运行着其他应用。
2)系统运行过程:
假设协同内核提供了如下三个接口(API),GET(读接口),PUT(写接口)和TESTANDSET(条件写接口),其中条件写接口仅在某个条件C满足时才会执行写操作。上述接口可以方便地实现锁服务。
a)实现加锁操作:加锁操作首先检测锁是处于“锁定状态”还是“非锁定状态”。若为“非锁定状态”,则将锁的状态设置为“锁定状态”。若为“锁定状态”,则不做任何操作。锁服务使用协同内核的接口TESTANDSET完成加锁操作,其中条件C为:锁是否处于“非锁定状态”。由于TESTANDSET的类型属于写操作,其按照步骤2)执行。
b)实现解锁操作:解锁操作将锁设置为“非锁定状态”。锁服务使用协同内核的接口PUT完成解锁操作。由于PUT的类型属于写操作,其按照步骤2)执行。
c)实现查询操作:查询操作返回锁的状态,即“锁定状态”或者“非锁定状态”。锁服务使用协同内核的接口GET完成查询操作。由于GET的类型属于读操作,其按照步骤3)执行。
以上所述,仅是本发明的实施例,并非对本发明作任何限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、变更以及等效步骤变化,均属于本发明技术方案的保护范围。
Claims (5)
1.一种基于分布式协商算法的协同内核构建方法,其特征在于包括如下步骤:
步骤1、数据中心包含三类节点:主服务节点,从服务节点,以及客户节点;协同内核包含主服务节点和从服务节点;主服务节点接收到客户节点发出的操作请求后,根据操作请求的类型,进入步骤2或者步骤3;
步骤2、主服务节点处理客户节点发出的读请求;
步骤3、主服务节点处理客户节点发出的写请求;
其中步骤3的具体过程为:
步骤3-1、将写请求作为一条日志记录写入副本日志的尾端;
步骤3-2、系统设置一个时间参数T,该参数用于限定上述写入操作的完成时间;如果写入操作在T时间内成功执行,以小幅增加的方式对时间参数T进行更新,并进入步骤3-3;如果未能在T时间内成功执行,主服务节点自动地降级为从服务节点,同时向客户节点返回出错信息,出错信息通过网络协议封装在数据包中;
步骤3-3、根据写请求包含的信息,写入相应的数据;需要通过并发控制技术保证写入结果的正确性;
步骤3-4、向客户节点返回写入成功信息,该信息通过网络协议封装在数据包中;
步骤4、数据中心中的设备不可靠,当主服务节点无法正常运作时,协同内核将自动地在所有从服务节点中选出一个新的主服务节点,继续为客户节点提供服务;
其中步骤4的具体过程为:
步骤4-1、根据步骤3-1,副本日志记录了客户节点发出的所有写请求;从服务节点通过读取副本日志来更新数据;根据步骤3-2,当主服务节点不断地接收到客户节点发出的写请求时,它会连续地向副本日志中写入记录;从服务节点通过能否成功地从副本日志中读取记录来判断主服务节点是否仍然正常工作;系统设置一个时间参数T',该参数用于限定从服务节点对副本日志执行读操作的完成时间;如果读操作在T'内成功执行,从服务节点根据读取的记录更新本地数据,同时以小幅增加的方式更新时间参数T';如果未能在T'内成功执行,进入步骤4-2;
步骤4-2、向副本日志中写入一条特殊的记录,该条记录表明该从服务节点尝试成为新的主服务节点;写入操作的执行方式按照步骤3-2;副本日志维护一个滑动窗口,窗口大小W为一固定值;如果写入操作在T时间内成功执行,该从服务节点执行如下三个操作:提升自己为新的主服务节点,初始化时间参数T,并将副本日志的读写指针重置到在当前位置之后的第W个位置;如果写入操作未能在T时间内成功执行,重新进入步骤4-1。
2.根据权利要求1所述的基于分布式协商算法的协同内核构建方法,其特征在于步骤1的具体过程为:
步骤1-1、客户节点获知主服务节点的地址,并将操作请求通过网络协议封装在数据包中,然后发送给主服务节点;由于协同内核由不可靠的设备组成,所以原有的主服务节点可能无法正常工作;为了应对上述异常情况,需要动态地在所有从服务节点中选出新的主服务节点,以继续为客户节点提供服务;某些客户节点可能无法及时知晓新的主服务节点地址,其可能将操作请求发送给从服务节点;如果主服务节点接收到客户操作请求,进入步骤1-2;如果从服务节点接收到客户操作请求,进入步骤1-3;
步骤1-2、主服务节点从数据包中解析出客户节点的操作请求;操作请求分为两种:写请求和读请求;如果是读请求,则进入步骤2,如果是写请求,则进入步骤3;
步骤1-3、从服务节点从数据包中解析出客户节点的操作请求后,不对该操作请求做任何处理,并向客户节点返回错误信息,告知该客户节点其主服务节点的地址信息有误;错误信息通过网络协议封装在数据包中。
3.根据权利要求1所述的基于分布式协商算法的协同内核构建方法,其特征在于步骤2的具体过程为:
步骤2-1、根据读请求包含的信息,读取相应的数据;需要通过并发控制技术保证读取结果的正确性;
步骤2-2、向客户节点返回读取结果,读取结果通过网络协议封装在数据包中。
4.根据权利要求1所述的基于分布式协商算法的协同内核构建方法,其特征在于,副本日志是如下的一种数据结构:
副本日志类似于传统的本地日志,副本日志内部存储了连续的记录,其中每条记录由唯一的记录位置标记;同时,副本日志内部包含了一个指示当前读写位置的指针;当对副本日志成功执行读写操作后,该指针指向下一个读写位置;与传统的本地日志的不同之处在于,副本日志是一个全局日志;所有的服务节点都包含一个副本日志,并且这些副本日志存储了相同的记录。
5.根据权利要求1所述的基于分布式协商算法的协同内核构建方法,其特征在于,副本日志的写入操作按如下方式执行:
副本日志维护一个滑动窗口,窗口大小W为一固定值;滑动窗口将副本日志分为三个部分:在滑动窗口左边的部分为已成功写入的日志记录,滑动窗口覆盖的部分为正在写入的日志记录,在滑动窗口右边的部分为待写入的日志记录;随着滑动窗口中的日志记录不断地成功写入,滑动窗口向右移动,原本处于待写入状态的日志记录开始进入写入操作过程;副本日志以正在写入的日志记录为算法参数P,尝试执行一次在所有服务节点之间的分布式协商算法,以使正在写入的日志记录更新到所有服务节点上;分布式协商算法是一种分布式算法,所有服务节点都会参与其中;当分布式协商算法产生协商结果后,写入操作成功执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292264.4A CN103347086B (zh) | 2013-07-11 | 2013-07-11 | 基于分布式协商算法的协同内核构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310292264.4A CN103347086B (zh) | 2013-07-11 | 2013-07-11 | 基于分布式协商算法的协同内核构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103347086A CN103347086A (zh) | 2013-10-09 |
CN103347086B true CN103347086B (zh) | 2016-06-29 |
Family
ID=49281860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310292264.4A Active CN103347086B (zh) | 2013-07-11 | 2013-07-11 | 基于分布式协商算法的协同内核构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103347086B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105915391B (zh) * | 2016-06-08 | 2019-06-14 | 国电南瑞科技股份有限公司 | 基于单阶段提交并具备自恢复功能的分布式键值存储方法 |
CN107844405B (zh) * | 2017-10-12 | 2021-11-19 | 华为技术有限公司 | 日志处理方法及装置、服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6650647B1 (en) * | 1998-09-11 | 2003-11-18 | International Business Machines Corporation | Systems, apparatus and methods for data distribution and display |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
CN102024044A (zh) * | 2010-12-08 | 2011-04-20 | 华为技术有限公司 | 分布式文件系统 |
CN102253869A (zh) * | 2010-05-19 | 2011-11-23 | 微软公司 | 可缩放的容错元数据服务 |
-
2013
- 2013-07-11 CN CN201310292264.4A patent/CN103347086B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6650647B1 (en) * | 1998-09-11 | 2003-11-18 | International Business Machines Corporation | Systems, apparatus and methods for data distribution and display |
CN101252603A (zh) * | 2008-04-11 | 2008-08-27 | 清华大学 | 基于存储区域网络san的集群分布式锁管理方法 |
CN102253869A (zh) * | 2010-05-19 | 2011-11-23 | 微软公司 | 可缩放的容错元数据服务 |
CN102024044A (zh) * | 2010-12-08 | 2011-04-20 | 华为技术有限公司 | 分布式文件系统 |
Non-Patent Citations (1)
Title |
---|
《一种基于副本机制的智能存储系统I/O优化方法》;刘霖等;《沈阳工业大学学报》;20120731;第34卷(第4期);正文第438-445页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103347086A (zh) | 2013-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11675774B2 (en) | Remote policy validation for managing distributed system resources | |
CN102340533B (zh) | 多租户系统及多租户系统存取数据的方法 | |
US10454786B2 (en) | Multi-party updates to distributed systems | |
US20150189030A1 (en) | Message processing method, device and system for Internet of Things | |
CN106357432B (zh) | 基于web服务器的混合式虚拟主机管理平台 | |
US11356541B2 (en) | Managing network sockets | |
CN108063813B (zh) | 一种集群环境下密码服务网络并行化的方法与系统 | |
CN107391758A (zh) | 数据库切换方法、装置及设备 | |
CN109669709A (zh) | 一种区块链升级的数据迁移方法及数据迁移系统 | |
US10855637B2 (en) | Architecture for large data management in communication applications through multiple mailboxes | |
CN108243079A (zh) | 一种基于vpc进行网络访问的方法与设备 | |
WO2015106656A1 (zh) | 一种跨数据中心的数据同步方法 | |
CN102142032A (zh) | 一种分布式文件系统的数据读写方法及系统 | |
CN104040995B (zh) | 多媒体重定向方法以及多媒体服务器以及计算机系统 | |
CN106790187A (zh) | 基于总分架构的系统集成方法 | |
CN103150225B (zh) | 基于应用级代理的对象并行存储系统磁盘满异常容错方法 | |
US20230239358A1 (en) | Method for fowarding data, device, storage medium and data transmission system | |
CN112148219A (zh) | 一种ceph类型的分布式存储集群设计方法及装置 | |
CN103347086B (zh) | 基于分布式协商算法的协同内核构建方法 | |
CN106302667A (zh) | 代码管理系统及方法 | |
JP2009524859A (ja) | 対象保存装置に基づいた対象引用方法とシステム | |
US20140297801A1 (en) | Method, apparatus and system for simultaneously transmitting or receiving multiple managed objects | |
US8725765B2 (en) | Hierarchical registry federation | |
CN114741441A (zh) | 多类型存储引擎对象存储系统、方法和计算机可读介质 | |
Carreton et al. | Software abstractions for mobile RFID‐enabled applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |