Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020134698 - OPERATION REQUEST ALLOCATION METHOD, APPARATUS AND DEVICE

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17  

附图

1   2   3   4  

说明书

发明名称 : 一种操作请求分配方法、装置及设备

技术领域

[0001]
本申请涉及计算机技术领域,尤其涉及一种操作请求分配方法、装置及设备。

背景技术

[0002]
现有技术中,联盟链是只针对某个特定群体成员和有限的第三方,其内部制定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定。在实施联盟链的方案中,企业通常是通过前端应用来对外提供区块链服务,在传统的软件开发工具包中,只为前端应用提供单节点链接,不能对用户请求进行分流,不能满足用户对信任多样性的需求。
[0003]
发明内容
[0004]
有鉴于此,本申请实施例提供了一种操作请求分配方法、装置及设备,用于满足用户对信任多样性的需求。
[0005]
为解决上述技术问题,本说明书实施例是这样实现的:
[0006]
本说明书实施例提供的一种操作请求分配方法,包括:
[0007]
服务器获取客户端发送的针对区块链的操作请求;
[0008]
获取登录所述客户端的用户的属性信息;
[0009]
根据所述属性信息确定所述用户选择的节点条件;
[0010]
根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点;
[0011]
将所述操作请求分配至所述目标链接节点。
[0012]
本说明书实施例提供的一种操作请求分配装置,包括:
[0013]
操作请求获取模块,用于服务器获取客户端发送的针对区块链的操作请求;
[0014]
属性信息获取模块,用于获取登录所述客户端的用户的属性信息;
[0015]
节点条件确定模块,用于根据所述属性信息确定所述用户选择的节点条件;
[0016]
目标链接节点确定模块,用于根据所述节点条件,从与所述服务器保持长链接的 节点集合中确定目标链接节点;
[0017]
操作请求分配模块,用于将所述操作请求分配至所述目标链接节点。
[0018]
本说明书实施例提供的一种操作请求分配设备,包括:
[0019]
至少一个处理器;以及,
[0020]
与所述至少一个处理器通信链接的存储器;其中,
[0021]
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
[0022]
服务器获取客户端发送的针对区块链的操作请求;
[0023]
获取登录所述客户端的用户的属性信息;
[0024]
根据所述属性信息确定所述用户选择的节点条件;
[0025]
根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点;
[0026]
将所述操作请求分配至所述目标链接节点。
[0027]
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
[0028]
本说明书实施例通过获取用户的属性信息确定用户选择的节点条件,然后根据节点条件确定用户请求的目标链接节点,充分考虑了用户对节点的认知不同导致的用户对不同节点的信任程度不同的情况,对不用用户的请求采取不同的路由侧罗,满足了用户对信任多样性的需求。

附图说明

[0029]
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0030]
图1为本说明书实施例提供的一种操作请求分配方法的流程示意图;
[0031]
图2为应用了本说明书实施例中操作请求分配方法的示意图;
[0032]
图3为本说明书实施例提供的对应于图1的一种操作请求分配装置的结构示意图;
[0033]
图4为本说明书实施例提供的对应于图1的一种操作请求分配设备的结构示意图。

具体实施方式

