首页 / 专利库 / 银行与财务事项 / 区块链处理实体 / 在区块链网络中控制流量的方法、装置、存储介质和设备

链网络中控制流量的方法、装置、存储介质和设备

阅读:686发布:2020-05-29

专利汇可以提供链网络中控制流量的方法、装置、存储介质和设备专利检索,专利查询,专利分析的服务。并且本 申请 涉及一种在 区 块 链 网络中控制流量的方法、装置、存储介质和设备,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,所述方法由所述路由层中的路由 节点 执行,所述方法包括:接收所述业务子网络中的业务节点发送的业务 请求 ;所述业务请求中携带有实体标识;获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。本申请提供的方案能够提高流量控制效率。,下面是链网络中控制流量的方法、装置、存储介质和设备专利的具体信息内容。

1.一种在链网络中控制流量的方法,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,所述方法由所述路由层中的路由节点执行,所述方法包括:
接收所述业务子网络中的业务节点发送的业务请求;所述业务请求中携带有实体标识;
获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;
当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。
2.根据权利要求1所述的方法,其特征在于,所述获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率,包括:
确定所述业务请求对应的业务类型;
根据所述业务类型,获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;所述请求总速率、所述节点请求速率和所述实体请求速率与所述业务类型对应。
3.根据权利要求2所述的方法,其特征在于,所述根据所述业务类型,获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率,包括:
根据所述业务类型,获取所述路由节点上前一次预测得到的预测请求速率;
获取所述路由节点上所述业务类型当前对应的检测请求速率;
对所述预测请求速率和所述检测请求速率进行加权计算,得到当前的预测请求速率;
当前的所述预测请求速率包括所述路由节点上的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述请求总速率、所述节点请求速率和所述实体请求速率均不满足相应的限速条件时,获取所述共识子网络对应的共识节点数据;
根据所述共识节点数据,按照配置的负载均衡策略参数将所述业务请求转发至所述共识子网络中的共识节点。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值;
获取所述目标请求速率阈值对应的阈值更新策略参数;
按照所述阈值更新策略参数,更新所述目标请求速率阈值。
6.根据权利要求5所述的方法,其特征在于,所述当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值,包括:
获取所述业务节点在单位时间内对应的、存在错误的业务请求的请求数;
当所述请求数满足第一阈值更新条件时,将所述业务节点对应的请求速率阈值确定为待更新的目标请求速率阈值;
所述获取所述目标请求速率阈值对应的阈值更新策略参数,包括:
确定所述请求数所属的数值范围;
获取所述数值范围对应的阈值更新策略参数,并作为所述目标请求速率阈值对应的阈值更新策略参数。
7.根据权利要求5所述的方法,其特征在于,所述当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值,包括:
获取断开连接的共识节点的节点数;
当所述节点数满足第二阈值更新条件时,将所述路由节点对应的请求速率阈值,确定为待更新的目标请求速率阈值;
所述按照所述阈值更新策略参数,更新所述目标请求速率阈值,包括:
获取配置的共识节点的节点总数;
根据所述节点总数和所述节点数,按照所述阈值更新策略参数更新所述目标请求速率阈值。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述业务子网络中的业务节点发送的连接请求;所述连接请求中携带有实体标识;
获取所述路由节点上当前的连接总数、所述业务节点对应的节点连接数,以及所述实体标识对应的实体连接数;
当所述连接总数、所述节点连接数和所述实体连接数中的至少一个满足相应的连接限制条件时,拒绝响应所述连接请求。
9.根据权利要求1所述的方法,其特征在于,所述接收所述业务子网络中的业务节点发送的业务请求之后,所述方法还包括:
获取所述路由层中当前的目标请求总速率、所述业务节点对应的目标节点请求速率,以及所述实体标识对应的目标实体请求速率;
所述当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求,包括:
当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,或者,
当所述目标请求总速率、所述目标节点请求速率和所述目标实体请求速率中的至少一个满足相应的目标限速条件时,拒绝响应所述业务请求。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述路由层还包括配置中心节点;所述配置中心节点用于配置所述路由层中每个路由节点上,所述路由节点对应的请求速率阈值、所述业务节点对应的请求速率阈值,以及所述实体标识对应的请求速率阈值。
11.一种在区块链网络中控制流量的装置,其特征在于,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,所述装置为所述路由层中的路由节点,所述装置包括:
接收模块,用于接收所述业务子网络中的业务节点发送的业务请求;所述业务请求中携带有实体标识;
获取模块,用于获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;
制模块,用于当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。
12.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。

说明书全文

链网络中控制流量的方法、装置、存储介质和设备

技术领域

[0001] 本申请涉及区块链技术领域,特别是涉及一种在区块链网络中控制流量的方法、装置、存储介质和设备。

背景技术

[0002] 随着区块链技术的发展,应用于电子票据的区块链网络逐渐发展起来,通过该区块链网络可在线完成电子票据对应的多种业务,给人们的生活带来了诸多便利。区块链网络通常会包括多个用于实现不同功能的子网络,比如业务子网络和共识子网络,业务子网络中的业务节点需要通过共识子网络的共识节点将数据写入区块链中。对区块链网络中的流量进行控制,以保证区块链网络的性能是值得关注的问题。
[0003] 目前,通常是共识节点在接收到业务节点发送的业务请求后,根据已接收到的业务请求数量判断是否响应该业务请求,以实现对区块链网络中的流量控制。但是,该种流量控制方式所基于的维度单一,存在流量控制效率低的问题。发明内容
[0004] 基于此,有必要针对流量控制效率低的技术问题,提供一种在区块链网络中控制流量的方法、装置、存储介质和设备。
[0005] 一种在区块链网络中控制流量的方法,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,所述方法由所述路由层中的路由节点执行,所述方法包括:
[0006] 接收所述业务子网络中的业务节点发送的业务请求;所述业务请求中携带有实体标识;
[0007] 获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;
[0008] 当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。
[0009] 一种在区块链网络中控制流量的装置,其特征在于,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,所述装置为所述路由层中的路由节点,所述装置包括:
[0010] 接收模块,用于接收所述业务子网络中的业务节点发送的业务请求;所述业务请求中携带有实体标识;
[0011] 获取模块,用于获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;
[0012] 控制模块,用于当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。
[0013] 一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述在区块链网络中控制流量的方法的步骤。
[0014] 一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述在区块链网络中控制流量的步骤。
[0015] 上述在区块链网络中控制流量的方法、装置、存储介质和设备,区块链网络包括业务子网络和共识子网络,还包括用于隔离业务子网络和共识子网络的路由层,路由层中的路由节点用于控制业务子网络中业务节点对共识子网络中共识节点的访问,以实现对区块链网络中的流量控制。路由层中的每个路由节点在接收到业务节点发送的携带有实体标识的业务请求后,获取该路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率等多个维度的请求速率,并根据该多个维度的请求速率对业务请求进行控制,以实现对区块链网络中的流量控制。当请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,拒绝响应业务请求,以实现流量的控制。这样,通过路由层中的路由节点基于多个维度进行区块链网络中的流量控制,能够提高流量控制效率。附图说明
[0016] 图1为一个实施例中在区块链网络中控制流量的方法的应用环境图;
[0017] 图2为一个实施例中在区块链网络中控制流量的方法的流程示意图;
[0018] 图3为另一个实施例中在区块链网络中控制流量的方法的流程示意图;
[0019] 图4为一个实施例中更新请求速率阈值的步骤的流程示意图;
[0020] 图5为另一个实施例中更新请求速率阈值的步骤的流程示意图;
[0021] 图6为一个实施例中在路由节点与业务节点之间建立连接的步骤的流程示意图;
[0022] 图7为一个实施例中在区块链网络中控制流量的方法中的区块链网络的架构图;
[0023] 图8为一个实施例中应用于电子票据的区块链网络的架构图;
[0024] 图9为另一个实施例中在区块链网络中控制流量的装置的结构框图
[0025] 图10为一个实施例中计算机设备的结构框图。

