CN110427429A - 一种基于fabric-sdk-java的交易负载均衡实现方法 - Google Patents

一种基于fabric-sdk-java的交易负载均衡实现方法 Download PDF

Info

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
Application number
CN201910721589.7A
Other languages
English (en)
Other versions
CN110427429B (zh
Inventor
李虎
曾毅峰
刘佳利
吴昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Pudong Development Bank Co Ltd Credit Card Center
Original Assignee
Shanghai Pudong Development Bank Co Ltd Credit Card Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Pudong Development Bank Co Ltd Credit Card Center filed Critical Shanghai Pudong Development Bank Co Ltd Credit Card Center
Priority to CN201910721589.7A priority Critical patent/CN110427429B/zh
Publication of CN110427429A publication Critical patent/CN110427429A/zh
Application granted granted Critical
Publication of CN110427429B publication Critical patent/CN110427429B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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技术领域,尤其是涉及一种基于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节点健康状态正常。
CN201910721589.7A 2019-08-06 2019-08-06 一种基于fabric-sdk-java的交易负载均衡实现方法 Active CN110427429B (zh)

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)

* Cited by examiner, † Cited by third party
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 北京世纪诚链科技有限公司 一种超级节点交易验签并行加速方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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