[0034]
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0035]
以下结合附图,详细说明本申请各实施例提供的技术方案。
[0036]
在实施联盟链的方案中,企业通常是通过前端应用来对外提供区块链服务,一个前应用需要满足大量用户的需求,不同的用户对联盟链中的节点的认知不同,导致不同用户对不同的节点的信任程度也不同,因此,不同的用户选择相信不同的节点作为应用提供服务的链接节点,假如说有一个跨国的联盟链,那么用户通常会选择本国运行的节点作为应用的链接节点,但是用户使用的功能是通过同一个前端应用提供的,因此,提供的区块链前端应用应该具备区块链多节点并发切换的用户分流的方式。
[0037]
但是,由于区块链是一串使用密码学方法相关联产生的数据块,而Java等语言对密码学的支持程度的不同,通常采用依赖系统本地库来实现,采用椭圆曲线乘积(密码学)的类库比较少,支持多Session链接的库也比较少,因此,现有技术只能实现一对一的长链接,不能支持一对多的长链接。
[0038]
本说明书实施例对底层的加密学空间和网络空间进行结合开发:在Java中把加密控件和网络控件通过JNI(Java Native Interface)的方式进行集成,并且对底层链路进行管理,封装成多链路的可复用的Session(会话控制),然后通过软件开发工具包(Software Development Kit,SDK)的方式提供给客户端应用来使用,从而实现一个节点对多个节点的长链接,从而令区块链前端应用具备区块链多节点并发切换的用户分流的方式。
[0039]
图1为本说明书实施例提供的一种操作请求分配方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。
[0040]
如图1所示,该流程可以包括以下步骤:
[0041]
S101:服务器获取客户端发送的针对区块链的操作请求。
[0042]
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
[0043]
一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。
[0044]
在实施联盟链的方案中,企业通常是通过前端应用来对外提供区块链服务,一个前端应用需要满足大量用户的需求。用户需要通过前端应用提供的节点来访问区块链的数据信息。
[0045]
用户的操作请求通常包括:针对区块链的读操作、写操作和共识操作,本申请实施例中主要针对的是读操作。
[0046]
不同的用户对联盟链中的节点的认知不同,导致不同用户对不同的节点的信任程度也不同,因此,不同的用户选择相信不同的节点作为应用提供服务的链接节点。
[0047]
S102:获取登录所述客户端的用户的属性信息。
[0048]
在本说明书实施例中,所述用户的属性信息可以包括固有属性信息和动态属性信息。固有属性信息可以包括:所述用户的登录地址信息、国籍信息、性别信息和所属机构信息。动态属性信息可以包括:用户上次选择的链接节点,用户最常用的链接节点和用户自动选择的链接节点。
[0049]
用户可以在客户端登录方式即可以是网页登录,也可以是APP上登录。
[0050]
不同用户的属性信息可以相同,也可以不相同,这与用户的各异性以及习惯有很大的关系。具体获取哪些属性信息可以根据实际情况进行灵活确定。
[0051]
S103:根据所述属性信息确定所述用户选择的节点条件。
[0052]
在本说明书实施例中,当获取了用户的属性信息以后,需要根据所述属性信息确定用户选择的节点条件,所述节点条件表示所述用户选择链接节点的需求。
[0053]
例如,需要访问的是一个跨国的区块链,用户通常会选择本国运行的节点作为应用的链接节点,那么根据用户的国籍就可以确定用户选择的节点条件,用户的国籍是中 国,那么节点条件可以是:选择组织机构在中国的节点作为链接节点。用户的国籍是法国,那么对应的节点条件是:选择组织机构在法国的节点作为链接节点。另外,用户的国籍是法国,但是用户的登录地址信息是中国,那么用户可以选择注册机构在中国的节点进行链接,此时,节点条件为:选择组织机构在中国的节点作为链接节点。
[0054]
例如,需要访问的是一个跨领域的区块链,用户通常会比较信任本领域的节点。如果,用户的注册信息为金融行业,那么节点条件可以是:选择金融机构的节点作为链接节点,用户的注册信息为教育行业,那么节点条件可以是:选择教育机构的节点作为链接节点。
[0055]
例如,用户A在多次访问一个区块链时均采用的是节点1,那么可以说明用户A对节点1非常信任,那么节点条件可以确定为:选择节点1作为链接节点。
[0056]
上述例子中,节点条件均为一个,当然,在其它场景中,节点条件也可以为多个,而且多个条件之间还可以设置优先级,哪些条件是必须满足的,哪些条件是非必须满足的,还可以对每个条件设置不同的系数。这些可以根据用户和节点的多样性进行具体的设置,这里并不做具体的限定。
[0057]
S104:根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点。
[0058]
长链接是通过套接字与某个服务器保持持续链接的一种链接方式。长链接多用于操作频繁,点对点的通讯,而且链接数不能太多情况。每个TCP链接都需要三步握手,这需要时间,如果每个操作都是短链接,再操作的话处理速度会降低很多,所以每个操作完成后都不断开,下次处理时直接发送数据包就可以了,不用建立TCP链接。
[0059]
套接字:TCP用主机的IP地址加上主机上的端口号作为TCP链接点端点。
[0060]
在本说明书实施例中,与所述服务器保持长链接的节点是已知的,当根据用户的属性信息确定了节点条件之后,则需要与所述节点集合中各个节点进行比较,选择与所述节点条件最符合的节点,作为目标链接节点。
[0061]
例如,当节点条件为:选择组织机构在中国的节点作为链接节点,如果节点集合中只存在一个注册机构在中国的节点1,那么直接确定节点1为目标链接节点。
[0062]
例如,当节点条件是:选择金融机构、注册地点在中国的节点作为链接节点,如果节点集合中存在:节点1,法国银行(注册地点在法国);节点2,中国银行(注册地点在中国)。那么确定节点2为目标链接节点。
[0063]
需要指出的是,应用前端可以有多个,节点也可以有多个,应用前端与节点是分别组合的,可以一对多,也可以多对多,不同的应用前端对应的节点可以相同,也可以不同。
[0064]
S105:将所述操作请求分配至所述目标链接节点。
[0065]
在本说明书实施例中,服务器将所述操作请求分配至用户相对信任的节点,对区块链进行读操作或者写操作,满足了用户需求的多样性。
[0066]
图1中的方法,通过获取用户的属性信息确定用户选择的节点条件,然后根据节点条件确定用户请求的目标链接节点,充分考虑了用户对节点的认知不同导致的用户对不同节点的信任程度不同的情况,对不同用户的操作请求采取不同的路由策略,满足了用户对信任多样性的需求。
[0067]
图2为应用了本说明书实施例中操作请求分配方法的示意图,如图2所示,一个联盟链包括:节点1、节点2、节点3和节点4。
[0068]
用户选择场景:
[0069]
1、用户1登录,发送操作请求1,前端应用根据用户的喜好链接区块链节点1来发送请求1。
[0070]
2、用户2登录,发送操作请求2,前端应用根据用户的喜好链接区块链节点2来发送请求2。
[0071]
3、用户3登录,发送操作请求3,前端应用根据用户的喜好链接区块链节点3来发送请求3。
[0072]
上述的用户的喜好链接区块链节点可以根据用户的固有属性来实现,也可以根据用户的自动选择来实现,实现方式有很多种。
[0073]
基于图1的方法,本说明书实施例还提供了该方法的一些具体实施方式,下面进行说明。
[0074]
可选的,根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点,具体包括:
[0075]
获取与所述服务器保持长链接的节点集合中各节点的属性信息;
[0076]
将各节点的属性信息与所述节点条件进行匹配,确定与所述节点条件相似度最高的第一节点;
[0077]
根据所述第一节点确定所述目标链接节点。
[0078]
在本说明书实施例中,提供了一种具体的场景,通过根据用户的属性信息确定的节点条件,与节点集合中的各节点进行匹配操作。每个节点也有各自的属性信息,如组织名称、总部位置、稳定性、服务器配置和预算等。提取每个节点的属性信息与节点条件进行对比,得到相似度。
[0079]
例如,节点条件包括:条件1、条件2和条件3,所占比例系数分别为0.5、0.3和0.2。节点集合包括:节点A、节点B和节点C。
[0080]
第一种情况:节点A满足条件1和条件3,则相似度为0.7,节点B满足条件2和3,则相似度为0.5,节点C一个条件都不满足,则相似度为0。那么可以确定节点A为与所述节点条件相似度最高的节点,则确定节点A为目标链接节点。
[0081]
第二种情况:节点A满足条件1,则相似度为0.5,节点B满足条件2和3,则相似度为0.5,节点C满足条件3,则相似度为0.2。此时,节点A和节点B的相似度均为0.5,可以随时选择节点A或者节点B作为目标链接节点,此外,也可以判断节点A和节点B其他的条件,如系统压力的大小,优先选择系统压力小的节点作为目标链接节点,从而均衡各节点的系统压力。当然,还有其他的判断条件,这里不再列举。
[0082]
可选的,所述获取登录所述客户端的用户的属性信息,具体包括:
[0083]
将与所述服务器保持长链接的节点集合中包括的多个节点呈现给所述用户;
[0084]
获取所述用户选取的第一节点;
[0085]
根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点,具体包括:
[0086]
根据所述第一节点确定所述目标链接节点。
[0087]
在本说明书实施例中,还提供了另外一种确定目标链接节点的实施方式。由于与服务器保持长链接的节点是已知的,服务器可以将上述节点按照列表的方式发送给客户端,客户端收到上述节点信息以后,显示在客户端的显示界面上,在显示节点的同时,还会显示节点的属性信息,用户可以根据自身的情况或者喜好,从所述节点集合中选择最符合用户要求的第一节点发送给服务器,在没有其他特殊的情况先,服务器会将用户选择的第一节点作为用户请求的目标链接节点。
[0088]
可选的,根据所述第一节点确定所述目标链接节点,具体包括:
[0089]
判断所述第一节点的系统压力是否超过预设值,得到第一判断结果;
[0090]
当所述第一判断结果表示所述链接节点的系统压力未超过所述预设值时,确定所述第一节点为所述目标链接节点;
[0091]
当所述第一判断结果表示所述链接节点的系统压力超过所述预设值时,确定第二节点为目标链接节点,所述第二节点的系统压力小于所述预设值。
[0092]
在本说明书实施例中,如果选择同一个节点作为目标链接节点的用户请求特别多,而其它节点被选择的次数很少,如果在这种情况下,依然将用户请求源源不断分配给该节点,受硬件设备的影响,该节点的处理速度会下降,甚至会处于崩溃状态。基于上述原因,本方法除了关注用户的多样性需求,还考虑了每个节点处理用户请求的压力,采用均衡措施对压力进行水平伸缩。
[0093]
通常情况下,需要判断一个节点的系统压力是否达到了上限值,如果达到了上限值,则需要将操作请求分配给其他节点。节点的系统压力通常与节点的服务器的配置有关,比如:处理器、内存、硬盘质量和I/O带宽。表示系统压力的参数有很多,比如吞吐量(Throughput)和响应时间(RT)。本实施例说明书选择吞吐量和响应时间进行说明,但是并不能理解为对权利要求的具体限定。
[0094]
吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。通常情况下,一个节点的吞吐量都在几万、几十万TPS甚至更高,如果一个节点的吞吐量是几千TPS,那么就说明这个节点的系统压力超过了正常情况,不能正常处理用户的请求,因此,需要将该节点的用户请求分给其他的节点。
[0095]
响应时间是指系统对请求作出响应的时间,它完整地记录了整个计算机系统处理请求的时间。系统响应时间包括两个方面:时间长度和时间的易变性。用户响应时间应该适中,系统响应时间过长,用户就会感到不安和沮丧,而响应时间过短有时会造成用户加快操作节奏,从而导致错误。系统响应时间的易变性是指相对于平均响应时间的偏差。即使响应时间比较长,低的响应时间易变性也有助于用户建立稳定的节奏。
[0096]
在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。在本说明书实施例中,节点的响应时间是指节点共识落块的反馈时间,即从用户发出请求,前端应用获取并转发用户请求到相应的链接节点,以及链接节点在区 块链中落块的总时间。通常来说,这个过程一般在几百毫秒左右,响应时间小于100毫秒表示节点处于十分优良的状态;响应时间在1秒左右表示节点的系统压力增大,性能开始下降;如果响应时间达到5秒就表示节点的系统压力达到了上限,节点的性能降低了很多。如果,一个节点的响应时间超过5秒,就表示节点不能正常处理用户的请求,就需要将用户请求分给其他的节点。
[0097]
可选的,判断所述第一节点的系统压力是否超过预设值,具体可以包括:判断所述第一节点的吞吐量是否小于预设吞吐量,和/或判断所述第一节点的响应时间是否超过预设响应时间。
[0098]
在本说明书实施例中,在判断一个节点的系统压力是否超过预设值时,如果选择系统压力表征参数为吞吐量,则预设值可以设置为1万TPS(不同场景下,预设值会有所不同),如果低于1万TPS,则说明第一节点的系统压力超过了正常值,此时,需要将用户请求分流。
[0099]
在本说明书实施例中,如果选择系统压力表征参数为响应时间,则预设值可以设置为5S(不同场景下,预设值会有所不同),如果第一节点的响应时间为3S,则说明第一节点的系统压力处于正常状态,可以正常处理用户请求。如果第一节点的响应时间为6S,则说明第一节点的系统压力比较大,需要将用户请求分流。
[0100]
在本说明书实施例中,系统压力也可以同时选择吞吐量和响应时间,只有这两个参数同时满足一定的条件时,才说明节点的系统压力超过了正常范围。如,吞吐量低于8千TPS,且响应时间超过3S,只有这两个条件同时满足才可以。
[0101]
可选的,判断所述节点集合中是否存在系统压力小于所述预设值的节点,得到第二判断结果;
[0102]
当所述第二判断结果表示所述节点集合中存在系统压力小于所述预设值的节点时,确定所述第二节点的数量,所述第二节点为所述节点集合中系统压力小于所述预设值的节点;
[0103]
当所述第二节点的数量为一个时,将所述第二节点确定为所述目标链接节点;
[0104]
当所述第二节点的数量为多个时,确定各所述第二节点的属性信息与所述节点条件的相似度;
[0105]
将与所述节点条件相似度最高的第二节点确定为所述目标链接节点。
[0106]
在本说明书实施例中,当第一节点的系统压力超过正常值需要对用户请求进行分流时,首先需要从与服务器保持长链接的节点集合中选择合适的节点作为目标链接节点。选择的条件是:系统压力小于所述预设值,如果集合中存在这样的节点(第二节点),而且这样的节点只有一个,那么可以直接将该节点确定为目标链接节点。
[0107]
在本说明书实施例中,如果满足条件的第二节点有多个,如节点A、节点B和节点C。可以根据不同的方案选择其中一个作为目标链接节点。可以采用如下方案:
[0108]
方案一:随机分配,即不参考其他的条件,由服务器随机进行分配。
[0109]
方案二:根据各第二节点与用户请求的节点条件来进一步筛选。具体方法为:确定节点A、节点B和节点C的属性信息与所述节点条件的相似度,如,节点A的相似度为0.1,节点B的相似度为0.3,节点C的相似度为0.25。由于节点B的相似度最高,相对来说更符合用户的要求,则可以选择节点B作为目标链接节点。
[0110]
方案三:根据各第二节点的具体系统压力的大小来进一步筛选。具体方法为:确定节点A、节点B和节点C的系统压力,以响应时间为例,分别为:100ms、200ms、300ms,由于节点A的响应时间更快,则可以选择节点A作为目标链接节点。
[0111]
可选的,当所述第二判断结果表示所述节点集合中不存在系统压力小于所述预设值的节点时,获取候选节点的服务器配置参数;
[0112]
当所述服务器配置参数符合预设条件时,采用区块链的共识机制对所述候选节点进行身份验证;
[0113]
当所述候选节点的身份验证成功时,将所述候选节点加入到所述区块链中;
[0114]
设置所述候选节点与所述服务器的长链接。
[0115]
在本说明书实施例中,如果节点集合中所有节点的系统压力都超过了预设值,则说明区块链中每个节点的压力都很多,处理速度十分缓慢,此时需要增加新的节点来分担整个区块链的压力,新增加的节点是之前不存在于区块链中的。
[0116]
当服务器链接的所有的节点的系统压力都超过预设值时,则需要增加新的节点来处理用户的请求。对于增加的节点,也是需要满足一定的条件的。比如硬件条件和身份验证,其中,硬件条件是成为一个节点的非常重要的一点,只有服务器的配置能够达到一定的水平才能承担节点作为用户请求接入的任务。一个节点的硬件配置通常至少可以为:4核处理器、8G内存、10M带宽和100G固态硬盘,当然,针对不同的区块链,由 于节点处理的操作不同,硬件设置也会有所不同。除此之外,所有候选节点或者组织应向社区提供以下信息,信息可以发布于官网的投票检测页面里,并发布在组织官网上。(以下列表仅供参考):公共网站,社交账号,联系方式(邮箱,Discord账号等),组织名称,总部位置,服务器类型,服务器配置团队名单及2/3的团队成员图片及背景,技术方案(安全,维护,长期稳定性,容灾备份),维护人员以及预算,硬件扩容计划等等。当硬件设备符合要求以后,还需要区块链中的所有共识节点对候选节点进行投票,当大部分共识节点都认为该候选节点可以成为节点时,即达到一致,则证明该候选节点可以成为区块链的节点。当该节点加入区块链以后,设置与前端应用的服务器的长链接,即将该节点(第二节点)加入到与服务器保持长链接的节点集合中去,此时,服务器就可以将用户请求非配给第二节点,从而在用户请求量多的时候,做到分片和水平伸缩。
[0117]
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图3为本说明书实施例提供的对应于图1的一种操作请求分配装置的结构示意图。如图3所示,该装置可以包括:
[0118]
操作请求获取模块301,用于服务器获取客户端发送的针对区块链的操作请求;
[0119]
属性信息获取模块302,用于获取登录所述客户端的用户的属性信息;
[0120]
节点条件确定模块303,用于根据所述属性信息确定所述用户选择的节点条件;
[0121]
目标链接节点确定模块304,用于根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点;
[0122]
操作请求分配模块305,用于将所述操作请求分配至所述目标链接节点。
[0123]
可选的,所述属性信息获取模块302,具体用于获取登录所述客户端的所述用户的登录地址信息、国籍信息、性别信息、所属机构信息、上次的链接节点、最常用的链接节点和自动选择的链接节点中的至少一种。
[0124]
可选的,所述目标链接节点确定模块304,具体包括:
[0125]
属性信息获取子模块,用于获取与所述服务器保持长链接的节点集合中各节点的属性信息;
[0126]
第一节点确定子模块,用于将各节点的属性信息与所述节点条件进行匹配,确定与所述节点条件相似度最高的第一节点;
[0127]
目标链接节点确定子模块,用于根据所述第一节点确定所述目标链接节点。
[0128]
可选的,所述属性信息获取模块302,具体包括:
[0129]
节点呈现子模块,用于将所述与所述服务器保持长链接的节点集合中包括的多个节点呈现给所述用户;
[0130]
第一节点获取子模块,用于获取所述用户选取的第一节点;
[0131]
所述目标链接节点确定模块304,具体包括:
[0132]
目标链接节点确定子模块,用于根据所述第一节点确定所述目标链接节点。
[0133]
可选的,所述目标链接节点确定子模块,具体包括:
[0134]
第一结果判断单元,用于判断所述第一节点的系统压力是否超过预设值,得到第一判断结果;
[0135]
第一目标链接节点确定单元,用于当所述第一判断结果表示所述链接节点的系统压力未超过所述预设值时,确定所述第一节点为所述目标链接节点;
[0136]
第二目标链接节点确定单元,用于当所述第一判断结果表示所述链接节点的系统压力超过所述预设值时,确定第二节点为目标链接节点,所述第二节点的系统压力小于所述预设值。
[0137]
可选的,所述第一结果判断单元,具体用于判断所述第一节点的吞吐量是否小于预设吞吐量,和/或判断所述第一节点的响应时间是否超过预设响应时间。
[0138]
可选的,所述第二目标链接节点确定单元,具体包括:
[0139]
第二结果判断子单元,用于判断所述节点集合中是否存在系统压力小于所述预设值的节点,得到第二判断结果;
[0140]
服务器配置参数获取子单元,用于当所述第二判断结果表示所述节点集合中不存在系统压力小于所述预设值的节点时,获取候选节点的服务器配置参数;
[0141]
身份验证子单元,用于当所述服务器配置参数符合预设条件时,采用区块链的共识机制对所述候选节点进行身份验证;
[0142]
候选节点加入子单元,用于当所述候选节点的身份验证成功时,将所述候选节点加入到所述区块链中;
[0143]
长链接设置子单元,用于设置所述候选节点与所述服务器的长链接。
[0144]
可选的,所述第二目标链接节点确定单元,还包括:
[0145]
第二节点数量确定子单元,用于当所述第二判断结果表示所述节点集合中存在系统压力小于所述预设值的节点时,确定所述第二节点的数量,所述第二节点为所述节点集合中的系统压力小于所述预设值的节点;
[0146]
第一目标链接节点确定子单元,用于当所述第二节点的数量为一个时,将所述第二节点确定为所述目标链接节点;
[0147]
相似度获取子单元,用于当所述第二节点的数量为多个时,确定各所述第二节点的属性信息与所述节点条件的相似度;
[0148]
第二目标链接节点确定子单元,用于将与所述节点条件相似度最高的第二节点确定为所述目标链接节点。
[0149]
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
[0150]
图4为本说明书实施例提供的对应于图1的一种操作请求分配设备的结构示意图。如图4所示,设备400可以包括:
[0151]
至少一个处理器410;以及,
[0152]
与所述至少一个处理器通信链接的存储器430;其中,
[0153]
所述存储器430存储有可被所述至少一个处理器410执行的指令420,所述指令被所述至少一个处理器410执行,以使所述至少一个处理器410能够:
[0154]
服务器获取客户端发送的针对区块链的操作请求;
[0155]
获取登录所述客户端的用户的属性信息;
[0156]
根据所述属性信息确定所述用户选择的节点条件;
[0157]
根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点;
[0158]
将所述操作请求分配至所述目标链接节点。
[0159]
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0160]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0161]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0162]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施 本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0163]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0164]
本申请是根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0165]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0166]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0167]
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0168]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0169]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储 器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0170]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0171]
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0172]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0173]
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

