流速控制方法、服务端服务器、客户端服务器和系统与流程

文档序号:21271686发布日期:2020-06-26 22:58阅读:255来源:国知局
流速控制方法、服务端服务器、客户端服务器和系统与流程

本发明属于数据传输技术领域,具体涉及一种流速控制方法、服务端服务器、客户端服务器和系统。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

实时交易系统需满足高可用的特性。具备高可用特性的交易系统能够在各种复杂场景保持系统的健壮性,保证不间断地对外提供稳定的服务。生产环境中线上实时交易系统不可避免地会面临接收到远远超出自身系统处理能力的交易冲击的场景,此类场景包括但不限于恶意黑客攻击、大型促销场景下定点秒杀、非预期的正常交易流入等。面对此类情况,交易系统需在交易入口处对交易作甄别,及时拦截超出自身或者下游系统处理能力的交易,防止压力传导至内部引起雪崩导致系统崩溃以致无法处理交易。

现有的一种交易流速控制方法的具体操作流程是事先设置系统的容量阈值,当交易通过入口发来时,系统在入口记录并监控交易实时流量,当实时流量超过预定的阈值时拦截后续交易以防止超出流量耗尽下游系统资源导致系统崩溃无法处理交易。在实际的生产环境中,单个应用节点或者进程一般无法满足整个交易系统的超大并发的需求,交易系统一般会具备横向扩展的特性并进行多节点分布式部署。在该种情况下系统会存在多个交易入口,各个入口需要联动共同限制进入的流量,一方面要防止超出的流量流入后端系统,另一方面防止产生对未超出阈值的交易流量误限的情况。

现有交易流速控制方法存在如下问题:1、临界区问题。当交易到来的速度不均衡时会导致某一瞬间流入交易系统的交易量非常大,可能导致交易系统崩溃。2、误限问题。各个节点/进程独立地进行流速控制,当各个入口负载不均衡时会导致个别入口误限交易。3、误降级问题。系统无法动态地协调各交易入口的控制指标,当个别的交易入口节点/进程异常退出时会导致目标对象交易被降级。4、对分布式场景支持能力较差,系统不易扩展。



技术实现要素:

针对上述现有技术中存在的问题,提出了一种流速控制方法、服务端服务器、客户端服务器和系统,以至少部分解决现有技术中存在的技术问题。

本发明提供了以下方案。

第一方面,提供一种应用于服务端的流速控制方法,包括:从客户端接收令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应一令牌桶;判断所述服务端是否具有对应于所述令牌桶标识的令牌桶;在所述服务端具有对应于所述令牌桶标识的令牌桶的情况下,根据所述令牌请求向所述令牌桶请求令牌;将所述令牌请求的结果发送至所述客户端,以供所述客户端判断是否将所述令牌请求对应的数据传输请求透传至业务系统。

在一些实施例中,所述令牌请求还携带该令牌请求在所述客户端的本地时间,所述根据所述令牌请求向所述令牌桶请求令牌包括:根据预定的令牌产生速率、本次令牌请求的所述本地时间与针对该令牌桶的上次令牌请求的本地时间的时间差二者的乘积向所述令牌桶增加令牌;在更新后的所述令牌桶内令牌数大于或等于本次令牌请求的情况下,从所述令牌桶内减去本次令牌请求的令牌数,并将本次令牌请求的结果设为请求成功。

第二方面,提供一种应用于客户端的流速控制方法,包括:接收指向业务系统的数据传输请求;从所述数据传输请求提取目标对象标识;查询所述客户端本地是否具有对应于所述目标对象标识的令牌桶映射;在所述客户端本地具有对应于所述目标对象标识的令牌桶映射的情况下,向存储有令牌桶的服务端发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应于所述客户端的所述目标对象标识的一令牌桶映射对应的令牌桶;在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

在一些实施例中,在所述查询所述客户端本地是否具有对应于所述目标对象标识的令牌桶映射之后,以及在所述向服务端发送令牌请求之前,还包括:获:取本地时间;所述令牌请求还携带本次令牌请求的本地时间。