具体实施方式

[0026] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0027] 图1为一个实施例中在区块链网络中控制流量的方法的应用环境图。参照图1,该在区块链网络中控制流量的方法应用于区块链网络。该区块链网络包括业务子网络110、路由层120和共识子网络130。业务子网络110和共识子网络130通过网络分别与路由层120进行通信。路由层120用于隔离业务子网络110和共识子网络130。业务子网络110包括多个业务节点112,路由层120包括多个路由节点122,共识子网络130包括多个共识节点132。可以理解,图1所示的业务节点112、路由节点122和共识节点132的数量,仅仅作为示例,并不用于具体限定。
[0028] 如图2所示,在一个实施例中,提供了一种在区块链网络中控制流量的方法。本实施例主要以该方法应用于上述图1中的路由层130中的路由节点132来举例说明。参照图2,该在区块链网络中控制流量的方法具体包括如下步骤:
[0029] S202,接收业务子网络中的业务节点发送的业务请求;业务请求中携带有实体标识。
[0030] 其中,业务请求是用于触发业务操作的请求。业务请求中携带有实体标识。实体标识是用于唯一标识物理实体,物理实体比如机构、组织或个人。实体标识具体可以是身份证书,是物理实体在区块链网络中进行注册时,分配给该物理实体的用于在区块链网络中标识物理实体的身份的标识。
[0031] 具体地,业务子网络中的业务节点检测业务触发条件,根据所检测到的业务触发条件确定实体标识,触发生成携带该实体标识的业务请求,并将所生成的业务请求发送至路由层中的路由节点,以通过路由节点将该业务请求转发是共识子网络中的共识节点。路由层中的路由节点接收业务子网络中的业务节点发送的携带有实体标识的业务请求。业务触发条件比如接收到终端发送的业务触发指令,或者,检测到当前时间与预设的业务触发时间一致。
[0032] 在一个实施例中,业务请求包括数据上链请求、数据查询请求、合约执行请求和地址注册请求等。在电子票据的应用场景中,业务请求包括票据开具请求、票据数据查询请求、票据报销请求和票据红冲请求等。
[0033] 在一个实施例中,路由层在区块链网络中用于隔离业务子网络和共识子网络。业务子网络中的业务节点通过路由层中的路由节点,将业务请求转发至共识子网络中的共识节点。业务子网络可理解为见证子网络,处于业务层,共识子网络处于共识层。这样,区块链网络包括业务层、路由层和共识层,路由层为业务层和共识层之间的隔离层。
[0034] 在一个实施例中,路由层包括多个路由节点,该多个路由节点之间幂等。业务子网络中的业务节点可将业务请求发送至路由层中的任意一个路由节点。可以理解,业务节点可按照负载均衡的方式将自身触发的业务请求,发送至路由层中的路由节点。
[0035] 在一个实施例中,实体标识与业务节点对应,一个实体标识可对应有多个业务节点,也就是一个物理实体可通过多个业务节点,基于同一个实体标识接入区块链网络中,以提高业务处理的并发度。相应地,业务节点基于实体标识与路由节点进行通信,以便于路由节点基于实体标识对路由节点的身份进行验证。路由节点将验证通过的业务节点接入共识子网络,而不是将任意请求访问共识子网络的业务节点或其他节点均接入共识子网络,以保证共识子网络中的数据安全性。例如,业务节点向路由节点发送的业务请求和连接请求中均携带有身份证书,以用于验证业务节点的身份或访问权限。
[0036] S204,获取路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率。
[0037] 其中,请求总速率是指路由节点接收业务请求的总速率,具体可理解为路由节点在单位时间内所接收的业务请求数量。业务节点对应的节点请求速率是指路由节点接收由该业务节点发送的业务请求的速率,具体可理解为路由节点在单位时间内接收由该业务节点发送的业务请求数量。实体标识对应的实体请求速率是指路由节点接收携带有该实体标识的业务请求的速率,具体可理解为路由节点在单位时间内接收携带有该实体表示的业务请求数量。
[0038] 具体地,路由层中的路由节点在接收到业务节点发送的业务请求后,解析所接收到的业务请求得到实体标识,并获取该路由节点上与该实体标识对应的实体请求速率。路由节点获取自身当前的请求总速率,也就是获取该路由节点上当前的请求总速率。路由节点确定发送业务请求的业务节点,并获取该路由节点上与该业务节点对应的节点请求速率。
[0039] 在一个实施例中,路由节点实时统计自身的请求总速率,以及该路由节点上每个业务节点对应的节点请求速率和每个实体标识对应的实体请求速率,并将统计的请求总速率、节点请求速率和实体请求速率缓存在本地。路由节点在接收到业务请求后,根据该业务请求从本地获取缓存的请求总速率、节点请求速率和实体请求速率。
[0040] 在一个实施例中,路由节点在接收到业务请求后,动态计算自身当前的请求总速率,与发送该业务请求的业务节点对应的节点请求速率,以及业务请求中的实体标识对应的实体请求速率。
[0041] 在一个实施例中,路由节点检测自身当前实际的请求总速率,得到当前的检测请求总速率,以及获取历史预测得到的预测请求总速率,并根据当前的检测请求总速率和历史的预测请求总速率得到当前的预测请求总速率,将该当前的预测请求总速率确定为根据业务请求所获取到的请求总速率。类似地,路由节点分别获取业务节点对应的节点请求速率,以及实体标识对应的实体请求速率。
[0042] 在一个实施例中,路由节点根据当前的检测请求总速率,以及前一次预测得到的预测请求总速率,得到当前的预测请求总速率。或者,路由节点根据当前的检测请求总速率,以及最近预测得到的多个预测请求总速率,得到当前的预测请求总速率。可以理解,路由节点可对检测请求总速率和预测请求总速率求平均,得到当前的预测请求总速率。平均可以是算术平均,也可以是加权平均,还可以是指数加权平均。
[0043] 在一个实施例中,路由节点获取自身在单位时间内接收的业务请求数量,并根据所获取到的业务请求数量确定当前的请求总速率。相应地,路由节点获取自身在单位时间内接收由业务节点发送的业务请求数量,根据所获取到的业务请求数量确定该业务节点当前对应的节点请求速率。路由节点获取自身在单位时间内接收携带有实体标识的业务请求数量,并根据所获取到的业务请求数量确定该实体标识当前对应的实体请求速率。
[0044] S206,当请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,拒绝响应业务请求。
[0045] 其中,限速条件是用于判断是否响应所接收到的业务请求的依据。请求总速率、节点请求速率和实体请求速率分别对应有各自的限速条件,也就是路由节点对应的业务节点和实体标识,以及路由节点自身分别对应有各自的限速条件。请求总速率对应的限速条件,比如请求总速率大于或等于预配置的请求总速率阈值。节点请求速率对应的限速条件,比如节点请求速率大于或等于预配置的节点请求速率阈值。实体请求速率对应的限速条件,比如实体请求速率大于或等于预配置的实体请求速率阈值。
[0046] 具体地,路由节点获取自身对应的限速条件,并作为所获取到的请求总速率对应的限速条件。路由节点根据业务请求对应的业务节点,获取该业务节点对应的限速条件,并作为该业务节点对应的节点请求速率所对应的限速条件。路由节点根据业务请求中的实体标识,获取该实体标识对应的限速条件,并作为该实体标识对应的实体请求速率所对应的限速条件。路由节点将所获取到的请求总速率、节点请求速率和实体请求速率,分别与相应获取到的限速条件进行比较。当该请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,表明该路由节点上当前的流量满足流量控制条件,路由节点则拒绝响应所接收到的业务请求。
[0047] 在一个实施例中,当判定请求总速率、节点请求速率和实体请求速率中的至少一个满足相应限速条件时,路由节点向发送该业务请求的业务节点反馈相应的通知信息,以通知业务节点该业务请求被拒绝响应。路由节点还可以将拒绝响应业务请求的原因一并反馈至业务节点。拒绝的原因比如当前的请求总速率满足相应限速条件,或者,当前的节点请求速率满足相应限速条件等。可以理解,路由节点可以是暂时拒绝响应所接收到的业务请求,也就是暂时不响应该业务请求,也可以是完全拒绝响应所接收到的业务请求,也就是不会响应该业务请求。
[0048] 在一个实施例中,请求总速率阈值与路由节点相对应,具体可以是指路由节点在单位时间内所响应的业务请求的上限,是用于控制路由节点上单位时间内的业务请求数量的依据,也就是用于控制路由节点在单位时间内接收业务请求的总数量。节点请求速率阈值与路由节点所对应的业务节点相对应,具体可以是指路由节点在单位时间内,响应由相应业务节点发送的业务请求的上限,是用于控制路由节点上,单位时间内业务节点对应的业务请求数量的依据。实体请求速率阈值与路由节点所对应的实体标识相对应,具体可以是指路由节点在单位时间内,响应携带有相应实体标识的业务请求的上限,是用于控制路由节点上,单位时间内携带实体标识的业务请求数量。
[0049] 请求总速率阈值用于在路由节点层面上控制整个路由节点上的请求总速率。节点请求速率阈值用于在业务节点层面上,控制路由节点上每个业务节点对应的节点请求速率。路由节点针对每个业务节点预配置的节点请求速率阈值,可以相同也可以不同,还可动态调整。实体请求速率阈值用于在实体标识层面上,控制路由节点上每个实体标识对应的实体请求速率。路由节点针对每个实体标识预配置的实体请求速率,可以相同也可以不同,还可动态调整。
[0050] 上述在区块链网络中控制流量的方法,区块链网络包括业务子网络和共识子网络,还包括用于隔离业务子网络和共识子网络的路由层,路由层中的路由节点用于控制业务子网络中业务节点对共识子网络中共识节点的访问,以实现对区块链网络中的流量控制。路由层中的每个路由节点在接收到业务节点发送的携带有实体标识的业务请求后,获取该路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率等多个维度的请求速率,并根据该多个维度的请求速率对业务请求进行控制,以实现对区块链网络中的流量控制。当请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,拒绝响应业务请求,以实现流量的控制。这样,通过路由层中的路由节点基于多个维度进行区块链网络中的流量控制,能够提高流量控制效率。
[0051] 在一个实施例中,步骤S204包括:确定业务请求对应的业务类型;根据业务类型,获取路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率;请求总速率、节点请求速率和实体请求速率与业务类型对应。
[0052] 其中,业务类型是指业务请求所指定的业务处理类型,具体可以是指业务请求所指定的业务功能。业务类型比如数据上链、数据查询、合约执行和地址注册等,数据上链比如插入交易,数据查询具体可以是区块查询。
[0053] 具体地,路由节点在接收到业务请求后,确定该业务请求对应的业务类型和业务节点,以及该业务请求所携带的实体标识。路由节点根据所确定的业务类型获取该路由节点上,当前与该业务类型对应的请求总速率,以及与该业务类型对应且与业务节点对应的节点请求速率,以及与该业务类型对应且与实体标识对应的实体请求速率。
[0054] 在一个实施例中,路由节点按照业务类型,实时统计路由节点自身的请求总速率,以及该路由节点上每个业务节点对应的节点请求速率,与每个实体标识对应的实体请求速率,并将统计的请求总速率、节点请求速率和实体请求速率,按照业务类型缓存在本地。路由节点根据业务请求对应的业务类型,可直接从本地获取相应缓存的请求总速率、节点请求速率和实体请求速率。
[0055] 在一个实施例中,路由节点根据业务请求对应的业务类型,动态计算该路由节点上该业务类型对应的请求总速率、节点请求速率和实体请求速率。
[0056] 在一个实施例中,路由节点根据业务请求对应的业务类型,分别获取该业务类型对应的请求总速率、节点请求速率和实体请求速率各自对应的限速条件,并当该业务类型对应的请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,拒绝响应相应的业务请求。
[0057] 在一个实施例中,路由节点上针对每个业务类型分别预配置有相应的限速条件,预配置的限速条件包括路由节点自身对应的限速条件、每个业务节点对应的限速条件,以及每个实体标识对应的限速条件。路由节点自身对应的限速条件比如,路由节点上业务类型对应的请求总速率大于或等于该业务类型对应的请求总速率阈值。请求总速率阈值用于表示路由节点在单位时间内最多响应相应业务类型的业务请求的数量。基于请求总速率阈值能够有效控制每个路由节点所响应的业务请求总数量,从而能够控制通过路由节点转发至共识子网络的业务请求总数量。由此,能够控制整个区块链网络中的业务请求总数量,从而能够保证区块链网络的稳定性
[0058] 针对每个业务类型配置相应的请求总速率,也就是针对每个区块链功能或服务配置相应的请求速率,由此可根据区块链服务接口的特性配置相应的限制速率/请求总速率阈值。举例说明,对于业务类型为插入交易等重要但轻量级的业务请求,可配置更大的限制速率,以实现更高的区块链服务性能。对于业务类型为获取区块数据等数据量大但实时性要求不高的业务请求,可配置相对较小的限制速率,也就是适当降低业务请求总速率,以防止整个区块链网络的流量过大,或者,共识节点耗费更多的资源来处理区块数据的发送。
[0059] 类似地,业务节点对应的限速条件指定了与该业务节点和相应业务类型对应的节点请求速率阈值,用于表征路由节点在单位时间内最多响应由相应业务节点发送的、且与相应业务类型对应的业务请求的数量。路由节点通过节点请求速率阈值来实现对单个业务节点的流量控制,从而保证区块链服务的公平性,以避免因单个业务节点占用大量资源,而导致系统整体性能下降,及其它业务节点的业务请求得不到及时响应的问题。
[0060] 类似地,实体标识对应的限速条件指定了与该实体标识和相应业务类型对应的实体请求速率,用于表征路由节点在单位时间内最多响应携带有相应实体标识的、且与相应业务类型对应的业务请求的数量。路由节点通过实体请求速率阈值来实现对身份证书对应的单个物理实体的流量控制,以避免因单个物理实体通过一个或多个业务节点,基于身份证书触发大量的业务请求而占用大量的资源,从而导致系统整体性能下降,以及其它物理实体的业务请求得不到及时响应的问题。
[0061] 在一个实施例中,路由节点检测携带每个身份证书的业务请求数量,当检测到携带某个身份证书的业务请求数量过大时,确定该身份证书对应的物理实体,并对该物理实体及物理实体的该种业务请求触发状态进行记录、反馈和惩罚。这样,能够有效避免单个物理实体恶意触发大量业务请求,而占用大量资源的问题。
[0062] 上述实施例中,按照业务类型从多个维度上进行流量控制,实现了不同业务类型的差异化流量控制,能够提高区块链网络中业务处理的可靠性,以及资源分配的有效性,能够进一步提高流量控制的有效性。
[0063] 在一个实施例中,根据业务类型,获取路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率,包括:根据业务类型,获取路由节点上前一次预测得到的预测请求速率;获取路由节点上业务类型当前对应的检测请求速率;对预测请求速率和检测请求速率进行加权计算,得到当前的预测请求速率;当前的预测请求速率包括路由节点上的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率。
[0064] 其中,预测请求速率是基于预设的请求速率预测方式预测得到的请求速率。检测请求速率是指实际检测或测量到的请求速率。预设的请求速率预测方式比如对预测请求速率和检测请求速率进行加权平均。
[0065] 具体地,路由节点根据业务请求对应的业务类型,从本地获取路由节点上前一次预测得到的预测请求速率。该前一次预测得到的预测请求速率,包括对应于路由节点自身预测得到的请求总速率,对应于业务节点预测得到的节点请求速率,以及对应于实体标识预测得到的实体请求速率。路由节点根据业务类型检测该路由节点上该业务类型当前对应的检测请求速率。当前的检测请求速率包括,当前对应于路由节点检测到的请求总速率,对应于业务节点检测到的节点请求速率,以及对应于实体标识检测到的实体请求速率。
[0066] 路由节点对前一次预测的请求总速率和当前检测的请求总速率进行加权计算,得到路由节点自身当前的预测请求速率,并作为该路由节点当前的请求总速率。路由节点对前一次预测的节点请求速率和当前检测的节点请求速率进行加权计算,得到路由节点上该业务节点当前对应的节点请求速率。路由节点对前一次预测的实体请求速率和当前检测的实体请求速率进行加权计算,得到路由节点上该实体标识当前对应的实体请求速率。
[0067] 在一个实施例中,加权计算包括简单加权平均、线性加权平均和指数加权平均。简单加权平均是指加权的权重不会随着时间的推移而变化。线性加权平均是指加权的权重随着时间的推移线性变化,时间越近的预测请求速率所对应的权重越大,时间越远的预测请求速率所对应的权重越小。指数加权平均是指加权的权重随着时间的推移而指数式递减,时间越近的预测请求速率所对应的权重越大。
[0068] 在一个实施例中,路由节点根据前一次的预测请求速率和当前的检测请求速率,按照EWMA(Exponentially Weighted Moving Average,指数加权滑动平均)方式进行加权计算,得到当前的预测请求速率。具体计算公式如下:
[0069] EWMA(t)=λY(t)+(1-λ)EWMA(t-1)t=1,2,...,n  (1)
[0070] 其中,λ(0<λ<1)为权重系数,表示当前的预测请求速率对于前一次的预测请求速率的权重,也就是表示当前的预测请求速率对于历史的预测请求速率的权重,λ越接近1,表示当前的预测请求速率对历史的预测请求速率的权重越低。Y(t)表示当前的检测请求速率,是指当前实际的请求速率测量值。t具体可以是指预测当前的预测请求速率的时间,也可理解为预测得到请求请求速率的次数或总数。EWMA(t)为时间t的预测请求速率,也就是当前的预测请求速率。EWMA(t-1)为时间t-1的预测请求速率,也就是前一次预测得到的预测请求速率。
[0071] 在一个实施例中,λ可以是预配置的常数,也可以是随时间变化的变量,比如λ=2/(t+1)。
[0072] 在一个实施例中,权重λ用于表征EWMA估计器跟踪实际的检测请求速率突然变化的能,即时效性。随着λ的增大,估计器的时效性就越强,反之,越弱。可以理解,由于λ的存在,EWMA具有吸收瞬时突发的能力,也即平稳性。随着λ的减小,当前的预测请求速率参考历史的预测请求速率的程度更大,估计器的平稳性增强,反之,则降低。
[0073] 在一个实施例中,路由节点根据业务类型,获取路由节点上历史预测得到的预测请求速率。路由节点对所获取到的所有预测请求速率进行加权计算,或者,对最近预测得到的多个预测请求速率进行加权计算,得到当前的预测请求速率。路由节点也可选取指定时间段内的多个预测请求速率进行加权计算,得到当前的预测请求速率。指定时间段比如以当前时间为结束时间,且时长为预设时长的时间区间,预设时长比如5秒,指定时间段即为过去的5秒,预设时长具体可在5秒至10秒中的任意取值。具体计算公式如下:
[0074]
[0075] 其中,pn为第n次的检测请求速率,a为权重。由此,当前的预测请求速率由历史的多个检测请求速率进行指数加权确定。基于最近的多个检测请求速率预测得到当前的预测请求数据,能够较好的反应速率及时性,但也不至于会产生过大的波动而使得监控和动态调节器的处理过于敏感。
[0076] 上述实施例中,基于历史的预测请求速率和当前的检测请求速率进行加权计算,得到当前的预测请求速率,能够提高当前的预测请求速率的准确性,从而基于当前的预测请求速率进行流量控制时,能够提高流量控制的准确性。
[0077] 在一个实施例中,上述在区块链网络中控制流量的方法还包括:当请求总速率、节点请求速率和实体请求速率均不满足相应的限速条件时,获取共识子网络对应的共识节点数据;根据共识节点数据,按照配置的负载均衡策略参数将业务请求转发至共识子网络中的共识节点。
[0078] 其中,负载均衡策略参数是负载均衡策略的量化参数,用于指示路由节点如何从共识子网络中确定用于接收业务请求的共识节点。负载均衡策略是路由节点将业务请求发送至共识子网络中的某个共识节点的依据。
[0079] 具体地,当判定路由节点上当前的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率均不满足相应的限速条件时,路由节点从本地获取共识子网络对应的共识节点数据,以及预配置的负载均衡策略参数。路由节点根据所获取到的共识节点数据,按照负载均衡策略参数从共识子网络中确定用于接收该业务请求的共识节点,并将该业务请求发送至所确定的共识节点。
[0080] 在一个实施例中,路由节点实时检测共识子网络中各共识节点当前的状态,根据各共识节点的状态确定共识子网络对应的共识节点数据,并缓存在本地,也就是路由节点本地动态维护有共识子网络中各共识节点的状态。共识节点的状态具体可以是指共识节点的连接可用性,包括连接可用和连接不可用。连接不可用的原因包括路由节点和共识节点之间的连接断开、共识节点的网络断开、共识节点当前的资源不足、共识节点在生成区块过程中出现卡顿等。共识节点数据包括每个共识节点当前的状态,还可包括共识子网络中处于连接可用状态的共识节点数。路由节点根据共识节点数据,从共识子网络中筛选处于连接可用状态的共识节点,并按照负载均衡策略参数,从筛选出的共识节点中选取用于接收业务请求的共识节点,进而将该业务请求发送至选取的共识节点。
[0081] 在一个实施例中,负载均衡策略参数比如,将业务请求发送至当前负载最小的共识节点,或者,将业务请求发送至当前可用资源最多的共识节点,或者,按照轮询的方式将业务请求发送至当前轮询至的共识节点等,只要适用于本申请的负载均衡策略参数均可以,在此不再一一列举。
[0082] 上述实施例中,当多个维度的请求速率均不满足相应限速条件时,则表明尚未达到流量控制条件,则根据共识子网络中的共识节点数据,按照负载均衡策略参数将业务请求发送至相应共识节点,以在保证流量控制的情况下,实现共识节点上的负载均衡,从而提高业务请求的处理效率。
[0083] 如图3所示,在一个实施例中,提供了一种在区块链网络中控制流量的方法,该方法具体包括以下步骤:
[0084] S302,接收业务子网络中的业务节点发送的业务请求;业务请求中携带有实体标识。
[0085] S304,确定业务请求对应的业务类型。
[0086] S306,根据业务类型,获取路由节点上前一次预测得到的预测请求速率。
[0087] S308,获取路由节点上业务类型当前对应的检测请求速率。
[0088] S310,对预测请求速率和检测请求速率进行加权计算,得到当前的预测请求速率;当前的预测请求速率包括路由节点上的请求总速率、业务节点对应的节点请求速率,以及实体标识对应的实体请求速率。
[0089] S312,当请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,拒绝响应业务请求。
[0090] S314,当请求总速率、节点请求速率和实体请求速率均不满足相应的限速条件时,获取共识子网络对应的共识节点数据。
[0091] S316,根据共识节点数据,按照配置的负载均衡策略参数将业务请求转发至共识子网络中的共识节点。
[0092] 上述实施例中,按照业务类型从多个维度上进行请求速率的控制,以实现流量控制,能够有效防止区块链中的DDOS攻击(分布式拒绝服务攻击)和女巫攻击等,能够有效防止外部网络对共识子网络中数据的访问,从而能够保证区块链网络的中数据的安全性。该种方式相较于通过共识节点进行流量控制,能够实现路由层的整体控制,从而实现区块链网络中流量的全面控制。
[0093] 在一个实施例中,上述在区块链网络中控制流量的方法还包括:当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值;获取目标请求速率阈值对应的阈值更新策略参数;按照阈值更新策略参数,更新目标请求速率阈值。
[0094] 其中,请求速率阈值更新条件是用于触发请求速率阈值的更新操作的条件,用于指示路由节点对相应请求速率阈值进行更新。阈值更新策略参数是阈值更新策略的量化参数,用于指示路由节点如何对待更新的目标请求速率阈值进行更新。
[0095] 具体地,当满足请求速率阈值更新条件时,路由节点根据该请求速率阈值更新条件确定待更新的目标请求速率阈值,并获取该目标请求速率阈值对应的阈值更新策略参数。路由节点按照所获取到的阈值更新策略参数,更新待更新的目标请求速率阈值,并将更新得到的请求速率阈值作为下一次流量控制过程中的请求速率阈值。
[0096] 在一个实施例中,路由节点针对路由节点自身、路由节点对应的每个业务节点和每个实体标识,分别预配置有相应的请求速率阈值,并针对每个请求速率阈值预配置有相应的请求速率阈值更新条件和阈值更新策略参数。当判定该预配置的请求速率阈值更新条件中的至少一个满足时,路由节点将当前满足的请求速率阈值更新条件对应的请求速率阈值,确定为待更新的目标请求速率阈值,并将该请求速率阈值对应的阈值更新策略参数,确定为对应于目标请求速率阈值获取到的阈值更新策略参数。
[0097] 在一个实施例中,阈值更新策略参数包括用于更新目标请求速率阈值的速率映射关系,还可包括每个速率映射关系对应的请求速率阈值更新子条件。
[0098] 在一个实施例中,路由节点按照业务类型,分别针对路由节点自身、路由节点对应的每个业务节点和实体标识预配置相应的请求速率阈值,并针对每个请求速率阈值预配置相应的请求速率阈值更新条件。
[0099] 上述实施例中,当满足预配置的请求速率阈值更新条件时,按照阈值更新策略参数动态更新目标请求速率阈值,以便于根据更新的请求速率阈值进行流量控制,能够提高流量控制的效率和准确性。
[0100] 在一个实施例中,当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值,包括:获取业务节点在单位时间内对应的、存在错误的业务请求的请求数;当请求数满足第一阈值更新条件时,将业务节点对应的请求速率阈值确定为待更新的目标请求速率阈值;获取目标请求速率阈值对应的阈值更新策略参数,包括:确定请求数所属的数值范围;获取数值范围对应的阈值更新策略参数,并作为目标请求速率阈值对应的阈值更新策略参数。
[0101] 其中,单位时间具体可根据实际情况自定义,比如1秒或1分钟。第一阈值更新条件是用于更新业务节点对应的请求速率阈值的依据。第一阈值更新条件比如,业务节点在单位时间内对应的、存在错误的业务请求的请求数大于或等于请求数阈值,请求数阈值比如50,或者,该请求数属于预设的数值范围,预设的数值范围比如[50,99],预设的数值范围具体可以是多个。存在错误的业务请求具体可以是指地址解析错误、格式解析错误或API(Application Programming Interface,应用程序编程接口)版本错误等的业务请求。共识节点接收到路由节点转发的业务请求后,会针对存在错误的业务请求反馈相应的错误提示信息。
[0102] 具体地,路由节点获取业务节点在单位时间内对应的、且存在错误的业务请求的请求数,并将所获取到的请求数与预配置的第一阈值更新条件进行比较。当判定请求数满足第一阈值更新条件时,路由节点将相应业务节点当前对应的请求速率阈值,确定为待更新的目标请求速率阈值。路由节点将所获取的请求数与预设的数值范围进行比较,以确定该请求数所属的数值范围。路由节点获取请求数所属的数值范围对应的阈值更新策略参数,并将所获取的阈值更新策略参数确定为目标请求速率阈值对应的阈值更新策略参数,以根据该阈值更新策略参数对该目标请求速率阈值进行更新。
[0103] 在一个实施例中,路由节点针对每个业务节点,动态统计单位时间内存在错误的业务请求的请求数,并将统计的请求数缓存在本地。这样,路由节点可根据业务节点从本地获取缓存的请求数。
[0104] 在一个实施例中,路由节点在接收到共识节点针对业务请求所反馈的错误提示信息时,根据该错误提示信息动态更新相应业务节点对应的、存在错误的业务请求的请求数,并将更新的请求数与第一阈值更新条件进行比较,以确定是否触发该业务节点对应的请求速率阈值的更新流程。
[0105] 在一个实施例中,路由节点预配置有多个数值范围,以及每个数值范围对应的阈值更新策略参数。路由节点将请求数与该多个数值范围分别进行比较,以确定请求数所属的数值范围。
[0106] 举例说明,预设的数值范围包括[50,99]、[100,199]、[200,499]、大于或等于500,各自对应的阈值更新策略参数分别为min(A,B)*80%、min(A,B)*50%、min(A,B)*30%和min(A,B)*5%,其中,A表示业务节点对应的请求速率阈值,B表示实体标识对应的请求速率阈值。若对应于业务节点当前获取的请求数为80,则按照其所属的数值范围[50,99]对应的阈值更新策略参数min(A,B)*80%,更新该业务节点对应的请求速率阈值。
[0107] 可以理解,A具体可以是针对业务节点初始配置的请求速率阈值,B具体可以是针对实体标识初始配置的请求速率阈值。B具体可以是该业务节点对应的实体标识所对应的请求速率阈值。若该业务节点对应的实体标识有多个,则B可包括该多个实体标识各自对应的请求速率阈值,或者,B表示该多个实体标识中,在单位时间内对应的、且存在错误的业务请求的请求数最多的实体标识所对应的请求速率阈值。
[0108] 进一步地,若对应于业务节点前一次获取的、单位时间内存在错误的业务请求的请求数为120,路由节点按照该请求数所对应的阈值更新策略参数min(A,B)*50%,对该业务节点的请求速率阈值进行降频更新,得到降频后的请求速率阈值。若对应于该业务节点当前获取的请求数为80,则按照相应阈值更新策略参数min(A,B)*80%,对前次降频得到的请求速率阈值进行升频更新。由此,根据单位时间内存在错误的业务请求的请求数,动态更新业务节点的请求速率阈值。
[0109] 在一个实施例中,若业务节点在单位时间内对应的、存在错误的业务请求的请求数,不符合第一阈值更新条件时,路由节点将该业务节点对应的请求速率阈值更新为初始配置的请求速率阈值。或者,若业务节点在连续多个单位时间内对应的、且存在错误的业务请求的请求数,均不符合第一阈值更新条件时,路由节点将该业务节点对应的请求速率阈值更新为初始配置的请求速率阈值。
[0110] 在一个实施例中,路由节点按照业务类型,获取业务节点在单位时间内对应的、且存在错误的业务请求的请求数,并将所获取的请求数与该业务类型对应的第一阈值更新条件进行比较,以确定是否触发与该业务类型和业务节点对应的请求速率阈值的更新流程。
[0111] 在一个实施例中,路由节点针对已建立连接的每个业务节点执行上述操作。
[0112] 上述实施例中,当业务节点在单位时间内对应的、且存在错误的业务请求的请求数满足第一阈值更新条件时,按照请求数所属的数值范围更新该业务节点对应的请求速率阈值,以基于更新的请求速率阈值对该业务节点的流量进行控制时,能够提高控制效率和准确性。
[0113] 图4为一个实施例中更新上述在区块链网络中控制流量的方法中的请求速率阈值的步骤,该步骤具体包括以下步骤:
[0114] S402,获取业务节点在单位时间内对应的、存在错误的业务请求的请求数。
[0115] S404,当请求数满足第一阈值更新条件时,将业务节点对应的请求速率阈值确定为待更新的目标请求速率阈值。
[0116] S406,确定请求数所属的数值范围。
[0117] S408,获取数值范围对应的阈值更新策略参数,并作为目标请求速率阈值对应的阈值更新策略参数。
[0118] S410,按照阈值更新策略参数,更新目标请求速率阈值。
[0119] 上述实施例中,当业务需求变化时,能够及时有效的动态调整区块链网络中的请求速率阈值,也就是动态调整流量上限,以动态控制业务需求,保证区块链服务的可用性。
[0120] 在一个实施例中,当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值,包括:获取断开连接的共识节点的节点数;当节点数满足第二阈值更新条件时,将路由节点对应的请求速率阈值,确定为待更新的目标请求速率阈值;按照阈值更新策略参数,更新目标请求速率阈值,包括:获取配置的共识节点的节点总数;根据节点总数和节点数,按照阈值更新策略参数更新目标请求速率阈值。
[0121] 其中,第二阈值更新条件是根据路由节点自身对应的请求速率阈值的依据。第二阈值更新条件比如,与路由节点自身断开连接的共识节点的节点数,大于或等于节点数阈值。节点数阈值可自定义,比如1或3,在此不具体限定。节点总数是共识子网络中预配置的共识节点的总数,具体可以是共识子网络中预配置的、且与路由节点相关联的共识节点的总数。共识节点自身对应的请求速率阈值所对应的阈值更新策略参数,具体可用于指定节点数、节点总数、待更新的目标请求速率阈值,以及更新的请求速率阈值之间的映射关系。
[0122] 具体地,路由节点获取当前与自身断开连接的共识节点的节点数,并将所获取的节点数与预配置的第二阈值更新条件进行比较。当节点数满足第二阈值更新条件时,路由节点将自身对应的请求速率阈值确定为待更新的目标请求速率阈值,也就是将用于限制路由节点自身的请求总速率的请求速率阈值,确定为待更新的目标请求速率阈值。路由节点获取共识子网络中预配置的共识节点的节点总数,并获取对应于自身的请求速率阈值预配置的阈值更新策略参数。路由节点根据所获取到的节点总数和节点数,按照相应的阈值更新策略参数对该待更新的目标请求速率阈值进行更新。
[0123] 举例说明,共识子网络中预配置的共识节点的节点总数为M,当前获取的断开连接的共识节点的节点数为N,则相应的阈值更新策略参数为125%*(N/M)*C,其中,C为路由节点自身初始配置的请求速率阈值。更新比例125%仅作为示例,并不用于具体限定。
[0124] 在一个实施例中,路由节点在本地维护有共识子网络中预配置的共识节点的节点总数,以及每个共识节点的状态,并根据共识节点的状态动态更新断开连接的共识节点的节点数。
[0125] 在一个实施例中,当节点数满足第二阈值更新条件时,路由节点将针对每个业务类型预配置的、用于与该业务类型的请求总速率比较的请求速率阈值,确定为待更新的目标请求速率阈值。路由节点根据节点数和节点总数,按照每个业务类型对应的阈值更新策略参数,更新相应的目标请求速率阈值。
[0126] 上述实施例中,根据断开连接的共识节点的节点数,对路由节点自身的请求速率阈值进行降频更新,这样,当处于连接状态的共识节点的节点数低于正常值时,基于更新的请求速率阈值对路由节点的请求总速率进行控制,从而提高流量控制的准确性和效率。
[0127] 在一个实施例中,路由节点接收到业务节点发送的业务请求后,会基于业务请求中携带的身份证书对业务节点的身份进行验证。路由节点具体可以是验证身份证书的CA(Certificate Authority,证书颁发机构)和身份证书的有效性等。当CA认证失败、身份证书已过期或身份证书已被召回时,路由节点则判定该身份证书验证失败,进而判定业务节点的身份验证失败。路由节点统计每个业务节点对应的身份验证失败的次数。当统计的次数满足预配置的第三阈值更新条件时,路由节点按照相应的阈值更新策略参数,控制相应业务节点基于该验证失败的身份证书访问共识节点的访问权限,也就是对身份证书对应的请求速率阈值进行降频更新。
[0128] 举例说明,当身份证书验证失败的次数大于或等于40次时,在5分钟内拒绝业务节点基于该身份证书访问共识节点,也就是拒绝响应在5分钟内接收到的、携带该身份证书的业务请求;类似地,当身份证书验证失败的次数大于或等于20次、且小于40次时,在1分钟内拒绝业务节点基于该身份证书访问共识节点。当身份证书验证失败的次数大于或等于5次、且小于20次时,在10秒内拒绝业务节点基于该身份证书访问共识节点。
[0129] 图5为另一个实施例中更新上述在区块链网络中控制流量的方法中的请求速率阈值的步骤,该步骤具体包括以下步骤:
[0130] S502,获取断开连接的共识节点的节点数。
[0131] S504,当节点数满足第二阈值更新条件时,将路由节点对应的请求速率阈值,确定为待更新的目标请求速率阈值。
[0132] S506,获取目标请求速率阈值对应的阈值更新策略参数。
[0133] S508,获取配置的共识节点的节点总数。
[0134] S510,根据节点总数和节点数,按照阈值更新策略参数更新目标请求速率阈值。
[0135] 上述实施例中,当网络结构变化时,能够及时有效的动态调整请求速率阈值上限,从而调整流量上限,以动态控制区块链网络的性能需求,保证区块链服务的可靠性。
[0136] 图6为一个实施例中,上述在区块链网络中控制流量的方法中在路由节点与业务节点之间建立连接的步骤,该步骤具体包括:
[0137] S602,接收业务子网络中的业务节点发送的连接请求;连接请求中携带有实体标识。
[0138] S604,获取路由节点上当前的连接总数、业务节点对应的节点连接数,以及实体标识对应的实体连接数。
[0139] S606,当连接总数、节点连接数和实体连接数中的至少一个满足相应的连接限制条件时,拒绝响应连接请求。
[0140] 其中,连接请求是用于触发连接建立操作的请求,用于指示路由节点建立与业务节点之间的连接,连接具体可以是长连接。连接总数是指路由节点自身与业务子网络中的业务节点之间所建立的连接的总数。业务节点对应的节点连接数是指路由节点与该业务节点之间所建立的连接的总数。实体标识对应的实体连接数是指基于该实体标识所建立的连接的总数,也就是基于该实体标识进行握手的连接的总数。连接限制条件是判断是否建立与相应业务节点之间的连接的依据。
[0141] 具体地,路由节点接收业务子网络中的业务节点发送的、且携带有实体标识的连接请求。路由节点解析连接请求得到实体标识,并获取当前基于该实体标识与自身已建立的实体连接数。路由节点确定发送该连接请求的业务节点,并获取自身与该业务节点当前已建立的节点连接数。路由节点获取自身当前与业务子网络中的业务节点已建立的连接总数。当所获取的连接总数、节点连接数和实体连接数中的至少一个满足相应的连接限制条件时,路由节点则拒绝响应相应的连接请求,也就是不会基于该连接请求与相应业务节点之间的连接。
[0142] 在一个实施例中,路由节点针对自身的连接总数、每个业务节点对应的节点连接数,以及每个实体标识对应的实体连接数,分别预配置有相应的连接限制条件。连接限制条件具体可包括相应的连接数阈值。路由节点自身对应的连接数阈值,用于表征该路由节点与业务子网络中的业务节点可建立的连接的上限,或者,用于表征该路由节点与业务子网络中的共识节点可建立连接的业务节点的上限。路由节点自身对应的连接数阈值,限制了该路由节点可接受的连接数,保证了路由节点所在服务器的句柄使用上限,也保证了从路由节点到共识子网络的整体并发度上限,能够避免过度的并发导致系统句柄资源耗尽或者网络瘫痪。
[0143] 业务节点对应的连接数阈值,用于表征路由节点与该业务节点可建立的连接的上限。业务节点对应的连接数阈值,保证了单个业务节点所能够并发连接路由节点的上限,能够避免因单个业务节点故障或者作恶而建立起大量连接,而导致路由节点资源耗尽,从而导致其他业务节点无法访问路由节点的问题。
[0144] 实体标识对应的连接数阈值,用于表征路由节点基于该实体标识可建立的连接的上限。实体标识对应的连接数阈值,保证了单个物理实体所能建立的连接上限,用于限制单个物理实体的连接行为,能够防止在单个业务节点限制的前提下,单个物理实体基于自身的实体标识配置多个业务节点以提升并发度,而最终占用过多的路由节点资源,从而导致其他物理实体因无可用的路由节点资源而访问失败的问题。基于对应于实体标识预配置的连接数阈值,路由节点可在该实体标识对应的连接数过高时,对该实体标识对应的物理实体,和/或,该物理实体的连接行为进行记录、反馈和惩罚。
[0145] 在一个实施例中,路由节点基于令牌桶的方式实现连接限制。路由节点针对路由节点自身、每个业务节点和每个实体标识分别预配置相应的令牌桶,令牌桶中预配置有多个令牌。令牌桶的大小具体可与相应的连接数阈值成正比,也就是令牌桶中的令牌数等于相应的连接数阈值。这样,当接收到业务节点发送的连接请求后,若相应的令牌桶中还有未分发的令牌时,路由节点则将相应的令牌反馈至业务节点,以便于业务节点基于所接收到的令牌与路由节点建立连接。
[0146] 上述实施例中,从多个维度来限制路由节点的连接数,并通过连接数的限制实现对区块链网络中的流量控制,从而提高流量控制的全面性和效率。
[0147] 在一个实施例中,步骤S202之后,上述在区块链网络中控制流量的方法还包括:获取路由层中当前的目标请求总速率、业务节点对应的目标节点请求速率,以及实体标识对应的目标实体请求速率;步骤S206包括:当请求总速率、节点请求速率和实体请求速率中的至少一个满足相应的限速条件时,或者,当目标请求总速率、目标节点请求速率和目标实体请求速率中的至少一个满足相应的目标限速条件时,拒绝响应业务请求。
[0148] 其中,目标请求总速率是指整个路由层中所有路由节点上当前的请求总速率,具体可以是指每个路由节点上当前的请求总速率之和,也就是单位时间内每个路由节点上的业务请求数量的和值。业务节点对应的目标节点请求速率,是指整个路由层中每个路由节点,在单位时间内接收由该业务节点发送的业务请求数量的和值。实体标识对应的目标实体请求速率,是指整个路由层中每个路由节点,在单位时间内接收携带有该实体标识的业务请求数量的和值。
[0149] 具体地,路由节点在接收到业务节点发送的业务请求后,获取路由层中当前的目标请求总速率、该业务请求对应的业务节点所对应的目标节点请求速率,以及该业务请求中携带的实体标识所对应的目标实体请求速率。相应地,路由节点获取该路由节点上当前的请求总速率、该业务节点对应的节点请求速率,以及该实体标识对应的实体请求速率。当所获取的请求总速率、节点请求速率和实体请求速率中的至少一个满足限速条件时,或者,当所获取的目标请求总速率、目标节点请求速率和目标实体请求速率中的至少一个满足目标限速条件时,路由节点则判定满足流量控制条件,则拒绝响应相应的业务请求。
[0150] 在一个实施例中,请求总速率、节点请求速率和实体请求速率是否满足相应限速条件的判定流程,与目标请求总速率、目标节点请求速率和目标实体请求速率是否满足相应目标限速条件的判定流程,可串行执行也可并行执行,在此不做具体限定。
[0151] 在一个实施例中,路由层中的各个路由节点之间保持心跳同步,并进行流量交换,这样,路由节点在接收到业务请求后,可通过心跳同步机制和流量交换机制,获取路由层中的全局流量,也就是获取路由层中各个维度的全局请求速率,并在全局流量的基础上进行路由节点自身的流量控制。
[0152] 上述实施例中,在多维度的局部流量控制基础上,增加了多维度的全局流量控制,进一步提高了流量控制的效率。
[0153] 在一个实施例中,路由层还包括配置中心节点;配置中心节点用于配置路由层中每个路由节点上,路由节点对应的请求速率阈值、业务节点对应的请求速率阈值,以及实体标识对应的请求速率阈值。
[0154] 具体地,路由层中还包括配置中心节点,通过该配置中心节点统一配置路由层中的每个路由节点上,该路由节点自身对应的请求速率阈值、业务节点对应的请求速率阈值,以及实体标识对应的请求速率阈值。路由层中的每个路由节点从配置中心节点获取自身对应的请求速率阈值,以及该路由节点上每个业务节点和每个实体标识分别对应的请求速率阈值。
[0155] 在一个实施例中,配置中心节点具体可以是zookeeper。
[0156] 在一个实施例中,路由层中的路由节点可以无状态的横向扩展,在每个路由节点上进行请求速率阈值的配置时,要综合考虑路由层中路由节点的数量、网络质量、业务子网络中业务节点的需求,以及共识节点的现有性能等因素,各个路由节点之间无法联动,由此,通过配置中心节点来进行统一配置,能够提高配置的准确性和效率。
[0157] 上述实施例中,通过配置中心节点进行请求速率阈值的统一配置,这样,通过该配置中心节点即可实现全网限流,提高了请求速率阈值的配置效率。
[0158] 图7为一个实施例中,上述在区块链网络中控制流量的方法中的区块链网络的架构图。如图7所示,区块链网络包括业务子网络、路由层和共识子网络,业务子网络可理解为见证网络,包括多个业务节点。共识子网络包括多个共识节点。路由层包括多个路由节点,每个路由节点幂等。业务节点通过路由节点向共识节点转发业务请求。每个路由节点在接收到业务请求后,从多个维度上进行请求速率的限制,从而实现网络流量的限制或控制。当不符合网络流量的限制条件时,路由节点按照业务类型进一步进行请求速率的限制,以按照区块链功能进行流量限制,从而实现区块链功能限制。当不符合流量限制条件时,路由节点对业务请求中携带的身份证书进行身份认证。路由节点在身份认证通过时,按照业务类型进行业务功能分发,业务功能分发具体包括插入交易、请求区块和地址注册等。路由节点在本地维护有共识子网络中各个共识节点的状态,并按照负载均衡的方式将业务请求转发至共识子网络中的共识节点。共识节点针对所接收到的业务请求向相应路由节点反馈相应的数据包,比如包括错误提示信息的数据包。路由节点对数据包进行回包检查,并根据检查结果触发生成日志与错误告警。
[0159] 在本实施例中,通过对分层的区块链网络架构中的路由节点进行限流策略配置,以实现该分层的区块链网络架构中的流量平衡和性能安全。
[0160] 如图8所示,在一个实施例中,提供了应用于电子票据场景的区块链网络的架构图。整个区块链网络处于互联网中,区块链网络包括业务层、路由层和共识网络层,路由层可理解为路由代理层,用于对业务层和共识网络层进行隔离,共识网络层具体可理解为核心共识网络层。业务层、路由层和共识网络层构成了完整的区块链业务体系。业务层中的业务节点对接电子监管机构、企业和个人,电子监管机构比如电子税局,个人比如消费者。业务节点具体可以是处于监管机构专网中、且与地方监管机构对应的设备,也可以是处于公有中、且与票据开具服务商、票据报销服务商或KA企业(KeyAccount,重要客户/零售行业的工作简称)对应的设备,还可以是处于私有云中、且与支付服务商、流转服务商或KA企业对应的设备。在本实施例中,设备具体可以是终端或服务器,比如地方监管机构对应的设备为地方监管机构终端或地方监管机构服务器。
[0161] 路由层中的路由节点可理解为代理节点,路由节点能够实现业务节点和共识节点之间的P2P服务(peer-to-peer,点对点服务)、业务请求的路由服务、身份证书的证书缓存,以及身份证书的认证服务等。共识网络层和路由层通过管理机构专网进行通信。共识网络层包括多个共识节点,并维护有多个核心链,比如核心链1、核心连和核心链N等,每个核心区块链通过多个共识节点共同维护,每个共识节点具有用于缓存数据的缓存,以及用于生成区块的权限合约,并能够生成区块。
[0162] 在本实施例中,由于共识网络层处于相对安全的私有云中,其相互访问通过共识机制来保证安全,故不需要额外加入身份管理和网络控制。而业务层处于公共网络中,可能会被安全性未知的网络终端访问,因此,业务节点以及其它未知节点接入共识网络的行为需要被严格验证和控制。
[0163] 在一个实施例中,上述一个或多个实施例提供的在区块链网络中控制流量的方法中,路由节点在进行流量控制时,还会进一步考虑业务请求对应的请求包大小,也就是将请求包大小的控制作为流量控制的一个维度。
[0164] 应该理解的是,虽然本申请各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0165] 如图9所示,在一个实施例中,提供了一种在区块链网络中控制流量的装置900,所述区块链网络包括业务子网络、共识子网络以及用于隔离所述业务子网络与所述共识子网络的路由层,在区块链网络中控制流量的装置900为所述路由层中的路由节点,该在区块链网络中控制流量的装置900包括:接收模块902、获取模块904和控制模块906,其中,[0166] 接收模块902,用于接收所述业务子网络中的业务节点发送的业务请求;所述业务请求中携带有实体标识;
[0167] 获取模块904,用于获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;
[0168] 控制模块906,用于当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,拒绝响应所述业务请求。
[0169] 在一个实施例中,获取模块904,还用于确定所述业务请求对应的业务类型;根据所述业务类型,获取所述路由节点上当前的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率;所述请求总速率、所述节点请求速率和所述实体请求速率与所述业务类型对应。
[0170] 在一个实施例中,获取模块904,还用于根据所述业务类型,获取所述路由节点上前一次预测得到的预测请求速率;获取所述路由节点上所述业务类型当前对应的检测请求速率;对所述预测请求速率和所述检测请求速率进行加权计算,得到当前的预测请求速率;当前的所述预测请求速率包括所述路由节点上的请求总速率、所述业务节点对应的节点请求速率,以及所述实体标识对应的实体请求速率。
[0171] 在一个实施例中,控制模块906,还用于当所述请求总速率、所述节点请求速率和所述实体请求速率均不满足相应的限速条件时,获取所述共识子网络对应的共识节点数据;根据所述共识节点数据,按照配置的负载均衡策略参数将所述业务请求转发至所述共识子网络中的共识节点。
[0172] 在一个实施例中,上述在区块链网络中控制流量的装置900,还包括:更新模块;
[0173] 更新模块,用于当满足请求速率阈值更新条件时,确定待更新的目标请求速率阈值;获取所述目标请求速率阈值对应的阈值更新策略参数;按照所述阈值更新策略参数,更新所述目标请求速率阈值。
[0174] 在一个实施例中,更新模块,还用于获取所述业务节点在单位时间内对应的、存在错误的业务请求的请求数;当所述请求数满足第一阈值更新条件时,将所述业务节点对应的请求速率阈值确定为待更新的目标请求速率阈值;还用于确定所述请求数所属的数值范围;获取所述数值范围对应的阈值更新策略参数,并作为所述目标请求速率阈值对应的阈值更新策略参数。
[0175] 在一个实施例中,更新模块,还用于获取断开连接的共识节点的节点数;当所述节点数满足第二阈值更新条件时,将所述路由节点对应的请求速率阈值,确定为待更新的目标请求速率阈值;还用于获取配置的共识节点的节点总数;根据所述节点总数和所述节点数,按照所述阈值更新策略参数更新所述目标请求速率阈值。
[0176] 在一个实施例中,上述在区块链网络中控制流量的装置900,还包括:连接建立模块;
[0177] 连接建立模块,用于接收所述业务子网络中的业务节点发送的连接请求;所述连接请求中携带有实体标识;获取所述路由节点上当前的连接总数、所述业务节点对应的节点连接数,以及所述实体标识对应的实体连接数;当所述连接总数、所述节点连接数和所述实体连接数中的至少一个满足相应的连接限制条件时,拒绝响应所述连接请求。
[0178] 在一个实施例中,获取模块904,还用于获取所述路由层中当前的目标请求总速率、所述业务节点对应的目标节点请求速率,以及所述实体标识对应的目标实体请求速率;控制模块906,还用于当所述请求总速率、所述节点请求速率和所述实体请求速率中的至少一个满足相应的限速条件时,或者,当所述目标请求总速率、所述目标节点请求速率和所述目标实体请求速率中的至少一个满足相应的目标限速条件时,拒绝响应所述业务请求。
[0179] 在一个实施例中,所述路由层还包括配置中心节点;所述配置中心节点用于配置所述路由层中每个路由节点上,所述路由节点对应的请求速率阈值、所述业务节点对应的请求速率阈值,以及所述实体标识对应的请求速率阈值。
[0180] 图10示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的路由层120中的路由节点122。如图10所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现在区块链网络中控制流量的方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行在区块链网络中控制流量的方法。
[0181] 本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0182] 在一个实施例中,本申请提供的在区块链网络中控制流量的装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行。计算机设备的存储器中可存储组成该在区块链网络中控制流量的装置的各个程序模块,比如,图9所示的接收模块902、获取模块904和控制模块906。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的在区块链网络中控制流量的方法中的步骤。
[0183] 例如,图10所示的计算机设备可以通过如图9所示的在区块链网络中控制流量的装置中的接收模块902执行步骤S202。计算机设备可通过获取模块904执行步骤S204。计算机设备可通过控制模块906执行步骤S206。
[0184] 在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述在区块链网络中控制流量的方法的步骤。此处在区块链网络中控制流量的方法的步骤可以是上述各个实施例的在区块链网络中控制流量的方法中的步骤。
[0185] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述在区块链网络中控制流量的方法的步骤。此处在区块链网络中控制流量的方法的步骤可以是上述各个实施例的在区块链网络中控制流量的方法中的步骤。
[0186] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0187] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0188] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