权利要求书

[权利要求 1]
一种操作请求分配方法,包括: 服务器获取客户端发送的针对区块链的操作请求; 获取登录所述客户端的用户的属性信息; 根据所述属性信息确定所述用户选择的节点条件; 根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点; 将所述操作请求分配至所述目标链接节点。
[权利要求 2]
如权利要求1所述的方法,所述获取登录所述客户端的用户的属性信息,具体包括: 获取登录所述客户端的所述用户的登录地址信息、国籍信息、性别信息、所属机构信息、上次的链接节点、最常用的链接节点和自动选择的链接节点中的至少一种。
[权利要求 3]
如权利要求1所述的方法,根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点,具体包括: 获取与所述服务器保持长链接的节点集合中各节点的属性信息; 将各节点的属性信息与所述节点条件进行匹配,确定与所述节点条件相似度最高的第一节点; 根据所述第一节点确定所述目标链接节点。
[权利要求 4]
如权利要求1所述的方法,所述获取登录所述客户端的用户的属性信息,具体包括: 将所述与所述服务器保持长链接的节点集合中包括的多个节点呈现给所述用户; 获取所述用户选取的第一节点; 根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点,具体包括: 根据所述第一节点确定所述目标链接节点。
[权利要求 5]
如权利要求3或4所述的方法,根据所述第一节点确定所述目标链接节点,具体包括: 判断所述第一节点的系统压力是否超过预设值,得到第一判断结果; 当所述第一判断结果表示所述链接节点的系统压力未超过所述预设值时,确定所述第一节点为所述目标链接节点; 当所述第一判断结果表示所述链接节点的系统压力超过所述预设值时,确定第二节点为目标链接节点,所述第二节点的系统压力小于所述预设值。
[权利要求 6]
如权利要求5所述的方法,所述判断所述第一节点的系统压力是否超过预设值,具体包括: 判断所述第一节点的吞吐量是否小于预设吞吐量, 和/或判断所述第一节点的响应时间是否超过预设响应时间。
[权利要求 7]
如权利要求5所述的方法,所述确定第二节点为目标链接节点,具体包括: 判断所述节点集合中是否存在系统压力小于所述预设值的节点,得到第二判断结果; 当所述第二判断结果表示所述节点集合中不存在系统压力小于所述预设值的节点时,获取候选节点的服务器配置参数; 当所述服务器配置参数符合预设条件时,采用区块链的共识机制对所述候选节点进行身份验证; 当所述候选节点的身份验证成功时,将所述候选节点加入到所述区块链中; 设置所述候选节点与所述服务器的长链接。
[权利要求 8]
如权利要求7所述的方法,所述判断所述节点集合中是否存在系统压力小于所述预设值的节点,得到第二判断结果之后,还包括: 当所述第二判断结果表示所述节点集合中存在系统压力小于所述预设值的节点时,确定第二节点的数量,所述第二节点为所述节点集合中系统压力小于所述预设值的节点; 当所述第二节点的数量为一个时,将所述第二节点确定为所述目标链接节点; 当所述第二节点的数量为多个时,确定各所述第二节点的属性信息与所述节点条件的相似度; 将与所述节点条件相似度最高的第二节点确定为所述目标链接节点。
[权利要求 9]
一种操作请求分配装置,包括: 操作请求获取模块,用于服务器获取客户端发送的针对区块链的操作请求; 属性信息获取模块,用于获取登录所述客户端的用户的属性信息; 节点条件确定模块,用于根据所述属性信息确定所述用户选择的节点条件; 目标链接节点确定模块,用于根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点; 操作请求分配模块,用于将所述操作请求分配至所述目标链接节点。
[权利要求 10]
如权利要求9所述的装置,所述属性信息获取模块,具体用于获取登录所述客户端的所述用户的登录地址信息、国籍信息、性别信息、所属机构信息、上次的链接节点、最常用的链接节点和自动选择的链接节点中的至少一种。
[权利要求 11]
如权利要求9所述的装置,所述目标链接节点确定模块,具体包括: 属性信息获取子模块,用于获取与所述服务器保持长链接的节点集合中各节点的属性信息; 第一节点确定子模块,用于将各节点的属性信息与所述节点条件进行匹配,确定与所述节点条件相似度最高的第一节点; 目标链接节点确定子模块,用于根据所述第一节点确定所述目标链接节点。
[权利要求 12]
如权利要求9所述的装置,所述属性信息获取模块,具体包括: 节点呈现子模块,用于将所述与所述服务器保持长链接的节点集合中包括的多个节点呈现给所述用户; 第一节点获取子模块,用于获取所述用户选取的第一节点; 所述目标链接节点确定模块,具体包括: 目标链接节点确定子模块,用于根据所述第一节点确定所述目标链接节点。
[权利要求 13]
如权利要求11或12所述的装置,所述目标链接节点确定子模块,具体包括: 第一结果判断单元,用于判断所述第一节点的系统压力是否超过预设值,得到第一判断结果; 第一目标链接节点确定单元,用于当所述第一判断结果表示所述链接节点的系统压力未超过所述预设值时,确定所述第一节点为所述目标链接节点; 第二目标链接节点确定单元,用于当所述第一判断结果表示所述链接节点的系统压力超过所述预设值时,确定第二节点为目标链接节点,所述第二节点的系统压力小于所述预设值。
[权利要求 14]
如权利要求13所述的装置,所述第一结果判断单元,具体用于判断所述第一节点的吞吐量是否小于预设吞吐量; 和/或,判断所述第一节点的响应时间是否超过预设响应时间。
[权利要求 15]
如权利要求13所述的装置,所述第二目标链接节点确定单元,具体包括: 第二结果判断子单元,用于判断所述节点集合中是否存在系统压力小于所述预设值的节点,得到第二判断结果; 服务器配置参数获取子单元,用于当所述第二判断结果表示所述节点集合中不存在系统压力小于所述预设值的节点时,获取候选节点的服务器配置参数; 身份验证子单元,用于当所述服务器配置参数符合预设条件时,采用区块链的共识机制对所述候选节点进行身份验证; 候选节点加入子单元,用于当所述候选节点的身份验证成功时,将所述候选节点加入到所述区块链中; 长链接设置子单元,用于设置所述候选节点与所述服务器的长链接。
[权利要求 16]
如权利要求15所述的装置,所述第二目标链接节点确定单元,还包括: 第二节点数量确定子单元,用于当所述第二判断结果表示所述节点集合中存在系统压力小于所述预设值的节点时,确定所述第二节点的数量,所述第二节点为所述节点集合中系统压力小于所述预设值的节点; 第一目标链接节点确定子单元,用于当所述第二节点的数量为一个时,将所述第二节点确定为所述目标链接节点; 相似度获取子单元,用于当所述第二节点的数量为多个时,确定各所述第二节点的属性信息与所述节点条件的相似度; 第二目标链接节点确定子单元,用于将与所述节点条件相似度最高的第二节点确定为所述目标链接节点。
[权利要求 17]
一种操作请求分配设备,包括: 至少一个处理器;以及, 与所述至少一个处理器通信链接的存储器;其中, 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够: 服务器获取客户端发送的针对区块链的操作请求; 获取登录所述客户端的用户的属性信息; 根据所述属性信息确定所述用户选择的节点条件; 根据所述节点条件,从与所述服务器保持长链接的节点集合中确定目标链接节点; 将所述操作请求分配至所述目标链接节点。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]