在一些实施例中,所述目标对象标识对应多个令牌桶映射,在所述查询所述客户端本地是否具有所述客户端的所述目标对象标识对应的令牌桶映射之后以及在所述向服务端发送令牌请求之前还包括:按照预定策略从所述多个令牌桶映射中选择一个令牌桶映射。

在一些实施例中,所述预定策略为轮训的策略。

在一些实施例中,所述业务系统为交易系统,所述数据传输请求为交易请求,所述目标对象标识为对交易限流对象的标识。

第三方面,提供一种流速控制方法,包括:在客户端,接收指向业务系统的数据传输请求;在所述客户端,从所述数据传输请求提取目标对象标识;在所述客户端,在所述客户端本地具有所述目标对象标识对应的令牌桶映射的情况下,向存储有令牌桶的服务端发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应所述目标对象标识的一令牌桶映射对应的令牌桶;在所述服务端,接收所述令牌请求;在所述服务端,判断所述服务端是否具有对应于所述客户端的所述目标对象标识的令牌桶,并在判断结果为是的情况下,根据所述令牌请求向所述令牌桶请求令牌;在服务端,将所述令牌请求的结果发送至所述客户端;在所述客户端,在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

第四方面,提供一种服务端服务器,其特征在于,包括第一存储器和第一处理器,所述第一存储器存储指令,所述第一处理器运行所述指令以执行第一方面的流速控制方法。

在一些实施例中,所述服务端服务器为远程字典服务器。

第四方面,提供一种客户端服务器,包括第二存储器和第二处理器,所述第二存储器存储指令,所述第二处理器运行所述指令以执行第二方面的流速控制方法。

在一些实施例中,所述客户端服务器运行所述业务系统,所述指令以组件的形式嵌入所述业务系统。

第六方面,提供一种流速控制系统,包括第四方面的服务端服务器,还包括第五方面的客户端服务器。

第七方面,提供一种服务端服务器,包括至少一个令牌产生单元和令牌桶集合单元,所述令牌桶集合单元存储多个令牌桶,所述令牌产生单元用于从客户端服务器接收令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应一令牌桶,在所述令牌桶集合单元中具有所述令牌桶标识对应的令牌桶的情况下,根据所述令牌请求向所述令牌桶请求令牌,将所述令牌请求的结果发送至所述客户端服务器,以供所述客户端服务器判断是否将所述令牌请求对应的数据传输请求透传至业务系统。

在一些实施例中,所述令牌请求还携带该令牌请求在所述客户端服务器的本地时间,所述令牌产生单元具体用于:根据预定的令牌产生速率、本次令牌请求的所述本地时间与针对该令牌桶的上次令牌请求的本地时间的时间差二者的乘积向所述令牌桶增加令牌;在更新后的所述令牌桶内令牌数大于或等于本次令牌请求的情况下,从所述令牌桶内减去本次令牌请求的令牌数,并将本次令牌请求的结果设为请求成功。

第八方面,提供一种客户端服务器,包括提取单元、令牌桶管理单元、令牌桶映射存储单元和透传单元;所述提取单元用于接收指向业务系统的数据传输请求,并从所述数据传输请求提取目标对象标识;所述令牌桶映射存储单元用于映射存储服务端服务器的令牌桶;所述令牌桶管理单元用于查询所述令牌桶映射存储单元是否具有所述目标对象标识对应的令牌桶映射,在所述令牌桶映射存储单元具有所述目标对象标识对应的令牌桶映射的情况下,向存储有令牌桶的服务端服务器发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应于所述客户端的所述目标对象标识的一令牌桶映射对应的令牌桶;所述透传单元用于在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

在一些实施例中,所述令牌桶管理单元还用于向服务端服务器发送令牌请求时携带本次令牌请求在所述客户端服务器的本地时间。

在一些实施例中,在所述客户端服务器,至少一个所述目标对象标识对应多个令牌桶映射,所述令牌桶映射存储单元还用于按照预定策略从所述多个令牌桶映射中选择一个令牌桶映射以供所述令牌桶管理单元将选中的令牌桶映射对应的令牌桶标识添加入所述令牌请求。

