本发明属于区块链技术领域,具体涉及eos节点通过访问etcd集群实现节点自动接入和转出的方法。
背景技术:
在区块链eos节点部署中,当eos节点的启动时,都需要加载配置信息,当有新节点接入时,需要重启服务器加载配置,当某个节点出现故障后,该节点的信息依然存在eos节点中,所以在eos加载配置和自动管理节点方面存在以下四个缺点:(1)服务启动时需要加载配置信息,这些配置信息每个服务都差不多,如果通过读取配置文件进行配置会存在要写多份配置文件,造成资源浪费;(2)当配置文件更改时,每个节点的配置文件都要更改,且更改配置后,需要重启服务后才能生效,让配置极不灵活,使部署难度增加;(3)新节点接入时,需要从新写配置文件,造成部署步骤繁琐;(4)当有节点出现故障时,没有将故障节点剔除,造成无用的连接,增加网络消耗。因此解决上述问题是本领域技术人员亟需解决的。
技术实现要素:
本发明的目的在于提供eos节点通过访问etcd集群实现节点自动接入和转出的方法,主要解决现有技术中存在的eos节点重新接入时步骤繁琐,同时eos节点故障后不能自动转出增加网络消耗的问题。
为了实现上述目的,本发明采用的技术方案如下:
eos节点通过访问etcd集群实现节点自动接入和转出的方法,包括如下步骤:
1)引入注册中心etcd进行注册;
2)eos节点通过配置共享方式获取配置列表进行启动,当每个节点启动时,所有配置都需要在注册中心etcd进行注册,通过eos节点与注册中心etcd服务保持长连接,并通过注册中心etcd进行监控节点的状态,同时其他要启动的节点的所有配置都从注册中心etcd进行获取;
3)新节点接入时,自动获取配置进行启动,并与其它节点实现同步配置,同时所有节点的配置通过注册中心etcd进行监测;
4)当启动的某节点故障后,etcd服务自动剔除故障节点信息,实现eos节点的自动剔除;
5)当有新节点进入或剔除某故障节点后使得配置改变时,程序自动更新配置列表,同时通知所有在线的eos节点自动获取最新配置。
进一步地,所述步骤2中的配置共享包括三阶段,分别为:
a:eos启动时,动态向注册中心etcd注册所有配置信息;
b:在eos做p2p连接时,所有ip和port从注册中心etcd中读取;
c:eos节点有改变时,需要从注册中心etcd重新获取最新配置列表数据。
进一步地,所述步骤3中新节点接入包括三阶段,分别为:
a:当有新节点接入时,首先注册本节点配置,然后直接从注册中心etcd获取配置新列表;
b:其他节点监测到目录变化,通知已在线的eos节点有新的节点需要连接;
c:eos其他节点做p2p连接时从注册中心etcd获取最新配置列表数据。
具体地,所述步骤4中某节点故障时,处理包括四个阶段,分别为:
a:所有eos节点与注册中心etcd服务保持长连接,通过每个节点带过期时间的key值和定时器固定时间段内刷新key值保持长连接;
b:监测除本节点之外的所有节点,对每个节点的key值启动监测事件;
c:当某个节点故障后,此节点就不会对key值持续刷新,将触发监测事件,事件触发后,删除注册中心etcd服务上故障节点的配置,并把故障节点的ip和port通知给其他节点;
d:eos其他节点收到通知,重新获取最新配置列表数据。
与现有技术相比,本发明具有以下有益效果:
(1)本发明在有新的eos节点接入时可以自动获取配置进行启动,同时所有节点的配置通过注册中心etcd进行监测,避免了像现有技术一样需要重新配置文件,从而造成部署步骤繁琐的情况发生,相对于现有技术本发明在eos新节点接入时步骤简单。
(2)本发明中当有节点故障时,可以自动剔除故障节点,实现eos节点的访问和节点的自动化管理,同时当有配置改变时,程序自动更新配置列表,同时通知所有在线的eos节点自动获取最新配置,从而减轻了网络消耗和负载能力,使得整个网络运行更为通畅。
附图说明
图1为本发明的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,本发明的实施方式包括但不限于下列实施例。
实施例
如图1所示,eos节点通过访问etcd集群实现节点自动接入和转出的方法,包括如下步骤:
引入注册中心etcd进行注册;eos节点通过配置共享方式获取配置列表进行启动,其中配置共享包括在eos启动时,动态向注册中心etcd注册所有配置信息,在eos做p2p连接时,所有ip和port从注册中心etcd中读取,eos其他节点在做p2p连接时从注册中心etcd获取最新配置列表数据,当每个节点启动时,所有配置都需要在注册中心etcd进行注册,通过eos节点与注册中心etcd服务保持长连接,并通过注册中心etcd进行监控节点的状态,同时其他要启动的节点的所有配置都从注册中心etcd进行获取。
当有新节点接入时,首先注册本节点配置,然后直接从注册中心etcd获取配置新列表,其他节点监测到目录变化,通知已在线的eos节点有新的节点需要连接,eos其他节点做p2p连接时从注册中心etcd获取最新配置列表数据,自动获取配置进行启动,并与其它节点实现同步配置,同时所有节点的配置通过注册中心etcd进行监测;所有eos节点与注册中心etcd服务保持长连接,通过每个节点带过期时间的key值和定时器固定时间段内刷新key值保持长连接,除本节点之外的所有节点,对每个节点的key值启动监测事件,某个节点故障后,此节点就不会对key值持续刷新,将触发监测事件,并删除注册中心etcd服务上的出故障的节点的配置,并把故障节点的ip和port通知给其他节点,eos其他节点收到通知,重新获取最新配置列表数据。
当有新节点进入或剔除某故障节点后使得配置改变时,程序自动更新配置列表,同时通知所有在线的eos节点自动获取最新配置。通过上述方法,本发明实现了新节点的自动接入和故障的节点自动删除的功能,从而有效地提高了配置的灵活性,不会造成部署步骤的繁琐,同时删除故障的节点,避免其他节点的无用连接,同时减轻了网络的消耗。
上述实施例仅为本发明的优选实施例,并非对本发明保护范围的限制,但凡采用本发明的设计原理,以及在此基础上进行非创造性劳动而做出的变化,均应属于本发明的保护范围之内。