一种基于多级缓冲队列的区块链交易限流方法与流程

文档序号:11215653阅读:1090来源:国知局
一种基于多级缓冲队列的区块链交易限流方法与流程

本发明属于区块链技术领域,特别是涉及区块链处理突发交易流量高峰的场景。



背景技术:

近年来,区块链技术得到了长足的发展,在交易处理速度上也有了极大的提升,其中以天德链为代表的第三代区块链实测性能可以到达万笔每秒,但是在为商业应用服务时,极有可能面临突发的交易高峰场景,如双11秒杀活动支付峰值达到12万笔/秒,区块链交易处理的速度仍然满足不了这种突发流量,瞬时的大量交易可能导致整个区块链系统宕机,造成不可挽回的损失。为了解决上述问题,在传统高并发系统中,通常会利用缓存、降级和限流来提升系统的交易处理容量,暂时屏蔽掉突发流量,对系统进行负载均衡,对并发访问、请求进行限速等措施来保护系统,传统高并发系统基本是主从式系统架构,而区块链系统则采用完全对等的技术架构,所以传统的解决方案并不能有效满足区块链系统的技术需求。为了让区块链技术平台更好地应对处理高峰交易的场景,我们在传统高并发系统的基础上,发明了一种基于多级缓冲队列的区块链交易限流方法,将高并发系统的特点和区块链多节点共识的特点相结合,能有效满足区块链系统高效处理交易的需求,同时保证区块链系统的高并发性、高可用性和高稳定性。



技术实现要素:

为了应对区块链系统在处理高峰交易场景中的不足,本发明提供了一种基于多级缓冲队列的区块链交易限流方法。

本发明所采用的技术方案是:在区块链系统中,使用多级缓冲队列对交易流量进行分流和限流,达到平滑突发峰值流量的效果,能有效利用好系统的高并发处理能力。第一级的缓冲队列非常大,能及时缓冲客户端发起的交易处理请求,保证交易请求不会由于拒绝访问而丢弃,第二级缓冲队列相对较小,二级缓冲队列的个数根据并发线程数进行调整,主要对交易处理请求进行分流,每条分流称之为一个通道,在分流的同时起到负载均衡的作用,默认系统中的每个交易都带有唯一的交易id,对交易id进行哈希运算,对运算所得哈希值用缓冲队列数进行取模运算,根据模数将交易分配到对应的二级缓冲队列,在第二级缓冲队列和第三级缓冲队列进行限流,限流策略是通过设置第三级缓冲队列的大小来及时调整限流速率,根据线程的处理能力及时调整缓冲队列大小,满足突发流量的处理请求。

本发明充分利用了区块链系统的并发处理能力,满足一定突发峰值交易的处理请求,结合负载均衡技术,最大化系统的并发能力,有效提高系统的稳定性。

附图说明

图1为第一级缓冲队列内部存储示意图;

图2为区块链交易的分流详细示意图;

图3为区块链交易的限流示意图;

图4为区块链交易整体流程示意图;

图5为区块链交易分流简要示意图;

图6为区块链共识线程取出的交易示例。

具体实施方式

在阐述多级缓冲队列系统的具体实施方式之前,我们首先了解一下区块链系统的工作原理,区块链系统的核心是共识算法,其中大部分许可链采用pbft算法,参与共识的节点对交易进行验证并投票,假设参与共识的节点个数为3f+1(4,7…),当达成共识(投票通过)的节点个数≥2f+1(3,5…)时,区块链系统即认为该交易是有效的,区块链系统会将在一次共识过程中的有效交易存入一个区块中,并连接到区块链的尾部。

首先我们假设区块链系统共存在4个共识节点,每个节点都有一个多级缓冲队列系统,该缓冲队列系统有2个通道,第三级缓冲队列的限流为2个交易,多级缓冲队列系统的工作流程有以下4个步骤:

(1)区块链交易进入多级缓冲队列系统

客户端系统分别向四个节点的第一级缓冲队列发送了6笔交易tx1—tx6,在第一级缓冲队列中push进6笔交易,如图1所示。

(2)区块链交易的分流

按照队列先进先出的原则,调度器从第一级缓冲队列pop出交易,首先tx1从队列中弹出,对交易的id进行哈希计算,假设hash(tx1_id)=0x0001,然后对哈希值进行取模,模数为通道数,0x0001%2=1,交易tx1被分配到通道1的第二级缓冲队列。同理,交易tx2-tx6也会被弹出,被分配到对应的通道,交易被分流到通道的总体情况,如图2所示。

(3)区块链交易的限流

在本例中第三级缓冲队列的限流为2个交易,从第二级缓冲队列到第三级缓冲队列的最大交易个数为2个,第三级缓冲队列所起的作用类似于漏桶算法的漏桶,控制交易处理的速率,平滑交易处理高峰期的突发流量,如图3所示。

(4)区块链交易流出多级缓冲队列系统

bc共识线程(blockchain,区块链)从第三级缓冲队列中取出交易进行共识投票的过程,由于有多个bc共识线程,因此区块链的共识过程可以并行处理交易,提升区块链系统的处理交易的能力。

总的来说,从客户端发起交易,到多级缓冲队列系统,再由bc共识线程处理的整体流程,如图4所示。为了更深刻理解多级缓冲队列子系统对提升区块链系统处理交易性能的重要性,我们假设缓冲队列子系统只有第一级的缓冲队列,没有第二级和第三级的缓冲队列,在这种假设条件下,2个bc共识线程从第一级缓冲队列中取交易进行共识投票,每个线程每次共识从缓冲队列中取2个交易,bc共识线程之间是竞争关系,对缓冲队列的访问必须是互斥的,如图5所示。bc共识线程可能取出的交易情况如图6所示,在四个节点的bc共识线程由于竞争关系,各自取到上述的交易序列时,会导致线程0对交易txid1-txid4的共识失败(由于不满足≥2f+1的关系),重新将交易txid1-txid4打回到第一级缓冲队列的队尾,准备下次再取这些交易进行第二次共识。而对于多级缓冲队列子系统,对交易进行分流和限流之后,能有效避免出现上述问题,可以说分流提升了区块链系统整体的共识效率,同时达到了一定的负载均衡效果,最大化区块链系统的并发效率,而限流则让区块链系统在突发高峰交易处理时平滑交易流量,保证了系统的高可用性和稳定性。



技术特征:

技术总结
本发明提供了一种多级缓冲队列的区块链交易限流方法,其特征在于包括步骤:1)客户端向区块链发出交易请求;2)交易插入第一级缓存队列中,将每个交易的交易ID进行哈希处理;3)将得到的哈希值按照第二级缓存队列数进行取模处理,根据取模的余数把该交易插入相对应的第二级缓存队列中;4)在第二级缓存队列插入第三级缓存队列的过程中对交易数进行限流,限流策略是通过设置第三级缓冲队列的大小来及时调整限流速率,通过调度器根据线程的处理能力及时调整缓冲队列大小,满足突发流量的处理请求。本发明充分的利用了区块链系统的并发处理能力,满足一定突发峰值交易的处理请求,结合负载均衡技术,最大化系统的并发能力,能有效的提高区块链系统的稳定性。

技术研发人员:邓恩艳
受保护的技术使用者:北京天德科技有限公司
技术研发日:2017.06.22
技术公布日:2017.10.10
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1