第九方面,提供一种流速控制系统,包括至少一个第七方面的服务端服务器,以及至少一个第八方面的客户端服务器,每个客户端服务器均与全部服务端服务器的一个令牌桶产生单元通信连接,每个令牌桶产生单元与一个客户端服务器通信连接。

在一些实施例中,所述服务端服务器为多个,至少一个目标对象对应多个令牌桶,且该目标对象对应的多个令牌桶分别存储于至少两个服务端服务器。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:根据本公开的实施例的流速控制方法,采用客户机/服务器结构以及基于令牌桶的算法对业务系统的流速进行控制。客户机(即本公开中的客户端、客户端服务器、客户端服务器)仅负责将数据传输请求对应的目标对象提取出来并向服务器(即本公开的服务端服务器、服务端服务器)中对应的令牌桶请求令牌,由服务器基于令牌桶的算法决定本次数据传输请求是否被透传至业务系统,再由客户机具体执行透传、拒绝或者排队的操作。使得运行该流速控制方法的系统具有很好的扩展性、适用于分布式场景。此外,客户机允许数据传输的速率是由服务端服务器中对应的令牌桶产生的令牌的速率所限制的。令牌桶中令牌产生的速率是可控的,那么流入业务系统的数据传输量也是可控的。如此,也避免了临界区问题。流速控制精准性得到了提升,也不存在误限和误降级的问题。

应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。

附图说明

通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:

图1是本公开的实施例提供的基于服务端的流速控制方法的流程图。

图2是本公开的实施例提供的基于客户端的流速控制方法的流程图。

图3是本公开的实施例提供的服务端服务器的框图。

图4是本公开的实施例提供的客户端服务器的框图。

图5a是本公开的实施例提供的流速控制系统的框图。

图5b是图5a所示流速控制系统中令牌桶映射关系的示意图。

图6a是本公开的实施例提供的流速控制系统的框图。

图6b是图6a所示流速控制系统中令牌桶映射关系的示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。

另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。本公开的实施例中的业务系统例如是交易系统,当然也可以是其他类型的业务系统。以交易系统为例,例如可以是a公司的交易系统,也可以是b公司的交易系统。如交易量巨大,交易系统可以采用分布式的架构进行部署。即a公司的交易系统例如可以分为交易子系统a1、交易子系统a2,b公司的交易系统例如可以分为交易子系统b1、交易子系统b2。

本公开的实施例中的目标对象,指的是需要限制流速的对象。以交易系统为例,如需对银行a的交易流速进行控制,那么目标对象就是银行a,目标对象标识例如是银行a的机构编码。

本公开的实施例基于客户机/服务器结构,也称client/serversystem,以下分别基于服务端(服务器端)、客户端(客户机端)以及由服务端和客户端构成的系统三个维度介绍本公开的流速控制方法。相关内容可互相参照,雷同之处不做赘述。

客户端可以分布在分布式交易系统的每一个子系统,例如客户端a1部署在交易子系统a1,客户端a2部署在交易子系统a2,客户端b1部署在交易子系统b1,客户端b2部署在交易子系统b2。

本公开中需要对其入口流速进行控制的可以是一个交易系统(例如它不是分布式的),也可以是一个交易子系统(例如它是分布式的),故二者在本申请中并未本质区别。

参考图1,本公开的实施例提供一种应用于服务端的流速控制方法。需要在服务端为每一个交易子系统涉及的每一个目标对象设置令牌桶。该流速控制方法包括以下步骤。

在步骤s11中,从客户端接收令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应令牌桶。

对于一个具体的交易请求,例如是交易子系统a1需要处理的指向银行a的一次交易,客户端a1会向服务端请求对应于银行a的令牌。服务端的每一个令牌桶是与一个目标对象相对应的。

在步骤s12中,判断所述服务端是否具有对应于所述令牌桶标识的令牌桶。

例如在服务端判断其存储的令牌桶中是否有对应于银行a的令牌桶。

在所述服务端具有对应于所述令牌桶标识的令牌桶的情况下,执行步骤s13,根据所述令牌请求向所述令牌桶请求令牌。在所述服务端不具有所述目标对象标识所对应的令牌桶的情况下,执行步骤s14,向该客户端返回令牌请求失败的信息。

