一种基于区块链技术的数据链路追踪的方法
文献发布时间:2023-06-19 11:45:49
技术领域
本发明涉及大数据和物联网技术领域,具体涉及一种基于区块链技术的数据链路追踪的方法和一种分布式服务器群。
背景技术
随着大数据、物联网的蓬勃发展,为了应对各种复杂的业务,系统架构也从单机大型软件演化成分布式微服务。微服务构建在不同的系统软件集上,这些软件服务模块可能是由不同的团队开发,可能使用不同的编程语言来实现,还可能分布式部署在多台服务器上。随着服务规模的增加同时也带来了运维的复杂度和昂贵的运维成本。数据链路追踪是一个有效的运维方式。如何解决数据链路的追踪成为一个复杂的问题。
分布式微服务系统构建在不同的软件集或分布式服务器上,如果一个服务出现问题,可能导致产品的某个业务无法使用。如何快速定位分布式服务故障显得尤为重要。但是大量的微服务以及分布式服务节点使得运维难度提高,运维复杂度增加。
发明内容
为解决大量的微服务以及分布式服务器节点使得运维难度提高,运维复杂度增加的技术问题,本申请提供一种基于区块链技术的数据链路追踪的方法和一种分布式服务器群,下面具体说明。
根据第一方面,一种实施例中提供一种基于区块链技术的数据链路追踪的方法,应用于分布式服务器群,所述分布式服务器群包括多个分布式服务器,所述分布式服务器上部署有区块链网络,各分布式服务器为所述区块链网络上的节点,所述分布式服务器上部署有一个或多个微服务,所述方法包括:
当所述分布式服务器群中的任意一个分布式服务器需要与所述分布式服务器群中分布式服务器进行微服务交互时,则作为发起微服务交互的分布式服务器,构建一交互单并通过其私钥对该交互单进行签名和向所述区块链网络广播;其中所述交互单包含作为所述微服务交互接收方的分布式服务器的公钥、有关所述微服务交互的信息;
作为所述微服务交互接收方的分布式服务器,对所述交互单进行相应响应;
接收到写区块任务的分布式服务器根据所述交互单进行打包以写入区块链,以形成业务链路信息;
各分布式服务器同步区块链,以供业务链路信息的查询。
一实施例中,所述接收到写区块任务的分布式服务器通过下述方式被选出:
所述分布式服务器群中各分布式服务器定时进行负载同步;
负载最低的分布式服务器被选举作为所述接收到写区块任务的分布式服务器。
一实施例中,所述方法还包括:当所述交互单满足所述区块链网络的达成条件时,作为所述微服务交互接收方的分布式服务器才对所述交互单进行相应响应,以及接收到写区块任务的分布式服务器才根据所述交互单进行打包以写入区块链;
所述达成条件包括:所述区块链网络上超过一半的节点确认所述交互单。
一实施例中,所述有关所述微服务交互的信息,包括微服务的ID,微服务交互的描述;所述业务链路信息包括:基于业务的交互日志、异常日志、告警日志,增加业务会话ID、业务服务ID、时间戳信息等中的任意一者或多者。
一实施例中,所述方法还包括:当客户端需要对业务链路信息进行查询时,根据路由距离客户端最近的分布式服务器会被找到,以供客户端对区块链进行同步下载和利用查询条件匹配到需要查询的业务链路信息。
根据第二方面,一种实施例中提供一种分布式服务器群,包括:多个分布式服务器,所述分布式服务器上部署有区块链网络,各分布式服务器为所述区块链网络上的节点,所述分布式服务器上部署有一个或多个微服务;
当所述分布式服务器群中的任意一个分布式服务器需要与所述分布式服务器群中分布式服务器进行微服务交互时,则作为发起微服务交互的分布式服务器,构建一交互单并通过其私钥对该交互单进行签名和向所述区块链网络广播;其中所述交互单包含作为所述微服务交互接收方的分布式服务器的公钥、有关所述微服务交互的信息;
作为所述微服务交互接收方的分布式服务器,对所述交互单进行相应响应;
接收到写区块任务的分布式服务器根据所述交互单进行打包以写入区块链,以形成业务链路信息;
各分布式服务器同步区块链,以供业务链路信息的查询。
依据上述实施例的一种基于区块链技术的数据链路追踪的方法和分布式服务器群,由于记录的信息是相对有效的信息,节省了后续收集过滤的工作,使得相比于日志,本申请的链路信息更简要,信息更明确,查询时无需太多复杂的条件;又因为利用了区块链技术对信息进行了同步,所以相比于ELK或其他基于日志的方案日志是分布在各个服务器或微服务上的,彼此有差异,在应用的时候才进行选择性关联,本申请区块链的方案是各个服务器处于同步状态,而且省略了过滤关联的复杂开发;还因为区块链的开发共享机制,让本申请业务端不再受限于对某个服务的日志访问权限,所有的信息会进行同步,业务端可以方便的通过路由到最近的服务器上进行数据获取,进行关联实现链路追踪业务展示。
附图说明
图1为一种实施例的区块链结构设计示意图;
图2为一种实施例的基于区块链技术的数据链路追踪的方法的流程图;
图3为一种实施例的微服务架构示意图;
图4为一种实施例的基于区块链技术的数据链路追踪的方法中的“接收到写区块任务的分布式服务器的选举”的流程图;
图5为一种实施例的基于区块链技术的数据链路追踪的方法中的“判断交互单是否达成条件”的流程图;
图6为一种实施例中分布式服务器群的逻辑结构图;
图7为一种实施例中分布式服务器群业务链路追踪示例图;
图8为一种实施例中分布式服务器群业务链路追踪示例时序图;
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
本发明中一些术语名词解释:
数据链路:在数据通信网中,按一种链路协议的技术要求连接两个或多个数据站的电信设施,称为数据链路,简称数据链。
分布式系统:分布式系统(distributed system)是建立在网络之上的软件系统。
链路追踪:链路追踪(Tracing Analysis)是分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率的技术实现。
区块链:区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”和“集体维护”等特征。
常见的链路追踪方案都要经过“收集”→“关联”→“存储”→“查询”。如Zabbix方案:需要agent把各个服务的“日志”推到server端,server端进行整合关联后,存储在ES中,供应用查询使用。基于这样的特性,发明人考虑引入区块链,因为区块链天生具有完成这样的任务功能。发明人把分布式服务器组装成区块链网络(类似于比特币网络),服务器承担写块的功能(矿机)。系统微服务可以当做是比特币的拥有者,服务之间的业务交互类似于比特币的交易。当需要完成一个业务交互(交易)时,业务触发端发出一条广播到分布式服务器网络。隔一段时间系统根据系统网络中的服务器负载赋予负载较低的服务器完成“写块”的权利,把业务记录写入区块链网络。写入区块链的业务交互信息具有“全程留痕”、“可追溯”、“集体维护”的特性,达到方便追踪数据流转和定位问题的目的,从而实现对系统的运维诊断。具体如下:
(1)在分布式服务器上部署区块链网络“本地链”或者“私有链”。用于记录数据链路数据。例如采用如“Hardhat”、“Truffle”、“Brownie”等项目来完成“本地链”或者“私有链”的搭建。
(2)将需要做链路追踪的业务服务赋予记录链路信息的功能,即产生有效信息的权利,进行业务交互时记录必要信息,并且携带校验信息(信息的有效性:一般有摘要加密信息和公钥)以广播的形式发布到分布式服务器网络中。
(3)分布式服务器网络中的服务器接收到信息后,利用定时器和负载同步等机制,如:每分钟做一次服务器负载同步,根据负载情况选出有权记录的服务器。被选中的服务器完成对广播接收到的业务信息进行打包和写入区块链网络。
(4)在查询链路时,设计一种选举的方式如:根据路由找到距离客户端最近的服务器,对区块链进行同步下载,在用查询条件(起止时间、业务类型等)匹配到需要查询的链路信息展开应用展示,如:链路拓扑图等。
本申请查询溯源功能基于区块链的溯源机制来完成。一些实施方式中,任务主要在于定义区块链网络服务器节点,摘要信息的定义,私钥、公钥的选择等,从而来让我们的系统具备区块链的特性从而完成链路追踪的应用。参考上述步骤(1)至(4),具体实施步骤或过程如下:
(1)区块链网络的实现搭建:如上所述,可以采用如“Hardhat”、“Truffle”、“Brownie”等项目来完成“本地链”或者“私有链”的搭建。
(2)结合具体应用系统的分布式规模及部署,完成区块链网络的部署。
(3)定义自己的区块链元素,如:服务器作为区块链网络节点,微服务作为业务有效信息产生的“交易用户”,区块链结构的设计如图1所示,定义我们的“工作量证明机制”如:可以用定时器和负载信息作为选举条件,等等。
(4)设计我们的业务链路信息,怎么的信息可以用于追溯数据链路。如:基于业务交互日志,异常日志、告警日志等,增加业务会话ID,业务服务ID、时间戳信息等。
(5)根据具体业务要求评估是否需要解决类似“比特币”中的一些“双花问题”、“拜占庭问题”、“一致性”等问题——当然这个步骤不是必需的。
本发明相比目前Zabbix或者其他基于ELK的方案有如下优点:1、记录的信息本来就是一个相对有效的信息,节省了ELK做的后续收集过滤的工作。相比日志,链路信息更简要,信息更明确,查询时无需太多复杂的条件。2、利用区块链技术对信息进行了同步。相比ELK或者其他基于日志的方案日志是分布在各个服务器或者微服务上的,彼此有差异,在应用的时候才进行选择性关联。区块链的方案是各个服务器同步的一个状态,而且省略了过滤关联的复杂开发。3、区块链的开放共享机制,让业务端不再受限于对某个服务的日志访问权限。所有的信息会进行同步,业务端可以方便的通过路由到最近的服务器上进行数据获取,进行关联实现链路追踪业务展示。
下面对本发明进行具体的说明。
实施例一:
请参考图2,本发明一实施例中提供一种基于区块链技术的数据链路追踪的方法,应用于分布式服务器群,所述分布式服务器群包括多个分布式服务器,所述分布式服务器上部署有区块链网络,各分布式服务器为所述区块链网络上的节点,所述分布式服务器上部署有一个或多个微服务,例如,图3为一种实施例的微服务架构示意图,所述方法包括步骤S110-S140。
步骤S110:当所述分布式服务器群中的任意一个分布式服务器需要与所述分布式服务器群中分布式服务器进行微服务交互时,则作为发起微服务交互的分布式服务器,构建一交互单并通过其私钥对该交互单进行签名和向所述区块链网络广播。其中,所述交互单包含作为所述微服务交互接收方的分布式服务器的公钥、有关所述微服务交互的信息,所述进行微服务交互的微服务发起方和微服务接收方可以部署在不同的分布式服务器上,也可以部署在同一个分布式服务器上。在一实施例中,区块链通过“Hardhat”、“Truffle”或“Brownie”框架进行私有链的搭建。
在一些实施例中,所述有关所述微服务交互的信息,包括微服务的ID,微服务交互的描述。具体地,微服务交互例如从微服务1到微服务2,那么有关所述微服务交互的信息中,微服务的ID就包括微服务1的ID和微服务2的ID,微服务交互的描述,即微服务1到微服务2,需要交互或进行的内容。可以理解地,微服务1和微服务2可以是在同一个分布式服务器中,也可是在不同的分布式服务器。
步骤S120:作为所述微服务交互接收方的分布式服务器,对所述交互单进行相应响应。
步骤S130:接收到写区块任务的分布式服务器根据所述交互单进行打包以写入区块链,以形成业务链路信息。
在一实施例中,所述业务链路信息包括:基于业务的交互日志、异常日志、告警日志,增加业务会话ID、业务服务ID、时间戳信息等中的任意一者或多者。
在一实施例中,请参照图4,步骤S130还包括接收到写区块任务的分布式服务器的选举步骤S133-S135。
步骤S133:分布式服务器群中各分布式服务器定时进行负载同步。
步骤S135:负载最低的分布式服务器被选举作为接收到写区块任务的分布式服务器。
在一实施例中,请参照图5,在步骤S120与步骤S130之前还包括判断交互单是否达成条件的步骤S200:当所述交互单满足所述区块链网络的达成条件时,作为所述微服务交互接收方的分布式服务器才对所述交互单进行相应响应,以及接收到写区块任务的分布式服务器才根据所述交互单进行打包以写入区块链。所述达成条件包括:区块链网络上超过一半的节点确认所述交互单。
步骤S140:各分布式服务器同步区块链,以供业务链路信息的查询。例如,当客户端需要对业务链路信息进行查询时,根据路由距离客户端最近的分布式服务器会被找到,以供客户端对区块链进行同步下载和利用查询条件匹配到需要查询的业务链路信息。
实施例二:
本发明一实施例中提供一种分布式服务器群,包括:多个分布式服务器,所述分布式服务器上部署有区块链网络,各分布式服务器为所述区块链网络上的节点,所述分布式服务器上部署有一个或多个微服务。例如,图6为一种实施例中分布式服务器群的逻辑结构图。
当所述分布式服务器群中的任意一个分布式服务器需要与所述分布式服务器群中分布式服务器进行微服务交互时,则作为发起微服务交互的分布式服务器,构建一交互单并通过其私钥对该交互单进行签名和向所述区块链网络广播;其中所述交互单包含作为所述微服务交互接收方的分布式服务器的公钥、有关所述微服务交互的信息。所述进行微服务交互的微服务发起方和微服务接收方可以部署在不同的分布式服务器上,也可以部署在同一个分布式服务器上。在一实施例中,区块链通过“Hardhat”、“Truffle”或“Brownie”框架进行私有链的搭建。
作为所述微服务交互接收方的分布式服务器,对所述交互单进行相应响应。
接收到写区块任务的分布式服务器根据所述交互单进行打包以写入区块链,以形成业务链路信息。
在一实施例中,分布式服务器群中各分布式服务器定时进行负载同步,负载最低的分布式服务器被选举作为接收到写区块任务的分布式服务器。例如,每分钟进行一次服务器负载同步,根据负载情况选出有权记录的服务器,被选中的服务器完成对广播接收到的业务信息进行打包和写入区块链网络。
在一实施例中,在接收方分布式服务器对交互单进行响应和接收到写区块任务的分布式服务器进行打包前对交互单进行交互单判断,当所述交互单满足所述区块链网络的达成条件时,作为所述微服务交互接收方的分布式服务器才对所述交互单进行相应响应,以及接收到写区块任务的分布式服务器才根据所述交互单进行打包以写入区块链。所述达成条件包括:区块链网络上超过一半的节点确认所述交互单。
各分布式服务器同步区块链,以供业务链路信息的查询。
在一实施例中,所述有关所述微服务交互的信息,包括微服务的ID,微服务交互的描述;所述业务链路信息包括:基于业务的交互日志、异常日志、告警日志,增加业务会话ID、业务服务ID、时间戳信息等中的任意一者或多者。
在一实施例中,当客户端需要对业务链路信息进行查询时,根据路由距离客户端最近的分布式服务器会被找到,以供客户端对区块链进行同步下载和利用查询条件匹配到需要查询的业务链路信息。
下面通过一个示例来举例说明本发明一实施例中提出的分布式服务器群的业务链路追踪流程,如图7所示,为本发明一实施例中分布式服务器群的业务链路追踪示例,包括:
(1)服务器6中的微服务1到微服务2发生了业务交互。
(2)构建交互单并通过私钥对该交互单进行签名。
(3)向分布式服务器群内所有服务器进行携带摘要信息、加密数据和公钥的广播。
(4)通过定时负载同步,选出负载最低的服务器2来获得写入执行权。
(5)服务器2根据交互单进行打包以写入区块链,形成业务链路信息。
图8为上述示例的业务链路追踪时序图。
以上就是本发明基于区块链技术的数据链路追踪的方法和分布式服务器群的一些说明。本发明旨在通过区块链的技术实现对数据链路的追踪或追溯,方便对系统故障快速做出诊断。通过在分布式服务器上部署区块链,利用区块链技术对系统的链路信息进行记录,并且使用区块链的可追溯等特性完成链路追踪的功能,也可以解决诸如“双花问题”、“拜占庭问题”、“一致性”等一些问题,达到方便追踪数据流转和定位问题的目的,从而实现对系统的运维诊断。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。
- 一种基于区块链技术的数据链路追踪的方法
- 一种基于区块链技术的异常追踪方法及其系统