基于多种区块链节点的监控及自动切换的方法及系统
文献发布时间:2023-06-19 09:40:06
技术领域
本发明涉及区块链技术领域,具体地,涉及基于多种区块链节点的监控及自动切换的方法及系统。
背景技术
在业务系统对目前流行的,不同的区块链进行频繁的数据上链,以及对不同链上数据进行实时读取及分析的过程中,对于链节点的可用性有极高的要求。目前链节点由于服务器资源及网络抖动等各种问题,经常会发生同步数据失败导致的异常退出,或者同步块高落后等情况,需要运维人员手动处理异常。尤其是某些链节点重启时需要从第一个区块开始同步数据,同步到最新的数据需要几天甚至更久的时间,严重影响业务系统可用性。由于不同区块链实现技术不一致,接口数据存在较大差异,要实现统一数据接入及处理,需要制定复杂的数据处理策略。需要归纳,梳理出不同区块链节点部署方式及步骤的特征,提前做好容量规划,才能实现节点的自动制备。
单独的区块链节点监控程序只能反应节点运行的健康状态,后续还需要运维人员人工介入处理。通过加入节点自动切换系统,节点制备系统,能够使区块链节点在运行过程中完全脱离人工操作,不仅提高了节点RTO指标,还增加了节点的可用性,而且减少了人工误操作风险。
专利文献CN109474499A(申请号:201811635991.5)公开了一种分布式区块链监控系统的解决方法。包括如下步骤:1)在区块链网络自动部署时,加上探头组件收集数据。2)探头组件将数据推送给传输组件。3)传输组件将数据做统一处理、规整,并转发给存储组件和告警组件。4)存储组件将数据抽样后存储在时序数据库中。5)告警组件依照设置的相应阈值对多端进行告警。6)查询组件根据查询内容将抽样后数据返回给查询者。该专利的这种监控的方法,只能够做到发现异常这一步,后续还是需要人工介入排查及处理问题,在非工作时间服务质量得不到有效保障。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于多种区块链节点的监控及自动切换的系统。
根据本发明提供的一种基于多种区块链节点的监控及自动切换的系统,包括:
模块M1:节点状态采集模块采集区块链节点的运行状态信息,并将区块链节点的运行状态信息发送至信息汇聚处理模块;
模块M2:信息汇聚处理模块根据接收到的区块链节点运行状态信息计算得到区块链节点的状态特征值,并根据预设时间段内的区块链节点的状态特征值,生成区块链节点状态变更记录并保存到信息存储单元,根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值;
模块M3:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
模块M4:节点切换模块接收节点切换请求,修改代理服务配置将不健康的区块链节点相应的业务流量切换到健康的区块链节点上,并发送节点切换结果至告警模块,发送节点制备请求到节点制备模块;
模块M5:节点制备模块接收节点制备请求,根据预设的节点标签值制备区块链节点,生成请求通知节点状态采集模块将制备的区块链节点加入集群,不健康的区块链节点下线,并发送节点制备结果至告警模块。
优选地,所述模块M1中区块链节点的运行状态信息包括:节点运行服务器CPU负载、内存使用量、磁盘使用量、程序进程情况、端口是否监听和当前节点已同步区块高度。
优选地,所述模块M1中节点状态采集模块采集区块链节点的运行状态信息包括至少采集两个健康的区块链节点,两个健康节点包括提供服务给业务调用的链节点和备份链节点。
优选地,所述模块M2中信息汇聚处理模块根据接收到的节点运行状态信息计算得到区块链节点的状态特征值包括:把不同区块链节点的运行状态信息计算组合成统一格式和类型的可判断节点状态的特征值,特征值包括程序进程运行状态、已消耗的服务器资源大小、节点日志报错情况、自建节点、公网最新的区块号差值和节点资源使用量趋势。
优选地,所述模块M2中根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值包括:当节点运行服务器CPU、内存或磁盘的负载超过预设值时,则触发修改节点标签值,得到修改后的节点标签值;
所述修改后的节点标签值包括:
ψ=βαχ+β
其中,α表示节点资源最近预设天数的使用增长率;β表示当前标签值;χ表示按照χ天的容量规划计算;ψ表示修改后的节点标签值。
优选地,所述模块M3包括:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
判断计算得到的区块链节点状态特征值是否超过预设值,当区块链节点状态特征值超过预设值时,则判定当前区块链节点状态特征值不健康。
根据本发明提供的一种基于多种区块链节点的监控及自动切换的方法,包括:
步骤M1:节点状态采集模块采集区块链节点的运行状态信息,并将区块链节点的运行状态信息发送至信息汇聚处理模块;
步骤M2:信息汇聚处理模块根据接收到的区块链节点运行状态信息计算得到区块链节点的状态特征值,并根据预设时间段内的区块链节点的状态特征值,生成区块链节点状态变更记录并保存到信息存储单元,根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值;
步骤M3:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
步骤M4:节点切换模块接收节点切换请求,修改代理服务配置将不健康的区块链节点相应的业务流量切换到健康的区块链节点上,并发送节点切换结果至告警模块,发送节点制备请求到节点制备模块;
步骤M5:节点制备模块接收节点制备请求,根据预设的节点标签值制备区块链节点,生成请求通知节点状态采集模块将制备的区块链节点加入集群,不健康的区块链节点下线,并发送节点制备结果至告警模块。
优选地,所述步骤M1中区块链节点的运行状态信息包括:节点运行服务器CPU负载、内存使用量、磁盘使用量、程序进程情况、端口是否监听和当前节点已同步区块高度;
所述步骤M1中节点状态采集模块采集区块链节点的运行状态信息包括至少采集两个健康的区块链节点,两个健康节点包括提供服务给业务调用的链节点和备份链节点。
优选地,所述步骤M2中信息汇聚处理模块根据接收到的节点运行状态信息计算得到区块链节点的状态特征值包括:把不同区块链节点的运行状态信息计算组合成统一格式和类型的可判断节点状态的特征值,特征值包括程序进程运行状态、已消耗的服务器资源大小、节点日志报错情况、自建节点、公网最新的区块号差值和节点资源使用量趋势;
所述步骤M2中根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值包括:当节点运行服务器CPU、内存或磁盘的负载超过预设值时,则触发修改节点标签值,得到修改后的节点标签值;
所述修改后的节点标签值包括:
ψ=βαχ+β
其中,α表示节点资源最近预设天数的使用增长率;β表示当前标签值;χ表示按照χ天的容量规划计算;ψ表示修改后的节点标签值。
优选地,所述步骤M3包括:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
判断计算得到的区块链节点状态特征值是否超过预设值,当区块链节点状态特征值超过预设值时,则判定当前区块链节点状态特征值不健康。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过监控发现异常自动切换提供服务的节点并自动制备新的节点,从而提高了区块链节点集群提供服务的稳定性,去掉了人工操作;
2、本发明通过加入节点自动切换系统,节点制备系统,能够使区块链节点在运行过程中完全脱离人工操作,不仅提高了节点RTO指标,还增加了节点的可用性,而且减少了人工误操作风险;
3、本发明通过实现对全节点的监控以及故障后的自动恢复,能有效保障区块链节点服务稳定性,可用性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为基于多种区块链节点的监控及自动切换的系统示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于多种区块链节点的监控及自动切换的系统,包括:如图1所示,
模块M1:节点状态采集模块采集区块链节点的运行状态信息,并将区块链节点的运行状态信息发送至信息汇聚处理模块;
模块M2:信息汇聚处理模块根据接收到的区块链节点运行状态信息计算得到区块链节点的状态特征值,并根据预设时间段内的区块链节点的状态特征值,生成区块链节点状态变更记录并保存到信息存储单元,根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值;
模块M3:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
模块M4:节点切换模块接收节点切换请求,修改代理服务配置将不健康的区块链节点相应的业务流量切换到健康的区块链节点上,并发送节点切换结果至告警模块,发送节点制备请求到节点制备模块;
模块M5:节点制备模块接收节点制备请求,根据预设的节点标签值制备区块链节点,生成请求通知节点状态采集模块将制备的区块链节点加入集群,不健康的区块链节点下线,并发送节点制备结果至告警模块。
具体地,所述模块M1中区块链节点的运行状态信息包括:节点运行服务器CPU负载、内存使用量、磁盘使用量、程序进程情况、端口是否监听和当前节点已同步区块高度。
具体地,所述模块M1中节点状态采集模块采集区块链节点的运行状态信息包括至少采集两个健康的区块链节点,两个健康节点包括提供服务给业务调用的链节点和备份链节点。
具体地,所述模块M2中信息汇聚处理模块根据接收到的节点运行状态信息计算得到区块链节点的状态特征值包括:把不同区块链节点的运行状态信息计算组合成统一格式和类型的可判断节点状态的特征值,特征值包括程序进程运行状态、已消耗的服务器资源大小、节点日志报错情况、自建节点、公网最新的区块号差值和节点资源使用量趋势。
具体地,所述模块M2中根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值包括:当节点运行服务器CPU、内存或磁盘的负载超过预设值时,则触发修改节点标签值,得到修改后的节点标签值;
所述修改后的节点标签值包括:
ψ=βαχ+β
其中,α表示节点资源最近预设天数的使用增长率;β表示当前标签值;χ表示按照χ天的容量规划计算;ψ表示修改后的节点标签值。
具体地,所述模块M3包括:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
判断计算得到的区块链节点状态特征值是否超过预设值,当区块链节点状态特征值超过预设值时,则判定当前区块链节点状态特征值不健康。
根据本发明提供的一种基于多种区块链节点的监控及自动切换的方法,包括:
步骤M1:节点状态采集模块采集区块链节点的运行状态信息,并将区块链节点的运行状态信息发送至信息汇聚处理模块;
步骤M2:信息汇聚处理模块根据接收到的区块链节点运行状态信息计算得到区块链节点的状态特征值,并根据预设时间段内的区块链节点的状态特征值,生成区块链节点状态变更记录并保存到信息存储单元,根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值;
步骤M3:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
步骤M4:节点切换模块接收节点切换请求,修改代理服务配置将不健康的区块链节点相应的业务流量切换到健康的区块链节点上,并发送节点切换结果至告警模块,发送节点制备请求到节点制备模块;
步骤M5:节点制备模块接收节点制备请求,根据预设的节点标签值制备区块链节点,生成请求通知节点状态采集模块将制备的区块链节点加入集群,不健康的区块链节点下线,并发送节点制备结果至告警模块。
具体地,所述步骤M1中区块链节点的运行状态信息包括:节点运行服务器CPU负载、内存使用量、磁盘使用量、程序进程情况、端口是否监听和当前节点已同步区块高度;
所述步骤M1中节点状态采集模块采集区块链节点的运行状态信息包括至少采集两个健康的区块链节点,两个健康节点包括提供服务给业务调用的链节点和备份链节点。
具体地,所述步骤M2中信息汇聚处理模块根据接收到的节点运行状态信息计算得到区块链节点的状态特征值包括:把不同区块链节点的运行状态信息计算组合成统一格式和类型的可判断节点状态的特征值,特征值包括程序进程运行状态、已消耗的服务器资源大小、节点日志报错情况、自建节点、公网最新的区块号差值和节点资源使用量趋势;
所述步骤M2中根据节点状态变更记录通过趋势判断单元修改信息存储单元中的节点标签值包括:当节点运行服务器CPU、内存或磁盘的负载超过预设值时,则触发修改节点标签值,得到修改后的节点标签值;
所述修改后的节点标签值包括:
ψ=βαχ+β
其中,α表示节点资源最近预设天数的使用增长率;β表示当前标签值;χ表示按照χ天的容量规划计算;ψ表示修改后的节点标签值。
具体地,所述步骤M3包括:将根据节点运行状态信息计算得到的区块链节点状态特征值通过告警模块判断区块链节点状态特征值的健康状态,当不健康时,则生成切换请求,并将切换请求发送至节点切换模块;
判断计算得到的区块链节点状态特征值是否超过预设值,当区块链节点状态特征值超过预设值时,则判定当前区块链节点状态特征值不健康。
实施例2是实施例1的变化例
通过监控,自动切换,自动制备不同区块链链节点的方式保障区块链节点的可用性,降低故障恢复时间。
对于加入系统的区块链节点,必须保证至少两个正常节点运行,一个提供服务给业务调用,一个作为备份。另外需要提前给节点打上标签,编写好标签值包含的脚本,标签值包括:
节点名,例如:BTC
节点异常处理策略,例如:restart|initialization|rebuild
节点重启脚本名,例如:BTC_Restart.sh
节点初始化脚本名,例如:BTC_Initialization.sh
节点重建脚本名,例如:BTC_rebuild.sh
需要的cpu数,例如:4x2.5GHZ
需要的内存大小,例如:16GRAM
需要的数据盘大小,例如:500GSSD
系统包括:
节点状态采集模块:用于采集区块链节点的运行状态信息,包括节点运行服务器CPU负载,内存使用量,磁盘使用量,程序进程情况,端口是否监听,当前节点已同步区块高度,并把信息推送到信息汇聚处理模块,接收节点制备模块请求;
信息汇聚处理模块:用于接收从节点状态采集模块采集的节点信息,并通过计算单元对信息作计算处理得到节点特征值,生成节点状态变更记录并保存到信息存储单元,通过趋势判断单元修改信息存储单元中节点标签,节点健康状态判断(对节点采集模块采集的节点每项特征值,预先设置阈值,超过阈值则判定为不健康),生成告警请求(告警请求包含链节点服务器IP,超过阈值的特征值详情)发送到告警模块,如节点健康状态判定为不健康,生成切换请求(切换请求包含当前使用链节点IP+Port,备份链节点IP+Port)发送到节点切换模块;
告警模块:用于接收信息汇聚处理模块,节点制备模块以及节点切换模块的告警数据,发送告警到指定的告警装置;
节点切换模块:用于从信息汇聚处理模块接收节点切换请求,修改代理服务配置把业务流量切换到正常的区块链节点上,并发送节点切换结果(业务流量是否成功切换到正常节点上,值为successed或failed)至告警模块,发送节点制备请求到节点制备模块;
节点制备模块:从节点切换模块接受请求,根据节点标签值制备区块链节点,生成请求通知节点状态采集模块新节点加入集群,老节点下线。发送通知(节点制备是否完成,值为successed或fai led)至告警模块;
计算单元把不同链节点的各种类型数据计算组合成统一格式和类型的可判断节点状态的特征值,包括程序进程运行状态,已消耗的服务器资源大小,节点日志报错情况,自建节点和公网最新的区块号差值,节点资源使用量趋势。
趋势判断单元用于用于计算节点运行服务器资源使用趋势,修改节点标签由节点运行服务器CPU,内存,磁盘任一负载超过70%时触发,新的标签值公式决定:节点资源使用最近5天使用增长率α,当前标签值β,修改后标签值ψ,按照χ天的容量规划计算:ψ=βαχ+β
信息存储单元用于存储节点特征值,节点状态变更记录。
业务应用通过代理服务访问区块链节点集群
系统运行流程:
S1:节点状态采集模块从区块链节点集群采集各节点信息
S2:节点状态采集模块把采集到的数据发送给信息汇聚处理模块
S3:信息汇聚处理模块处理完信息后如有告警信息则发送到告警模块
S4:信息汇聚处理模块处理完信息后判断是否有节点异常,如有节点异常则发送节点切换请求到节点切换模块
S5:节点切换模块接收到节点切换的请求后发送命令到代理服务修改提供服务的节点地址
S6:节点切换模块发送节点切换结果给告警模块
S7:节点切换成功后通知节点状态采集模块原节点下线,从采集列表中删除
S8:节点切换模块切换节点成功后发送请求到节点制备模块请求新增节点
S9:节点制备模块创建新节点成功后,通知节点状态采集模块采集新增节点的信息
S10:节点制备模块接收到新增节点需求后根据需要新增节点的标签值创建新的区块链节点
S11:节点制备模块发送节点制备情况到告警模块
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
- 基于多种区块链节点的监控及自动切换的方法及系统
- 基于多种区块链节点的监控及自动切换的方法及系统