在步骤s15中,将所述令牌请求的结果发送至所述客户端,以供所述客户端判断是否将所述令牌请求对应的数据传输请求透传至业务系统。

容易理解,即使在所述服务端具有对应于客户端a1的令牌桶的情况下,如该令牌桶内令牌数不足,该令牌请求也是失败。当然,如本次令牌请求成功,则会向客户端a1返回请求成功的信息,那么客户端a1就可以将本次交易请求透传至交易子系统a1。

基于上述流速控制方法,基于令牌桶对目标对象的数据传输请求进行限制。如果一个令牌桶的处理能力能够满足该目标对象的数据传输请求的处理能力,则仅在服务端设置一个令牌桶。客户端a1、a2、b1、b2都会向这个令牌桶请求令牌。如果一个令牌桶的处理能力不能满足该目标对象的数据传输的处理能力,则可以在服务端设置多个令牌桶。客户端a1、a2、b1、b2按照一定的策略会向这些令牌桶中的一个令牌桶请求令牌。在服务端的令牌桶的数量与目标对象要求的处理能力是呈线性的关系的。对分布式场景支持能力强大,系统易于扩展。不论是增加一个新的客户端还是增加一个新的目标对象,对于流速控制算力的需求与实际的硬件资源的消耗都是线性关系的。而且任意一个交易子系统接收到的针对于某一个目标对象的交易请求的最大速率是与该目标对象对应的全部令牌桶产生令牌的速率相对应的,不存在临界区问题。

在一些实施例中,所述令牌请求还携带该令牌请求在所述客户端的本地时间,步骤s13包括以下子步骤。

在子步骤s13a中,根据预定的令牌产生速率、本次令牌请求的所述本地时间与针对该令牌桶的上次令牌请求的本地时间的时间差二者的乘积向所述令牌桶增加令牌。

在服务端可以为每一个目标对象设置对应的令牌产生速率。目标对象的数据处理能力强,则令牌产生速率快。在服务端,每一个令牌桶中令牌的产生不是按照固定时间间隔匀速产生的,而是根据前后两次令牌请求的时间差一次性产生令牌。如此可以减少对服务端处理器计算资源的消耗。

如服务端运行在远程字典服务器,那么利用其key-value的数据结构以及并行计算的能力,可以将令牌的存储和生产集中在一起,运算的效率会进一步提升。

在子步骤s13b,在更新后的所述令牌桶内令牌数大于或等于本次令牌请求的情况下,从所述令牌桶内减去本次令牌请求的令牌数,并将本次令牌请求的结果设为请求成功。

容易理解,如某一个令牌桶接收到的前后两次令牌请求之间的时间间隔过短,则新增的令牌数不足,该令牌请求可能会失败。这里要求所有业务系统的时间是对准的。

服务端无需动态协调各个交易子系统的流速,也不存在某个交易子系统因负载过大而被限制交易的问题。对于流速的控制也更加精确。

令牌桶中令牌产生的速率是可控的,那么流入业务系统的数据传输量(例如是流入每一个交易子系统的交易请求的量)也是可控的。如此,也避免了临界区问题。流速控制精准性得到了提升,也不存在误限和误降级的问题。

与上述流速控制方法相对应,参考图2,本公开的实施例还提供一种应用于客户端的流速控制方法。其包括以下步骤。

在步骤s21中,接收指向业务系统的数据传输请求。

在步骤s22,从所述数据传输请求提取目标对象标识。

例如客户端a1接收到指向业务系统a1的交易请求,从中提取出需要由银行a处理该交易。又例如客户端a1接收到指向业务系统a1的交易请求,从中提取出需要由银行b处理该交易。

在步骤s23,查询所述客户端本地是否具有对应于所述目标对象标识的令牌桶映射。

例如客户端a1本地存储有对应于银行a的令牌桶映射。

