一种分布式系统中的节点选举方法及节点的制作方法
【技术领域】
[0001] 本发明设及分布式技术领域,尤其设及一种分布式系统中的节点选举方法及节 点。
【背景技术】
[0002] 分布式技术的发展方向是去中屯、化,即不会预定义分布式系统(例如集群)的主 节点或需要完成某个任务的执行节点,而是动态选举主节点或任务的执行节点(W下将主 节点和执行节点统称为控制节点)。
[0003] 目前,分布式系统中控制节点的选举可W通过共享存储方式实现。
[0004] 共享存储方式选举控制节点是指,分布式系统的多个节点均访问系统中的共享分 区,其中成功访问到该共享分区(即取得共享分区的文件锁)的节点作为控制节点。控制节 点退出分布式系统后,其拥有的文件锁会释放掉,其余节点感知后可W发起新一轮的选举。
[0005] 其中,共享分区支持的节点数有限。当分布式系统中需要参与选举的节点数量超 过共享分区支持的节点数时,会由于访问共享分区的节点数超过共享分区支持的节点数, 导致共享分区无法正常工作,进而无法完成控制节点的选举,分布式系统无法正常工作。
【发明内容】
[0006] 本发明的目的是提供一种分布式系统中的节点选举方法及节点,W解决W共享存 储方式进行节点选举时,因受限于共享分区可支持的节点数有限,而导致的分布式系统不 能正常工作的问题。
[0007] 本发明的目的是通过W下技术方案实现的:
[000引一种分布式系统中的节点选举方法,包括:
[0009] 分布式系统中参与所述节点选举的各节点均与数据库建立第一连接,且所述各节 点通过所述第一连接访问所述数据库中的目标数据;
[0010] 成功访问到所述目标数据的节点作为控制节点,在所述分布式系统中执行相应操 作;
[0011] 其中,所述控制节点是所述数据库采用并发事务处理策略选举出的一个节点。
[0012] 其中,所述成功访问到所述目标数据的节点作为控制节点,在所述分布式系统中 执行相应操作至少包括:所述成功访问到所述目标数据的节点保持所述第一连接。
[0013] 基于上述任意方法实施例,可选的,成功访问到所述目标数据的节点作为控制节 点,在所述分布式系统中执行相应操作还包括;通过与所述数据库建立的第二连接,向所述 数据库的控制节点表中插入一条记录,所述记录包括所述控制节点的标识信息和所述标识 信息的时间戳,并周期性通过所述第二连接更新所述记录。
[0014] 相应的,未成功访问到所述目标数据的节点从所述控制节点表中获取所述控制节 点的标识信息,并根据获取的标识信息与所述控制节点建立连接。
[0015] 可选的,未成功访问到所述目标数据的节点从所述控制节点表中获取所述控制节 点的标识信息,包括:
[0016] 所述未成功访问到所述目标数据的节点确定当前时间;
[0017] 所述未成功访问到所述目标数据的节点至少一次从所述控制节点表中查找时间 戳标识的时间晚于确定的所述当前时间的控制节点的标识信息;
[0018] 所述未成功访问到所述目标数据的节点获取查找到的,且时间戳标识的时间最晚 的控制节点的标识信息。
[0019] 其中,所述未成功访问到所述目标数据的节点查找所述控制节点的标识信息的次 数不超过预定次数;所述成功访问到所述目标数据的节点更新所述记录的周期是根据所述 未成功访问到所述目标数据的节点查找所述控制节点的标识信息的时间间隔确定的。
[0020] 基于上述任意方法实施例,可选的,所述数据库中的目标数据为所述分布式系统 的标识信息,或为节点选举所对应的任务的标识信息。
[0021] 基于与方法相同的发明构思,还提供一种分布式系统中的节点,包括:
[0022] 连接建立单元,用于与数据库建立第一连接;
[0023] 选举单元,用于通过与所述第一连接访问所述数据库中的目标数据;
[0024] 第一处理单元,用于成功访问到所述目标数据后,作为控制节点在所述分布式系 统中执行相应操作;
[0025] 其中,所述控制节点是所述数据库采用并发事务处理策略选举出的一个节点。
[0026] 其中,所述第一处理单元用于:
[0027] 保持所述第一连接。
[002引可选的,所述连接建立单元还用于:与所述数据库建立第二连接。
[0029] 相应的,所述第一处理单元还用于:通过所述第二连接向所述数据库的控制节点 表中插入一条记录,所述记录包括所述控制节点的标识信息和所述标识信息的时间戳,并 周期性通过所述第二连接更新所述记录;
[0030] 相应的,所述节点还包括第二处理单元,用于;从所述控制节点表中获取所述控制 节点的标识信息,并根据获取的标识信息与所述控制节点建立连接。
[0031] 可选的,从所述控制节点表中获取所述控制节点的标识信息时,所述第二处理单 元用于:
[0032] 确定当前时间;
[0033] 至少一次从所述控制节点表中查找时间戳标识的时间晚于确定的所述当前时间 的控制节点的标识信息;
[0034] 获取查找到的,且时间戳标识的时间最晚的控制节点的标识信息。
[0035] 其中,所述未成功访问到所述目标数据的节点查找所述控制节点的标识信息的次 数不超过预定次数;所述成功访问到所述目标数据的节点更新所述记录的周期是根据所述 未成功访问到所述目标数据的节点查找所述控制节点的标识信息的时间间隔确定的
[0036] 基于上述任意节点实施例,可选的,所述数据库中的目标数据为所述分布式系统 的标识信息,或为节点选举所对应的任务的标识信息。
[0037] 本发明实施例提供的技术方案,分布式系统中参与选举的各节点均访问该数据库 中的目标数据,利用数据库的并发事务处理能力进行决策,允许其中一个节点成功访问目 标数据,从而选举出控制节点。不同配置的数据库均可W支持1万W上的节点连接,而大规 模分布式系统的节点数通常在1千左右。由于数据库支持访问的节点数远远大于分布式系 统中的节点数,因此,分布式系统中需要参与选举的节点均访问数据库时,数据库也能够选 举出控制节点,从而保证了系统正常工作。
【附图说明】
[003引图1为本发明实施例提供的一种方法流程图;
[0039] 图2为本发明实施例提供的控制节点处理流程图;
[0040] 图3为本发明实施例提供的从节点处理流程图;
[0041] 图4为本发明实施例提供的节点示意图。
【具体实施方式】
[0042] 下面将结合附图,对本发明实施例提供的技术方案进行详细说明。
[0043] 如图1所示,本发明实施例提供的分布式系统中的节点选举方法具体包括如下操 作:
[0044] 步骤100、分布式系统中参与所述节点选举的各节点均与数据库建立第一连接。
[0045] 步骤110、上述各节点通过上述第一连接访问上述数据库中的目标数据。
[0046] 现有的数据库均具备并发事务处理能力,检测及处理死连接的能力。
[0047] 由于数据库具有并发事务处理能力,因此,当多个节点均通过与数据库建立的第 一连接访问目标数据时,数据库能够通过决策允许其中一个节点成功访问该目标数据,贝U 成功访问该目标数据的节点为控制节点。而其他节点会收到访问失败的反馈。
[0048] 步骤120、成功访问到上述目标数据的节点作为控制节点,在分布式系统中执行相 应操作。
[0049]其中,成功访问到上述目标数据的节点是数据库采用并发事务处理策略选举出的 一个节点。
[0050] 本发明实施例提供的技术方案,分布式系统中参与选举的各节点均访问该数据库 中的目标数据,利用数据库的并发事务处理能力进行决策,允许其中一个节点成功访问目 标数据,从而选举出控制节点。不同配置的数据库均可W支持1万W上的节点连接,而大规 模分布式系统的节点数通常在1千左右。由于数据库支持访问的节点数远远大于分布式系 统中的节点数,因此,分布式系统中需要参与选举的节点均访问数据库时,数据库也能够选 举出控制节点,从而保证了系统正常工作。
[CK)5U另外,利用数据库的检测及处理死连接的能力,还能够在控制节点失效后,及时释 放掉失效后的控制节点对目标数据的访问权限,W使得其他节点重新发起选举。
[0化2] 本发明实施例中,如果选举分布式系统的主节点,上述数据库中的目标数据可W为节点所在分布式系统的标识信息。如果选举某个任务的执行节点,上述数据库中的目标 数据可W为节点选举所对应的任务的标识信息。
[0053]其中,可W在数据库中保存多个不同的目标数据。例如,保存不同分布式系统的标 识信息,保存不同任务的标识信息。相应的,数据库可W同时支持多个分布式系统的主节点 选举,W及多个任务的执行节点选举。
[0化4] 本发明实施例中,上述步骤120的操作至少包括;保持上述第一连接。
[0化5] 另外,上述步骤120的操作还包括作为主节点提供主节点服务,或者作为执行节 点执行某任务。
[0056] 其中,在作为主节点提供主节点服务的过程中或者作为执行节点执行某任务时, 保持上述第一连接,直至不再继续作为主节点或直至任务执行完成,则不需要继续保持上 述第一连接。
[0057] 其中,选举出的控制节点保持上述第一连接的实现方式具体可W是;不提交第一 连接上的事务,且持续(定期或不定期)通过第一连接与数据库进行交互。例如,使用第一 连接执行S化语句,W保持第一连接活跃,避免第一连接断开。其中,通过第一连接与数据 库进行交互的时间间隔不超过数据库判断第一连接断开的周期(也称时限)。
[005引其中,选举出的控制节点定期通过第一连接与数据库进行交互的周期不超过数据 库判断第一连接断开的周期。最好是小于数据库判断第一连接断开的周期。
[0059] 本发明实施例中,选举出的控制节点还可W通过与数据库建立的第二连接向数据 库的控制节点表中插入一条记录,该记录包括上述控制节点的标识信息和该标识信息的时 间戳,并周期性通过与数据库建立的第二连接更新上述记录。
[0060] 其中,如果定期通过第一连接与数