CN110427429A - 一种基于fabric-sdk-java的交易负载均衡实现方法 - Google Patents
一种基于fabric-sdk-java的交易负载均衡实现方法 Download PDFInfo
- Publication number
- CN110427429A CN110427429A CN201910721589.7A CN201910721589A CN110427429A CN 110427429 A CN110427429 A CN 110427429A CN 201910721589 A CN201910721589 A CN 201910721589A CN 110427429 A CN110427429 A CN 110427429A
- Authority
- CN
- China
- Prior art keywords
- peer node
- transaction
- sdk
- fabric
- java
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于fabric‑sdk‑java的交易负载均衡实现方法,包括下列步骤:1)采用fabric‑sdk‑java为每一个Peer节点初始化一个组织对象;2)在发送交易之前,对各一个Peer节点进行健康检查,对健康状态的Peer节点进行交易发送;3)将发送交易传输至Peer节点服务器,成功返回,结束交易。与现有技术相比,本发明具有增加吞吐量,加强网络数据处理能力,避免交易失败返回现象,增强交易成功率等优点。
Description
技术领域
本发明涉及fabric-sdk-java技术领域,尤其是涉及一种基于fabric-sdk-java的交易负载均衡实现方法。
背景技术
Hyperledger Fabric是一个由模块化架构支撑的分布式账本解决方案平台,其可提供高度的保密性,弹性,灵活性和伸缩性。在这个架构中,Peer模块是Fabric的核心节点,所有的交易数据经过Orderer排序打包之后由Peer模块存储在区块链中,Peer节点专门负责维护区块链账本,运行维护链码,因此Peer模块的重要性不言而喻,Peer节点的健康状态对交易是否能够成功具有重大影响。
目前,在通过fabric-sdk-java的API进行发送交易时,并没有对Peer节点做负载均衡的处理,且在发送交易之前,并不会知道节点是否存在异常,通过交易的返回才知道Peer节点是否异常的缺陷,只有等交易返回异常才能判断,处理能力及预警能力较差。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于fabric-sdk-java的交易负载均衡实现方法。
本发明的目的可以通过以下技术方案来实现:
一种基于fabric-sdk-java的交易负载均衡实现方法,该方法在客户端进行交易,包括如下步骤:
(一)、采用fabric-sdk-java为每一个Peer节点初始化一个组织对象。
轮询Peer节点,通过确定KEY值来确定交易由哪个Peer节点处理,若KEY值判断为存在全局MAP集合,则为每一个节点获取组织对象;若KEY值判断为不存在全局MAP集合,则为每一个节点组装组织对象,并将组装后的组织对象放入全局MAP集合后作为最终获取的组织对象。所述的全局MAP集合为ConcurrentHashMap<Integer,FabricManager>,所述的KEY值为Peer节点编号。
(二)、在发送交易之前,对各一个Peer节点进行健康检查,对健康状态的Peer节点进行交易发送。
获取组织对象后,对各个Peer节点进行轮询,发送交易之前检查各个Peer节点的健康状态,若某Peer节点正常,则发送交易,若某Peer节点异常,自动轮询到下一个正常健康节点,若所有节点都异常,交易结束,返回异常信息。其中,通过java反射方法,检查Peer节点健康状态,在代码中获取peerEventServiceClient的值,根据peerEventServiceClient的值确定Peer节点的健康状态。检查Peer节点的peerEventServiceClient变量作用域,若peerEventServiceClient变量作用域不为Null,则表示Peer节点健康状态正常。
(三)、将发送交易传输至Peer节点服务器,成功返回交易ID,结束交易。
与现有技术相比,本发明具有以下优点:
1)本发明方法针对组织下的不同Peer节点,客户端采用fabric-sdk-java创建与之对应的组织对象,发送交易时轮询所有Peer节点,从而达到增加吞吐量,加强网络数据处理能力,实现对Peer节点的负载均衡;
2)本发明方法避开了传统的交易模式中通过交易的返回才知道Peer节点是否异常的缺陷,本发明方法在发送交易之前的健康检查,只需有一个Peer节点正常,不会出现交易失败返回的现象,增强了交易的成功率。
附图说明
图1为本发明一种基于fabric-sdk-java的交易负载均衡实现方法的流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
如图1所示,本发明涉及一种基于fabric-sdk-java的交易负载均衡实现方法,该方法在客户端进行交易,通过对Peer节点进行编号,然后通过全局变量(AtomicInteger)对Peer节点轮询实现负载均衡。具体包括下列步骤:
步骤一、采用fabric-sdk-java为每一个节点初始化一个组织对象。HyperledgerFabric作为企业级联盟链的基础设施,组织相当于一家具体的公司,Peer节点即公司的记账人员。因此Peer对象集合为组织对象的成员变量。
在创建组织对象时,轮询Peer节点,通过确定KEY值来确定交易由哪个Peer节点处理,创建组织对象。MAP集合是ConcurrentHashMap<Integer,FabricManager>,KEY值为Peer节点编号,FabricManager相当于Peer对象,因为组织是虚拟的,若KEY值判断为存在全局MAP集合,则为每一个节点获取组织对象。若KEY值判断为不存在全局MAP集合,则为每一个节点组装组织对象,并将组装后的组织对象放入全局MAP集合后作为最终获取的组织对象。
步骤二、在发送交易之前,通过反射对Peer节点做健康检查。
在检查节点健康状态步骤中,通过java反射技术,检查Peer节点健康状态,由于Orderer节点与Peer节点之间就是通过心跳来判断彼此的健康状态,所以在代码中通过获取peerEventServiceClient的值就可以确定Peer节点的健康状态,peerEventServiceClient变量作用域为私有,无法直接调用,只能通过反射获取,当peerEventServiceClient变量作用域不为Null的时候说明Peer节点正常。
步骤三、将发送交易传输至Peer节点服务器,成功返回交易ID,交易结束。
本实施例以“组织1(org1),组织1有三个节点(peer0,peer1,peer2)”的场景举例:
A)Fabric环境搭建:为组织1分配三个节点peer0,peer1,peer2。
B)客户端实现:
首先,为3个节点(peer0,peer1,peer2)初始化一个组织对象。获取组织对象后,对这3个Peer节点轮询,发送交易之前检查Peer节点的健康状态,如果此Peer节点正常,则发送交易。如果此Peer节点异常,自动轮询到下一个正常健康节点,如果所有节点都异常,交易结束,返回异常信息。即客户端程序对交易的处理包括步骤:1)轮询Peer节点,创建组织对象;2)检查节点健康状态、3)发送交易。
本发明方法针对组织下的不同Peer节点,客户端采用fabric-sdk-java创建与之对应的组织对象,发送交易时轮询所有Peer节点,从而达到增加吞吐量,加强网络数据处理能力,实现对Peer节点的负载均衡。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种基于fabric-sdk-java的交易负载均衡实现方法,该方法在客户端进行交易,其特征在于,包括下列步骤:
1)采用fabric-sdk-java为每一个Peer节点初始化一个组织对象;
2)在发送交易之前,对各一个Peer节点进行健康检查,对健康状态的Peer节点进行交易发送;
3)将发送交易传输至Peer节点服务器,成功返回交易ID,结束交易。
2.根据权利要求1所述的一种基于fabric-sdk-java的交易负载均衡实现方法,其特征在于,步骤1)的具体内容为:
轮询Peer节点,通过确定KEY值来确定交易由哪个Peer节点处理,若KEY值判断为存在全局MAP集合,则为每一个节点获取组织对象;若KEY值判断为不存在全局MAP集合,则为每一个节点组装组织对象,并将组装后的组织对象放入全局MAP集合后作为最终获取的组织对象。
3.根据权利要求1所述的一种基于fabric-sdk-java的交易负载均衡实现方法,其特征在于,步骤2)的具体内容为:
获取组织对象后,对各个Peer节点进行轮询,发送交易之前检查各个Peer节点的健康状态,若某Peer节点正常,则发送交易,若某Peer节点异常,自动轮询到下一个正常健康节点,若所有节点都异常,交易结束,返回异常信息。
4.根据权利要求3所述的一种基于fabric-sdk-java的交易负载均衡实现方法,其特征在于,步骤2)中,通过java反射方法,检查Peer节点健康状态,在代码中获取peerEventServiceClient的值,根据peerEventServiceClient的值确定Peer节点的健康状态。
5.根据权利要求2所述的一种基于fabric-sdk-java的交易负载均衡实现方法,其特征在于,所述的全局MAP集合为ConcurrentHashMap<Integer,FabricManager>,所述的KEY值为Peer节点编号。
6.根据权利要求4所述的一种基于fabric-sdk-java的交易负载均衡实现方法,其特征在于,检查Peer节点健康状态的具体内容为:
检查Peer节点的peerEventServiceClient变量作用域,若peerEventServiceClient变量作用域不为Null,则表示Peer节点健康状态正常。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910721589.7A CN110427429B (zh) | 2019-08-06 | 2019-08-06 | 一种基于fabric-sdk-java的交易负载均衡实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910721589.7A CN110427429B (zh) | 2019-08-06 | 2019-08-06 | 一种基于fabric-sdk-java的交易负载均衡实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110427429A true CN110427429A (zh) | 2019-11-08 |
CN110427429B CN110427429B (zh) | 2023-03-14 |
Family
ID=68412785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910721589.7A Active CN110427429B (zh) | 2019-08-06 | 2019-08-06 | 一种基于fabric-sdk-java的交易负载均衡实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110427429B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647668A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种高可用集群内主机群体决策系统及切换方法 |
US20170208122A1 (en) * | 2016-01-18 | 2017-07-20 | Canon Kabushiki Kaisha | Server system, method for controlling server system, and storage medium |
CN109949158A (zh) * | 2019-03-15 | 2019-06-28 | 北京世纪诚链科技有限公司 | 一种超级节点交易验签并行加速方法 |
-
2019
- 2019-08-06 CN CN201910721589.7A patent/CN110427429B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103647668A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种高可用集群内主机群体决策系统及切换方法 |
US20170208122A1 (en) * | 2016-01-18 | 2017-07-20 | Canon Kabushiki Kaisha | Server system, method for controlling server system, and storage medium |
CN109949158A (zh) * | 2019-03-15 | 2019-06-28 | 北京世纪诚链科技有限公司 | 一种超级节点交易验签并行加速方法 |
Non-Patent Citations (1)
Title |
---|
王德文等: "基于智能合约的区域能源交易模型与实验测试", 《电网技术》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110427429B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108540536B (zh) | 基于区块链的网络海量业务处理方法、设备及存储介质 | |
CN107993149A (zh) | 账户信息管理方法、系统以及可读存储介质 | |
CN107171885B (zh) | 一种检测服务器运行状态的方法、装置和系统 | |
CN109446071A (zh) | 接口测试方法、接口测试装置、电子设备及存储介质 | |
CN106470133A (zh) | 系统压力测试方法及装置 | |
EP1843607A1 (en) | System of mobile game on-line and method for communication between mobile game terminals | |
CN110223040A (zh) | 项目管理方法、装置、电子设备及存储介质 | |
CN109785042A (zh) | 分布式部署的异常处理方法、服务器、存储介质及装置 | |
CN110225104A (zh) | 数据获取方法、装置及终端设备 | |
CN106161511A (zh) | 业务请求处理方法、相关装置及系统 | |
CN109617750A (zh) | 一种服务预警方法及网关 | |
CN110400217A (zh) | 智能合约的规则变更处理方法及装置 | |
CN108154566A (zh) | 一种智能打卡的方法和装置 | |
CN110231956A (zh) | 应用程序版本构建的方法、系统及装置 | |
CN108096838A (zh) | 礼包领取方法、装置、服务器、移动终端及存储介质 | |
CN106802865A (zh) | 用于软件测试的应答模拟装置及方法 | |
CN110427429A (zh) | 一种基于fabric-sdk-java的交易负载均衡实现方法 | |
CN106874371A (zh) | 一种数据处理方法及装置 | |
CN110012054A (zh) | 一种基于联盟链网络的业务处理方法及系统 | |
CN104702647A (zh) | 信息请求方法和系统 | |
CN107508787A (zh) | 一种任务执行方法、装置及系统 | |
CN109559246A (zh) | 入群审核方法、审核服务器、客户端及入群审核系统 | |
CN111371879B (zh) | 网络路径管理方法、装置、系统、业务架构和电子设备 | |
CN108366102A (zh) | 一种基于Consul的服务发现方法、装置及电子设备 | |
CN105205905B (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 |