令牌桶映射是其对应于服务端的令牌桶的一个映射。对于令牌桶的实际操作是在服务端完成的。该令牌桶映射可以仅是一个标识,表明本客户端能够处理针对某个目标对象的的流速控制问题。相当于:在服务端的负责该客户端的该目标对象的令牌桶在该客户端本地存储有一个“标签”。

在步骤s26中,在所述客户端本地具有对应于所述目标对象标识的令牌桶映射的情况下,向存储有令牌桶的服务端发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应于所述目标对象标识的一令牌桶映射对应的令牌桶。

在步骤s27中,在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

如果服务端具有该令牌桶标识对应的令牌桶,但令牌桶内令牌数不足,有两种处理方式:一是向该客户端返回请求失败的信息,该客户端丢弃本次数据传输请求,二是向该客户端返回所请求的令牌桶内令牌数不足的信息,该客户端将本次令牌请求加入排队队列中。

当然,如果在所述客户端本地不具有所述目标对象标识对应的令牌桶映射的情况下,也就是说该客户端对应的交易子系统不处理该目标对象的交易请求,那么执行步骤s25,拒绝本次数据传输请求。具体可以是丢弃本次数据传输请求。当然业务系统也可以为该目标对象在该客户端新建一个令牌桶,然后将新建的令牌桶同步至服务端。后续对应于该目标对象的流速控制的运算仍如前例主要由服务端负责。

由于客户端仅执行查询和与服务端数据交互的任务,客户端消耗的计算量是很少的。

根据客户端的工作过程,当交易到来的速度不均衡时,由于流入交易系统的交易都需要请求令牌,实际流入交易系统的交易量不存在井喷的可能性,也就减少误限交易的可能。交易系统的流速控制彼此的独立,无需动态地协调各交易系统入口的控制指标。对分布式场景支持能力较强,系统易于扩展。

在一些实施例中,在所述查询所述客户端本地是否具有对应于所述目标对象标识的令牌桶映射之后,以及在所述向服务端发送令牌请求之前,还包括步骤s24:获取本地时间;所述令牌请求还携带本次令牌请求的本地时间。

这是与前述服务端的流速控制方法中需要两次令牌请求的时间差来确定令牌增加量的实施例相对应的实施方式。

在一些实施例中,所述目标对象标识对应多个令牌桶映射,在所述查询所述客户端本地是否具有所述客户端的所述目标对象标识对应的令牌桶映射之后以及在所述向服务端发送令牌请求之前还包括:按照预定策略从所述多个令牌桶映射中选择一个令牌桶映射。

即如果单个令牌桶的性能不能满足某个目标对象的交易需求时,可以在服务端为这个目标对象分配多个令牌桶。客户端根据一定的策略每次从这些令牌桶中选择一个去请求令牌。

所有的客户端在初次创建目标对象时按照统一的配置决定是否为该目标对象分配一个还是多个令牌桶,具体令牌桶的数量、每个令牌桶承担多少流速控制任务。客户端本地完成令牌桶的创建后同步存储至服务端。令牌桶的计算后续由服务端承担。

在一些实施例中,所述预定策略为轮训的策略。即按照固定的顺序依次选择一个令牌桶。当然,选择令牌桶的策略不限于此。

在一些实施例中,所述业务系统为交易系统,所述数据传输请求为交易请求,所述目标对象标识为对交易限流对象的标识。

前述基于客户端的流速控制方法和基于服务端的流速控制方法彼此配合,从二者构成的流速控制系统角度来讲,该方法可以包括以下步骤。

在客户端,接收指向业务系统的数据传输请求。

在所述客户端,从所述数据传输请求提取目标对象标识。

在所述客户端,在所述客户端本地具有所述目标对象标识对应的令牌桶映射的情况下,向存储有令牌桶的服务端发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应所述目标对象标识的一令牌桶映射对应的令牌桶。

在所述服务端,接收所述令牌请求。

在所述服务端,判断所述服务端是否具有所述令牌桶标识对应的令牌桶,并在判断结果为是的情况下,根据所述令牌请求向所述令牌桶请求令牌。

在服务端,将所述令牌请求的结果发送至所述客户端。

在所述客户端,在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

该业务交易系统的进一步详细的特征可以参照前述实施例的介绍,不作赘述。

参考图3,本公开的实施例还提供一种服务端服务器,包括第一存储器100和第一处理器200,第一存储器100存储指令,第一处理器200运行该指令以执行根据前述的基于服务端的流速控制方法。

在一些实施例中,所述服务端服务器为远程字典服务器(redis服务器)。这是由于redis服务器中key-value数据库结构,可以使得令牌的存储和生产集中在一起,降低在服务端服务器一侧的计算量。

参考图4,本公开的实施例还提供一种客户端服务器,包括第二存储器300和第二处理器400,第二存储器300存储指令,第二处理器400运行该指令以执行前述的基于客户端的的流速控制方法。

在一些实施例中,所述客户端服务器运行所述业务系统,所述指令以组件的形式嵌入所述业务系统。即无需为业务系统的流速控制单独部署一个物理的服务器实体,直接在运行业务系统的服务器的代码中加入这些指令即可。

以上的处理器200、400可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

以上的存储器100、300可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

本公开的实施例还提供一种流速控制系统,包括上述的服务端服务器,还包括上述的客户端服务器。

以下从流速控制系统的具体实现架构角度进一步说明本公开的流速控制方法的有益效果。以下提到的各模块、单元均可以是一个软件的程序模块、程序单元,当然也可以是实现对应功能的硬件模块、硬件单元。本公开对此不做特别限定。

本公开的实施例提供一种服务端服务器,包括至少一个令牌产生单元和令牌桶集合单元,所述令牌桶集合单元存储多个令牌桶,所述令牌产生单元用于从客户端服务器接收令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应一令牌桶,在所述令牌桶集合单元中具有所述令牌桶标识对应的令牌桶的情况下,根据所述令牌请求向所述令牌桶请求令牌,将所述令牌请求的结果发送至所述客户端服务器,以供所述客户端服务器判断是否将所述令牌请求对应的数据传输请求透传至业务系统。

对应地,本公开的实施例还提供一种客户端服务器,包括提取单元、令牌桶管理单元、令牌桶映射存储单元和透传单元;所述提取单元用于接收指向业务系统的数据传输请求,并从所述数据传输请求提取目标对象标识;所述令牌桶映射存储单元用于映射存储服务端服务器的令牌桶;所述令牌桶管理单元用于查询所述令牌桶映射存储单元是否具有所述目标对象标识对应的令牌桶映射,在所述令牌桶映射存储单元具有所述目标对象标识对应的令牌桶映射的情况下,向服务端服务器发送令牌请求,所述令牌请求携带令牌桶标识,所述令牌桶标识对应于所述目标对象标识的一令牌桶映射对应的令牌桶;所述透传单元用于在所述令牌请求成功的情况下将所述数据传输请求透传至所述业务系统。

参考图5a,例如,客户端服务器5000a包括:提取单元5001a、令牌管理单元5002a、令牌桶映射存储单元5003a、透传单元5004a。客户端服务器5000b包括:提取单元5001b、令牌管理单元5002b、令牌桶映射存储单元5003b、透传单元5004b。

该服务端服务器6000包括令牌产生单元6002、6003。令牌产生单元6002为客户端服务器5000a提供服务,令牌产生单元6003为客户端5000b提供服务。客户端服务器5000a例如为交易子系统7000a提供流速控制服务,客户端5000b例如为交易子系统7000b提供流速控制服务。

以上服务端服务器与客户端服务器配合构成一流速控制系统。

参考图5b,令牌桶映射存储单元5003a存储目标对象1-目标对象3的令牌桶映射,令牌桶集合单元6001存储目标对象1-目标对象2的令牌桶。如目标对象1-目标对象3的交易量较小,那么为每一个目标对象配置一个令牌桶即可满足算力的要求。

具体地,参考图5a和图5b,客户端服务器5000a接收到一个针对目标对象1的数据传输请求后会通过令牌产生单元6002向目标对象1令牌桶请求令牌。客户端服务器5000b接收到一个针对目标对象1的数据传输请求后也会通过令牌产生单元6003向目标对象1令牌桶请求令牌。

以上各单元的工作原理可以参照之前流速控制方法的实施例的介绍。

参考图5a和6a,客户端服务器中还设置接口单元(例如接口单元5005a、5005b),接口单元也称api接口(应用程序接口)。可通过api接口接收指令,在客户端服务器创建令牌桶或删除令牌桶,并同步至服务端服务器。随后令牌桶的运算由服务端服务器承担。接口单元还用于完成客户端服务器中令牌桶标识与服务端服务器中的令牌桶之间的更新、设置令牌请求的方式的设置等功能。

各个交易子系统之间无需数据同步,各交易子系统的部署位置以及数量等不会对目标对象的流速控制产生影响。目标对象的流速控制的算力需求的增加与服务端服务器的软件或硬件资源的增加是线性关系的,服务端服务器与客户端服务器的二者构成的流速控制系统的规模是可控的,整体系统具有较好的扩展性,支持分布式场景加之令牌服务模块基于令牌桶进行流速控制,也避免了出现临界区问题和误限问题的可能。

在一些实施例中,所述服务端服务器为多个,至少一个目标对象对应多个令牌桶,且该目标对象对应的多个令牌桶分别存储于至少两个服务端服务器。

图6a和图6b展示了这种系统扩展中,资源消耗的线性关系。如目标对象4对流速控制的算力要求较高,那么可以为目标对象4分配3个令牌桶(其中两个存储于客户端服务器6000a中的令牌桶集合单元6001a中,一个存储于客户端服务器6000b中的令牌桶集合单元60001b中)。这3个令牌桶在服务端服务器6000b和6000a之间如何分配可以按照hash算法实现。

图6a和图6b中,如令牌请求携带的令牌桶标识为目标对象4令牌桶1,由于令牌桶如何分配是已知的,那么令牌桶管理单元5002a会向令牌桶产生单元6002a请求令牌,进而令牌产生单元6002a会向令牌桶集合单元6001a中对应的令牌桶请求令牌。

在一些实施例中,客户端服务器中,所述令牌桶管理单元还用于:向服务端服务器发送令牌请求时携带本次令牌请求在所述客户端服务器的本地时间。

与此相对应,服务端服务器中,所述令牌产生单元具体用于:根据预定的令牌产生速率、本次令牌请求的所述本地时间与针对该令牌桶的上次令牌请求的本地时间的时间差二者的乘积向所述令牌桶增加令牌;在更新后的所述令牌桶内令牌数大于或等于本次令牌请求的情况下,从所述令牌桶内减去本次令牌请求的令牌数,并将本次令牌请求的结果设为请求成功。

在一些实施例中,在所述客户端服务器,至少一个所述目标对象标识对应多个令牌桶映射,所述令牌桶映射存储单元还用于按照预定策略从所述多个令牌桶映射中选择一个令牌桶映射以供所述令牌桶管理单元将选中的令牌桶映射对应的令牌桶标识添加入所述令牌请求。

参考图6a和图6b,客户端服务器5000a用于为交易子系统7000a提供流速控制服务,由于涉及目标对象4的业务量较大,故为目标对象4分配3个令牌桶,分别存储于服务端服务器5000a和5000b。

当然,在一些实施例中,某个服务端服务器存储的可能全部为同一个目标对象对应的令牌桶。

图6a中,客户端服务器5000a每次接收到涉及目标对象4的流速控制业务时,按照预定策略从这3个令牌桶映射中选择一个令牌桶映射,随后向选中的令牌桶映射所对应的令牌桶请求令牌。

性能上,单个令牌服务模块能提供每秒2万次以上的令牌请求的计算量,对于交易系统的处理交易产生的延时大部分控制在2毫秒以内。

容易理解,以上对于流速控制算力的增加与令牌桶数量的增加呈线性关系的。实践表明,全部客户端服务器占用的计算资源与流速控制系统消耗的计算资源之比是可以控制在3%以下的。如将客户端服务器嵌入在业务系统中,或者说客户端服务器本身即是运行业务系统的服务器,那么对业务系统的计算资源的消耗也是很少的。

可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1