区块链中的代理服务配置方法及代理服务系统与流程

文档序号:31794922发布日期:2022-10-14 17:05阅读:541来源:国知局
区块链中的代理服务配置方法及代理服务系统与流程

1.本技术实施例涉及区块链技术领域,特别涉及一种区块链中的代理服务配置方法及代理服务系统。


背景技术:

2.区块链由n个链节点共同构成,应用层可以通过与某个链节点建立rpc(remote procedure call,远程过程调用)连接,再与该链节点进行数据交换。
3.当应用层与链节点之间因网络连接原因而导致事件失败、网络连接不可用、获取的账本低于共识块高等问题时,需要对应用层进行改造,这样,应用层不仅需要专注于链使用,还需要专注于因环境设施、网络等场景带来的事务问题,从而加大了应用层的开发难度。


技术实现要素:

4.本技术实施例提供了一种区块链中的代理服务配置方法及代理服务系统,用于解决对应用层进行改造,使得应用层不仅需要专注于链使用,还需要专注于因环境设施、网络等场景带来的事务问题,从而加大了应用层的开发难度的问题。所述技术方案如下:
5.一方面,提供了一种区块链中的代理服务配置方法,用于包括服务端和客户端的代理服务系统中,所述方法包括:
6.所述服务端获取所述服务端中具有多个流量入口的端口的端口信息,根据所述端口信息配置端口监听;
7.所述服务端配置与应用层的第一连接规则,并配置与所述客户端的第二连接规则;
8.所述客户端获取所述区块链上的各个链节点的节点信息,根据所述节点信息配置与各个链节点建立的长连接并维护;
9.所述客户端获取负载均衡策略和服务发现协议,根据所述服务发现协议和所述负载均衡策略进行配置;
10.所述客户端和所述服务端配置内部监听事件;
11.所述客户端配置自定义监听事件;
12.在根据所述第一连接规则与所述应用层建立长连接并在端口监听到事件后,所述服务端根据所述第二连接规则与所述客户端建立长连接,所述客户端根据所述事件确定调用对应的链节点,根据所述负载均衡选择长连接以进行网络调用和响应。
13.在一种可能的实现方式中,所述服务端配置与应用层的第一连接规则,包括:
14.所述服务端利用shake设置长连接在终止之前完成协商握手的允许时间,并配置侦听和调度的第一连接规则。
15.在一种可能的实现方式中,所述配置与所述客户端的第二连接规则,包括:
16.所述服务端采用handlerregistry注册拦截器,并在所述拦截器中配置用于对所
述客户端进行身份验证的第二连接规则。
17.在一种可能的实现方式中,所述根据所述节点信息配置与各个链节点建立的长连接并维护,包括:
18.所述客户端配置节点解析器工厂resolverfactory;
19.所述客户端将链节点网络地址socketaddress注册至节点解析器resolver,所述socketaddress用于建立socket对象;
20.所述客户端根据所述resolver动态与所述链节点建立长连接;
21.所述客户端将所述长连接添加到长连接保持池中,并对所述长连接保持池进行维护。
22.在一种可能的实现方式中,所述根据所述服务发现协议和所述负载均衡策略进行配置,包括:
23.所述客户端利用loadbalancingpolicy自定义负载均衡策略,并将所述负载均衡策略注册到stock通道构建器中;
24.所述客户端利用所述stock通道构建器进行长连接的探针维护;
25.所述客户端根据所述服务发现协议配置各项发现服务。
26.在一种可能的实现方式中,所述客户端利用所述stock通道构建器进行长连接的探针维护,包括:
27.当所述stock通道构建器由provider的hardcodedclasses实现时,所述客户端利用所述provider中的accessor判断所述链节点的地址的可用性。
28.在一种可能的实现方式中,所述内部监听事件包括ready事件、headers事件、message事件和halfclose事件。
29.在一种可能的实现方式中,所述客户端配置自定义监听事件,包括:
30.所述客户端配置重试事件、最大流持续时间事件和故障注入事件,所述重试事件是在所述链节点不可用而导致负载失败后的策略重试,所述最大流持续时间事件是指定路由流允许持续时间和调整超时,所述故障注入事件是测试服务对于不同形式的故障的弹性。
31.一方面,提供了一种区块链中的代理服务系统,所述代理服务系统中包括服务端和客户端;
32.所述服务端,用于获取所述服务端中具有多个流量入口的端口的端口信息,根据所述端口信息配置端口监听;
33.所述服务端,还用于配置与应用层的第一连接规则,并配置与所述客户端的第二连接规则;
34.所述客户端,用于获取所述区块链上的各个链节点的节点信息,根据所述节点信息配置与各个链节点建立的长连接并维护;
35.所述客户端,还用于获取负载均衡策略和服务发现协议,根据所述服务发现协议和所述负载均衡策略进行配置;
36.所述客户端和所述服务端,还用于配置内部监听事件;
37.所述客户端,还用于配置自定义监听事件;
38.在根据所述第一连接规则与所述应用层建立长连接并在端口监听到事件后,所述
服务端,还用于根据所述第二连接规则与所述客户端建立长连接,所述客户端,还用于根据所述事件确定调用对应的链节点,根据所述负载均衡选择长连接以进行网络调用和响应。
39.在一种可能的实现方式中,所述服务端,还用于:
40.利用shake设置长连接在终止之前完成协商握手的允许时间,并配置侦听和调度的第一连接规则。
41.在一种可能的实现方式中,所述服务端,还用于:
42.采用handlerregistry注册拦截器,并在所述拦截器中配置用于对所述客户端进行身份验证的第二连接规则。
43.在一种可能的实现方式中,所述客户端,还用于:
44.配置节点解析器工厂resolverfactory;
45.将链节点网络地址socketaddress注册至节点解析器resolver,所述socketaddress用于建立socket对象;
46.根据所述resolver动态与所述链节点建立长连接;
47.将所述长连接添加到长连接保持池中,并对所述长连接保持池进行维护。
48.在一种可能的实现方式中,所述客户端,还用于:
49.利用loadbalancingpolicy自定义负载均衡策略,并将所述负载均衡策略注册到stock通道构建器中;
50.利用所述stock通道构建器进行长连接的探针维护;
51.根据所述服务发现协议配置各项发现服务。
52.在一种可能的实现方式中,所述客户端,还用于:
53.当所述stock通道构建器由provider的hardcodedclasses实现时,利用所述provider中的accessor判断所述链节点的地址的可用性。
54.在一种可能的实现方式中,所述内部监听事件包括ready事件、headers事件、message事件和halfclose事件。
55.在一种可能的实现方式中,所述客户端,还用于:
56.配置重试事件、最大流持续时间事件和故障注入事件,所述重试事件是在所述链节点不可用而导致负载失败后的策略重试,所述最大流持续时间事件是指定路由流允许持续时间和调整超时,所述故障注入事件是测试服务对于不同形式的故障的弹性。
57.本技术实施例提供的技术方案的有益效果至少包括:
58.通过配置服务端的端口监听、第一连接规则和第二连接规则,配置客户端与区块链中的各个链节点的长连接并维护、配置客户端的负载均衡策略和服务发现协议,配置服务端和客户端的内部监听事件、配置客户端的自定义监听事件,这样,应用层只需关注链使用即可,且能够适配多需求场景,提高应用层服务的容错率以及高可用概率。
附图说明
59.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
60.图1是本技术一个实施例提供的区块链中的代理服务配置方法的方法流程图;
61.图2是本技术一个实施例提供的区块链的应用系统的用户注册方法的方法流程图;
62.图3是本技术一个实施例提供的区块链的代理服务系统的结构框图。
具体实施方式
63.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
64.请参考图1,其示出了本技术一个实施例提供的区块链中的代理服务配置方法的方法流程图,可以应用于包括服务端和客户端的代理服务系统中。该区块链中的代理服务配置方法,可以包括:
65.步骤101,服务端获取服务端中具有多个流量入口的端口的端口信息,根据端口信息配置端口监听。
66.一般来说,服务端在进程层面暴露的端口只有一个,但是,我们可以在进程所在机器或者流量网络上配置一层反向代理,从而将其他的流量一起转进该端口内,简单来说,就是一个端口可以具有多个流量入口。
67.在启动服务端后,服务端可以获取的端口的端口信息,再创建netty、managed等通道(channel),利用这些通道来进行端口监听。
68.步骤102,服务端配置与应用层的第一连接规则,并配置与客户端的第二连接规则。
69.服务端既需要与应用层建立长连接,也需要与客户端建立长连接,这样,服务端才能将应用层发送的数据转发给客户端,或者,将客户端发送的数据转发给应用层。
70.本实施例中,可以分别配置第一连接规则和第二连接规则,服务端可以根据第一连接规则来创建与应用层的长连接,根据第二连接规则来创建与客户端的长连接。
71.步骤103,客户端获取区块链上的各个链节点的节点信息,根据节点信息配置与各个链节点建立的长连接并维护。
72.步骤104,客户端获取负载均衡策略和服务发现协议,根据服务发现协议和负载均衡策略进行配置。
73.负载均衡策略可以包括但不限于:pickfirst、roundrobin、ringhash、lb。
74.服务发现协议可以是xds协议。
75.客户端可以根据负载均衡策略实现负载均衡,根据服务发现协议发现各项服务。
76.步骤105,客户端和服务端配置内部监听事件。
77.客户端和服务端需要各自配置内部监听事件。
78.步骤106,客户端配置自定义监听事件。
79.步骤107,在根据第一连接规则与应用层建立长连接并在端口监听到事件后,服务端根据第二连接规则与客户端建立长连接,客户端根据事件确定调用对应的链节点,根据负载均衡选择长连接以进行网络调用和响应。
80.服务端先与应用层建立长连接,在对端口进行监听且监听到事件时,与客户端建立长连接,并将该事件发送给客户端,客户端在监听到该事件后,根据该事件确定所需调用
的链节点,再根据负载均衡来选择对应的长连接以进行网络调用和响应。
81.综上所述,本技术实施例提供的区块链中的代理服务配置方法,通过配置服务端的端口监听、第一连接规则和第二连接规则,配置客户端与区块链中的各个链节点的长连接并维护、配置客户端的负载均衡策略和服务发现协议,配置服务端和客户端的内部监听事件、配置客户端的自定义监听事件,这样,应用层只需关注链使用即可,且能够适配多需求场景,提高应用层服务的容错率以及高可用概率。
82.请参考图2,其示出了本技术一个实施例提供的区块链中的代理服务配置方法的方法流程图,可以应用于包括服务端和客户端的代理服务系统中。该区块链中的代理服务配置方法,可以包括:
83.步骤201,服务端获取服务端中具有多个流量入口的端口的端口信息,根据端口信息配置端口监听。
84.一般来说,服务端在进程层面暴露的端口只有一个,但是,我们可以在进程所在机器或者流量网络上配置一层反向代理,从而将其他的流量一起转进该端口内,简单来说,就是一个端口可以具有多个流量入口。
85.在启动服务端后,服务端可以获取的端口的端口信息,再创建netty、managed等通道(channel),利用这些通道来进行端口监听。
86.步骤202,服务端利用shake设置长连接在终止之前完成协商握手的允许时间,并配置侦听和调度的第一连接规则。
87.本实施例中,服务端可以预先配置第一连接规则,以便于后续根据第一连接规则来创建与应用层的长连接。
88.这里所说的第一连接规则可以包括但不限于:重试规则、数据大小限制、白名单等。
89.步骤203,服务端采用handlerregistry注册拦截器,并在拦截器中配置用于对客户端进行身份验证的第二连接规则。
90.本实施例中,服务端可以配置第二连接规则,以便于后续根据第二连接规则来创建与客户端的长连接。
91.这里所说的身份验证的验证内容可以是校验信息、http请求头等等,本实施例不作限定。
92.在注册拦截器时,服务端还可以自定义呼叫(call)的自有逻辑。
93.步骤204,客户端获取区块链上的各个链节点的节点信息,根据节点信息配置与各个链节点建立的长连接并维护。
94.具体的,根据节点信息配置与各个链节点建立的长连接并维护,可以包括:客户端配置节点解析器工厂resolverfactory;客户端将链节点网络地址socketaddress注册至节点解析器resolver,socketaddress用于建立socket对象;客户端根据resolver动态与链节点建立长连接;客户端将长连接添加到长连接保持池中,并对长连接保持池进行维护。
95.其中,客户端可以实现name、forwarding、dns等方式的resolverfactory,将inet、unix、domain等方式的socketaddress进行绑定并注册至resolver。其中,resolverfactory是节点解析器工厂,后续开始(start)后动态建立通信。socketaddress是链节点网络地址,用于建立socket对象。
96.客户端可以将创建的长连接添加到长连接保持池中,并对长连接保持池进行维护,从而减少创建连接所消耗的资源。
97.由于本实施例中由客户端与链节点建立长连接,所以,在网络连接不通时,可以对客户端进行重试改造,而无需对应用层进行重试改造,从而降低了应用层的开发难度。
98.步骤205,客户端获取负载均衡策略和服务发现协议,根据服务发现协议和负载均衡策略进行配置。
99.客户端可以根据负载均衡策略实现负载均衡,根据服务发现协议发现各项服务。
100.具体的,根据服务发现协议和负载均衡策略进行配置,可以包括:客户端利用loadbalancingpolicy自定义负载均衡策略,并将负载均衡策略注册到stock通道构建器中;客户端利用stock通道构建器进行长连接的探针维护;客户端根据服务发现协议配置各项发现服务。
101.负载均衡策略可以包括但不限于:pickfirst、roundrobin、ringhash、lb。loadbalancingpolicy为负载均衡策略配置,包含以下职责:
102.1)从节点解析器接收更新的配置和链节点的地址列表;
103.2)根据链节点的地址创建子管道并管理它们的连接行为,这里所说的子管道即为长连接;
104.3)设置管道的整体连接,通常通过聚合其子管道的连接状态来计算;
105.4)对于在通道上发送的每个rpc,确定在哪个子通道上发送rpc。
106.客户端利用stock通道构建器进行长连接的探针维护,可以包括:当stock通道构建器由provider的hardcodedclasses实现时,客户端利用provider中的accessor判断链节点的地址的可用性。由于客户端与链节点建立的是长连接,所以,可以通过探针维护来确定长连接的可用性,从而可以实时删除不可用的长连接,以节省资源。
107.服务发现协议可以是xds协议。这里所说的发现服务可以包括但不限于:监听器发现服务(lds)、路由发现服务(rds)、集群发现服务(cds)、集群成员发现服务(eds)、聚合发现服务(ads)、健康度发现服务(hds)等。客户端可以通过多种方式获取数据资源,比如监听指定文件,订阅grpc流以及轮询相应的rest api等。
108.步骤206,客户端和服务端配置内部监听事件。
109.客户端和服务端需要各自配置内部监听事件。其中,内部监听事件包括ready事件、headers事件、message事件和halfclose事件。
110.服务端需要通过监听内部监听事件来获取应用层的数据,并将该数据转发给客户端。
111.客户端使用的grpc是通过protobuf流传输数据,这就需要在监听内封装数据以及等待链节点的网络响应。
112.步骤207,客户端配置重试事件、最大流持续时间事件和故障注入事件,重试事件是在链节点不可用而导致负载失败后的策略重试,最大流持续时间事件是指定路由流允许持续时间和调整超时,故障注入事件是测试服务对于不同形式的故障的弹性。
113.其中,retry(重试)事件是进行节点多数不可用时负载失败后的策略重试。maximumstreamduration(最大流持续时间)事件是指定路由流允许持续时间,调整超时等。faultinjection(故障注入)事件可用于测试微服务对不同形式故障的弹性,从而提供分级
不同故障场景的能力。
114.步骤208,在根据第一连接规则与应用层建立长连接并在端口监听到事件后,服务端根据第二连接规则与客户端建立长连接,客户端根据事件确定调用对应的链节点,根据负载均衡选择长连接以进行网络调用和响应。
115.服务端先与应用层建立长连接,在对端口进行监听且监听到事件时,与客户端建立长连接,并将该事件发送给客户端,客户端在监听到该事件后,根据该事件确定所需调用的链节点,再根据负载均衡来选择对应的长连接以进行网络调用和响应。
116.本实施例中,客户端可以通过维护的长连接获取各个链节点的账本,并对各个链节点的账本进行比对,若确定部分链节点的账本与其他链节点的账本不同,则确定这部分链节点的账本低于共识块高,无法从这部分节点中获取最新块高,从而可以删除或重建与这部分节点的长连接。
117.综上所述,本技术实施例提供的区块链中的代理服务配置方法,通过配置服务端的端口监听、第一连接规则和第二连接规则,配置客户端与区块链中的各个链节点的长连接并维护、配置客户端的负载均衡策略和服务发现协议,配置服务端和客户端的内部监听事件、配置客户端的自定义监听事件,这样,应用层只需关注链使用即可,且能够适配多需求场景,提高应用层服务的容错率以及高可用概率。
118.请参考图3,其示出了本技术一个实施例提供的区块链中的代理服务系统的结构框图,该区块链中的代理服务系统,可以包括服务端310和客户端320;
119.服务端310,用于获取服务端310中具有多个流量入口的端口的端口信息,根据端口信息配置端口监听;
120.服务端310,还用于配置与应用层的第一连接规则,并配置与客户端320的第二连接规则;
121.客户端320,用于获取区块链上的各个链节点的节点信息,根据节点信息配置与各个链节点建立的长连接并维护;
122.客户端320,还用于获取负载均衡策略和服务发现协议,根据服务发现协议和负载均衡策略进行配置;
123.客户端320和服务端310,还用于配置内部监听事件;
124.客户端320,还用于配置自定义监听事件;
125.在根据第一连接规则与应用层建立长连接并在端口监听到事件后,服务端310,还用于根据第二连接规则与客户端320建立长连接;
126.客户端320,还用于根据事件确定调用对应的链节点,根据负载均衡选择长连接以进行网络调用和响应。
127.在一个可选的实施例中,服务端310,还用于利用shake设置长连接在终止之前完成协商握手的允许时间,并配置侦听和调度的第一连接规则。
128.在一个可选的实施例中,服务端310,还用于采用handlerregistry注册拦截器,并在拦截器中配置用于对客户端320进行身份验证的第二连接规则。
129.在一个可选的实施例中,客户端320,还用于:
130.配置节点解析器工厂resolverfactory;
131.将链节点网络地址socketaddress注册至节点解析器resolver,所述
socketaddress用于建立socket对象;
132.根据resolver动态与所述链节点建立长连接;
133.将长连接添加到长连接保持池中,并对长连接保持池进行维护。
134.在一个可选的实施例中,客户端320,还用于:
135.利用loadbalancingpolicy自定义负载均衡策略,并将负载均衡策略注册到stock通道构建器中;
136.利用stock通道构建器进行长连接的探针维护;
137.根据服务发现协议配置各项发现服务。
138.在一个可选的实施例中,客户端320,还用于:
139.当stock通道构建器由provider的hardcodedclasses实现时,利用provider中的accessor判断链节点的地址的可用性。
140.在一个可选的实施例中,内部监听事件包括ready事件、headers事件、message事件和halfclose事件。
141.在一个可选的实施例中,客户端320,还用于:
142.配置重试事件、最大流持续时间事件和故障注入事件,重试事件是在链节点不可用而导致负载失败后的策略重试,最大流持续时间事件是指定路由流允许持续时间和调整超时,故障注入事件是测试服务对于不同形式的故障的弹性。
143.综上所述,本技术实施例提供的区块链中的代理服务系统,通过配置服务端的端口监听、第一连接规则和第二连接规则,配置客户端与区块链中的各个链节点的长连接并维护、配置客户端的负载均衡策略和服务发现协议,配置服务端和客户端的内部监听事件、配置客户端的自定义监听事件,这样,应用层只需关注链使用即可,且能够适配多需求场景,提高应用层服务的容错率以及高可用概率。
144.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
145.以上所述并不用以限制本技术实施例,凡在本技术实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1