CN109951537B - 一种面向区块链的负载均衡分发方法 - Google Patents
一种面向区块链的负载均衡分发方法 Download PDFInfo
- Publication number
- CN109951537B CN109951537B CN201910168961.6A CN201910168961A CN109951537B CN 109951537 B CN109951537 B CN 109951537B CN 201910168961 A CN201910168961 A CN 201910168961A CN 109951537 B CN109951537 B CN 109951537B
- Authority
- CN
- China
- Prior art keywords
- node
- block chain
- load balancing
- request
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000001514 detection method Methods 0.000 claims abstract description 7
- 230000009191 jumping Effects 0.000 claims description 18
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向区块链的负载均衡分发方法,包括如下步骤:S1、将各区块链节点的信息写入数据库或共享文件中;S2、负载均衡服务启动时,加载各区块链节点信息,放入负载均衡资源池中;S3、信息采集服务定时对资源池中所有区块链节点作心跳检测,这样可以及时地反映出各个区块链节点的状态,负载均衡算法不会把请求分配到不能正常工作的区块链节点上。本发明的负载均衡分发方法可以及时地监控出各个区块链节点的状态;能够保证同一区块链账户对同一区块链节点每次计算出的亲密值都是相同的;能够保证同一区块链账户的请求能够分发到账户数据一致的区块链节点集群中。
Description
技术领域
本发明涉及一种负载均衡分发方法,特别涉及一种面向区块链的负载均衡分发方法。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个去中心化的数据库,被广泛应用与证券交易、电子商务、智能合约、物联网、社交通讯以及文件存储等众多领域。
任意一个节点是单点,都会成为高可用性的瓶颈,所以高可用性的客户端应用需要连接多个区块链节点,并采用负载均衡技术对客户端的请求做分发。由于区块链平台账户的通用性,不同的客户端可以使用同一个区块链账户进行操作。传统的负载均衡技术大多采用随机分发、权重分类、最小连接数分发等固定策略,导致同一个区块链账户的请求转发到不同区块链节点上的情况,在各区块链节点中数据未完全同步的情况下,会出现不同节点返回信息不一致的情况。例如:在账户未做任何操作的情况下,同一客户端不同时刻可能查询出的信息不一致;或者不同客户端使用同一账户查询出的数据不一致的异常情况。
发明内容
本发明要解决的技术问题是克服现有技术的缺陷,提供一种面向区块链的负载均衡分发方法。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明一种面向区块链的负载均衡分发方法,包括如下步骤:
S1、将各区块链节点的信息写入数据库或共享文件中;
S2、负载均衡服务启动时,加载各区块链节点信息,放入负载均衡资源池中;
S3、信息采集服务定时对资源池中所有区块链节点作心跳检测,这样可以及时地反映出各个区块链节点的状态,负载均衡算法不会把请求分配到不能正常工作的区块链节点上;
S4、客户端发送请求到负载均衡服务器,负载均衡服务器解析发送请求的区块链账户地址;
S5、根据公式计算区块链账户与资源池中状态正常的区块链节点的亲密值,此公式能够保证同一区块链账户每次计算出的亲密值都是相同的;
S6、亲密值最大的节点为当前请求的最佳节点;
S7、判断最佳节点的连接数是否达到阈值,达到阈值,跳到步骤S8;未达到阈值,跳到步骤S11;
S8、除去最佳节点后,按照亲密值由大到小的顺序依次判断各节点是否有同时满足一定条件的节点,找到满足条件的节点,跳到步骤S9,否则跳到步骤S10;
S9、找到满足条件的节点,将请求转发到此节点;
S10、找不到满足条件的节点,将请求分发到最佳节点上,并发出节点负荷过高的报警;
S11、将请求分发到最佳节点上。
作为本发明的一种优选技术方案,所述步骤S1中的信息包括ID、ip、端口号、权重、连接阈值。
作为本发明的一种优选技术方案,所述步骤S2中加载各区块链的信息包括的ID、ip、端口号、权重、连接阈值。
作为本发明的一种优选技术方案,所述步骤S3中的心跳检测包括:检测区块链节点是否正常工作,如果没有正常工作,那么设置该区块链节点的状态为不可用,反之设置这个节点可用。
作为本发明的一种优选技术方案,所述步骤S5中的公式为:亲密值=加密算法(发送请求的区块链账户地址+区块链节点IP+端口号)的后6位*权重,其中,加密算法至少为MD5、SHA3、SHA256中的一种。
作为本发明的一种优选技术方案,所述步骤S8中需要满足的条件为:
(1)节点连接数小于阈值,
以及,
(2)从节点获取的发送请求的区块链账户信息与最佳节点一致,此条件能够保证在最佳节点负载过高时,同一区块链账户的请求能够分发到与最佳节点数据一致的其他节点中,
其中,
节点需要同时满足上述两个条件。
本发明所达到的有益效果是:本发明的负载均衡分发方法可以及时地监控出各个区块链节点的状态;能够保证同一区块链账户对同一区块链节点每次计算出的亲密值都是相同的;能够保证同一区块链账户的请求能够分发到账户数据一致的区块链节点集群中。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的一种应用场景的示意图;
图2为本发明的方法流程示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例
如图1-2所示,本发明提供一种面向区块链的负载均衡分发方法,包括如下步骤:
S1、将各区块链节点的信息写入数据库或共享文件中;
S2、负载均衡服务启动时,加载各区块链节点信息,放入负载均衡资源池中;
S3、信息采集服务定时对资源池中所有区块链节点作心跳检测,这样可以及时地反映出各个区块链节点的状态,负载均衡算法不会把请求分配到不能正常工作的区块链节点上;
S4、客户端发送请求到负载均衡服务器,负载均衡服务器解析发送请求的区块链账户地址;
S5、根据公式计算区块链账户与资源池中状态正常的区块链节点的亲密值,此公式能够保证同一区块链账户每次计算出的亲密值都是相同的;
S6、亲密值最大的节点为当前请求的最佳节点;
S7、判断最佳节点的连接数是否达到阈值,达到阈值,跳到步骤S8;未达到阈值,跳到步骤S11;
S8、除去最佳节点后,按照亲密值由大到小的顺序依次判断各节点是否有同时满足一定条件的节点,找到满足条件的节点,跳到步骤S9,否则跳到步骤S10;
S9、找到满足条件的节点,将请求转发到此节点;
S10、找不到满足条件的节点,将请求分发到最佳节点上,并发出节点负荷过高的报警;
S11、将请求分发到最佳节点上。
在本发明的另一个优选的实施例中,所述步骤S1中的信息包括ID、ip、端口号、权重、连接阈值。
在本发明的另一个优选的实施例中,所述步骤S2中加载各区块链的信息包括的ID、ip、端口号、权重、连接阈值。
在本发明的另一个优选的实施例中,所述步骤S3中的心跳检测包括:检测区块链节点是否正常工作,如果没有正常工作,那么设置该区块链节点的状态为不可用,反之设置这个节点可用。
在本发明的另一个优选的实施例中,所述步骤S5中的公式为:亲密值=加密算法(发送请求的区块链账户地址+区块链节点IP+端口号)的后6位*权重,其中,加密算法至少为MD5、SHA3、SHA256中的一种。
在本发明的另一个优选的实施例中,所述步骤S8中需要满足的条件为:
(1)节点连接数小于阈值,
以及,
(2)从节点获取的发送请求的区块链账户信息与最佳节点一致,此条件能够保证在最佳节点负载过高时,同一区块链账户的请求能够分发到与最佳节点数据一致的其他节点中,
其中,
节点需要同时满足上述两个条件。
具体的,本发明的一种面向区块链的负载均衡分发方法适用于各种应用与区块链节点搭建的集群进行信息交互的场景,以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的例子。
本发明的一种面向区块链的负载均衡分发方法可以适用于图1所示的***中,如图1所示,该***包括:多种区块链应用客户端(客户端1~客户端N)、负载均衡服务器、区块链节点集群(区块链节点1~区块链节点N)。区块链节点维护区块链网络的账本;区块链应用客户端与区块链节点进行交互,包括添加区块链交易、区块链上的信息查询等;客户端发送给区块链网络的请求首先会到达负载均衡服务器,由负载均衡服务器通过本发明的调度算法将请求分发到不同的区块链节点上面,同时负载均衡服务器也会对区块链节点做周期性的健康检查,当发现故障节点时便动态的将故障节点从负载均衡资源中剔除,以此来保证***的高可用性。
以下结合图2介绍一种面向区块链的负载均衡分发方法,包括如下步骤:
(1)将区块链节点集群中的各区块链节点的ID、ip、端口号、权重、连接阈值写入配置中;
(2)负载均衡服务启动时,从配置中获取区块链节点的ID、ip、端口号、权重、连接阈值等信息,放入负载均衡资源池中;
(3)定时对资源池中所有区块链节点作心跳检测,检测区块链节点是否正常工作,如果没有正常工作,那么设置该区块链节点的状态为不可用,反之设置这个节点可用,这样可以及时地反映出各个区块链节点的状态,负载均衡算法不会把请求分配到不能正常工作的区块链节点上;
(4)客户端发送请求到负载均衡服务器,负载均衡服务器解析发送请求的区块链账户地址;
(5)根据公式1计算区块链账户与资源池中状态正常的区块链节点的亲密值,公式1:亲密值=加密算法(发送请求的区块链账户地址+区块链节点IP+端口号)的后6位*权重,其中加密算法可选MD5、SHA3、SHA256等主流算法。此公式能够保证同一区块链账户每次计算出的亲密值都是相同的;
(6)亲密值最大的节点为当前请求的最佳节点;
(7)根据亲密值由大到小的顺序将对应区块链节点依次添加到候选列表中;
(8)判断候选列表中是否有数据,有数据,跳到步骤8;无数据,跳到步骤(13);
(9)判断候选列表中第一个区块链节点的连接数是否达到阈值,达到阈值跳到步骤(9),否则跳到步骤(10);
(10)判断从候选列表中第一个区块链节点获取的发送请求的区块链账户信息与最佳节点是否一致,不一致跳到步骤(11),否则跳到步骤(12)。此条件能够保证在最佳节点负载过高时,同一区块链账户的请求能够分发到与最佳节点数据一致的其他节点中;
(11)删除候选列表第一个区块链节点信息;
(12)候选列表第一个区块链节点信息设为最佳节点;
(13)将请求分发到最佳节点上,并发出节点负荷过高的报警;
(14)将请求分发到最佳节点上。
本发明的负载均衡分发方法可以及时地监控出各个区块链节点的状态;能够保证同一区块链账户对同一区块链节点每次计算出的亲密值都是相同的;能够保证同一区块链账户的请求能够分发到账户数据一致的区块链节点集群中。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种面向区块链的负载均衡分发方法,其特征在于,包括如下步骤:
S1、将各区块链节点的信息写入数据库或共享文件中;
S2、负载均衡服务启动时,加载各区块链节点信息,放入负载均衡资源池中;
S3、信息采集服务定时对资源池中所有区块链节点作心跳检测;
S4、客户端发送请求到负载均衡服务器,负载均衡服务器解析发送请求的区块链账户地址;
S5、根据公式计算区块链账户与资源池中状态正常的区块链节点的亲密值,所属公式为:亲密值=加密算法(发送请求的区块链账户地址+区块链节点IP+端口号)的后6位*权重;
S6、亲密值最大的节点为当前请求的最佳节点;
S7、判断最佳节点的连接数是否达到阈值,达到阈值,跳到步骤S8;未达到阈值,跳到步骤S11;
S8、除去最佳节点后,按照亲密值由大到小的顺序依次判断各节点是否有同时满足一定条件的节点,找到满足条件的节点,跳到步骤S9,否则跳到步骤S10;
S9、找到满足条件的节点,将请求转发到此节点;
S10、找不到满足条件的节点,将请求分发到最佳节点上,并发出节点负荷过高的报警;
S11、将请求分发到最佳节点上。
2.根据权利要求1所述的一种面向区块链的负载均衡分发方法,其特征在于,所述步骤S1中的信息包括ID、ip、端口号、权重、连接阈值。
3.根据权利要求1或2所述的一种面向区块链的负载均衡分发方法,其特征在于,所述步骤S2中加载各区块链的信息包括的ID、ip、端口号、权重、连接阈值。
4.根据权利要求1或3所述的一种面向区块链的负载均衡分发方法,其特征在于,所述步骤S3中的心跳检测包括:检测区块链节点是否正常工作,如果没有正常工作,那么设置该区块链节点的状态为不可用,反之设置这个节点可用。
5.根据权利要求1所述的一种面向区块链的负载均衡分发方法,其特征在于,所述步骤S8中需要满足的条件为:
(1)节点连接数小于阈值,以及,
(2)从节点获取的发送请求的区块链账户信息与最佳节点一致,此条件能够保证在最佳节点负载过高时,同一区块链账户的请求能够分发到与最佳节点数据一致的其他节点中,
其中,节点需要同时满足上述两个条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910168961.6A CN109951537B (zh) | 2019-03-06 | 2019-03-06 | 一种面向区块链的负载均衡分发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910168961.6A CN109951537B (zh) | 2019-03-06 | 2019-03-06 | 一种面向区块链的负载均衡分发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109951537A CN109951537A (zh) | 2019-06-28 |
CN109951537B true CN109951537B (zh) | 2021-09-10 |
Family
ID=67009292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910168961.6A Active CN109951537B (zh) | 2019-03-06 | 2019-03-06 | 一种面向区块链的负载均衡分发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109951537B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110519388B (zh) * | 2019-08-30 | 2022-04-19 | 望海康信(北京)科技股份公司 | 区块链请求的处理方法、装置、电子设备及可读存储介质 |
CN111046102B (zh) * | 2019-11-27 | 2023-10-31 | 复旦大学 | 高性能区块链服务*** |
CN111147362B (zh) * | 2020-01-16 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 多人即时通讯方法、***、装置及电子设备 |
JP7377352B2 (ja) | 2020-01-16 | 2023-11-09 | テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド | 複数メンバーでのインスタントメッセージング方法、システム、装置及び電子機器、並びにコンピュータプログラム |
CN113259462B (zh) * | 2021-06-02 | 2021-10-15 | 支付宝(杭州)信息技术有限公司 | 区块链消息的分发方法及装置 |
CN113286177B (zh) * | 2021-07-26 | 2021-09-28 | 北京小鸟科技股份有限公司 | 基于区块链的分布式视频处理*** |
CN115190162B (zh) * | 2022-06-27 | 2023-11-28 | 杭州溪塔科技有限公司 | 区块链中的代理服务配置方法及代理服务*** |
CN115658368B (zh) * | 2022-11-11 | 2023-03-28 | 北京奥星贝斯科技有限公司 | 一种故障处理方法、装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512377A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 基于内核中套接字对接的第七层负载均衡的方法 |
CN102118433A (zh) * | 2010-12-27 | 2011-07-06 | 网宿科技股份有限公司 | 多层次的分布式集群*** |
CN106899680A (zh) * | 2017-03-09 | 2017-06-27 | 上海亿账通区块链科技有限公司 | 多区块链的分片处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10636033B2 (en) * | 2016-02-22 | 2020-04-28 | Bank Of America Corporation | System for routing of process authorizations and settlement to a user in a process data network |
-
2019
- 2019-03-06 CN CN201910168961.6A patent/CN109951537B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1512377A (zh) * | 2002-12-31 | 2004-07-14 | 联想(北京)有限公司 | 基于内核中套接字对接的第七层负载均衡的方法 |
CN102118433A (zh) * | 2010-12-27 | 2011-07-06 | 网宿科技股份有限公司 | 多层次的分布式集群*** |
CN106899680A (zh) * | 2017-03-09 | 2017-06-27 | 上海亿账通区块链科技有限公司 | 多区块链的分片处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109951537A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109951537B (zh) | 一种面向区块链的负载均衡分发方法 | |
CA2481686C (en) | System and method for dynamically altering connections in a data processing network | |
US8095935B2 (en) | Adapting message delivery assignments with hashing and mapping techniques | |
CN103581276B (zh) | 集群管理装置、***、业务客户端及相应方法 | |
CN112948120A (zh) | 负载均衡方法、***、装置和存储介质 | |
PH12015500177B1 (en) | Computer information system and dynamic disaster recovery method therefor | |
CN108200218B (zh) | 一种实现负载均衡的方法、装置及电子设备 | |
CN108062243B (zh) | 执行计划的生成方法、任务执行方法及装置 | |
US20070038885A1 (en) | Method for operating an arrangement of a plurality of computers in the event of a computer failure | |
CN109995842B (zh) | 一种用于分布式服务器集群的分组方法及装置 | |
CN101447989A (zh) | 用于改进的高可用性组件实现的***和方法 | |
CN105933408A (zh) | 一种Redis通用中间件的实现方法及装置 | |
CN101079901A (zh) | 验证客户端请求已被路由传送到适当的服务器的方法和装置 | |
CN106936925A (zh) | 负载均衡方法和*** | |
CN107105013B (zh) | 文件的处理方法、服务器、终端和*** | |
US8166100B2 (en) | Cross site, cross domain session sharing without database replication | |
CN114363963A (zh) | 一种云原生upf信令面负载均衡选择方法及*** | |
CN106210058A (zh) | 一种多核并行的反向代理方法 | |
CN115277712A (zh) | 分布式锁服务提供方法、装置、***及电子设备 | |
CN106878356B (zh) | 一种调度方法及计算节点 | |
WO2016206433A1 (zh) | 服务器负载均衡的方法及装置 | |
CN113010337B (zh) | 故障检测方法、总控节点、工作节点及分布式*** | |
CN111064636B (zh) | 前置机连接的控制方法、装置、***、计算机设备 | |
CN112988405B (zh) | 微服务自动降级方法、装置及计算设备 | |
CN112799849A (zh) | 一种数据处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |