一种计数方法、装置、电子设备和存储介质

文档序号:1922545 发布日期:2021-12-03 浏览:12次 >En<

阅读说明:本技术 一种计数方法、装置、电子设备和存储介质 (Counting method and device, electronic equipment and storage medium ) 是由 刘海波 于 2021-01-19 设计创作,主要内容包括:本申请实施例提出了一种计数方法、装置、电子设备和计算机存储介质,该方法包括:在服务端中确定出一个主计数节点;所述主计数节点包括QPS计数器,所述QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;采用第一计数模式,实现QPS计数;所述第一计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,执行对所述主计数节点的QPS计数器的计数累加操作,将所述计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;所述从计数节点表示所述服务端中除所述主计数节点之外的其它计数节点,N小于所述从计数节点中计数节点的总数。(The embodiment of the application provides a counting method, a counting device, electronic equipment and a computer storage medium, wherein the method comprises the following steps: determining a main counting node in a server; the master counting node comprises a QPS counter for performing a count accumulation operation for a QPS count request for a resource access; realizing QPS counting by adopting a first counting mode; the first counting mode represents a mode that when the main counting node acquires a QPS counting request of a client, counting and accumulating operations of a QPS counter of the main counting node are executed, the counting and accumulating operations are synchronized to the slave counting nodes, and after N counting nodes in the slave counting nodes are synchronized, counting success is returned to the client; the slave counting nodes represent other counting nodes except the master counting node in the server, and N is less than the total number of the counting nodes in the slave counting nodes.)

一种计数方法、装置、电子设备和存储介质

技术领域

本申请涉及互联网集群技术领域,尤其涉及一种计数方法、装置、电子设备和计算机存储介质。

背景技术

相关技术中,基于互联网集群的每秒查询率(Queries-per-second,QPS)计数统计方案,主要采用以下方式:对同一个标识的资源访问使用单机统计所有QPS计数,并实时将QPS数据同步复制到备份机器;进而,当主机发生宕机后,可以自动切换到备份机器上,从而能够继续服务。

然而,上述方案在将QPS数据同步到备份机器时,只有当所有备份机器同步完成之后才会返回客户端;即,客户端必须要等到所有QPS数据都同步到备份机器之后才能够执行后续工作,并且任何一个备份机器的性能对客户端的响应时长都有关联;可见,会增大客户端的响应时间。

发明内容

本申请提供一种计数方法、装置、电子设备和计算机存储介质。

本申请的技术方案是这样实现的:

本申请实施例提供了一种计数方法,所述方法包括:

在服务端中确定出一个主计数节点;所述主计数节点包括QPS计数器,所述QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;

采用第一计数模式,实现QPS计数;所述第一计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,执行对所述主计数节点的QPS计数器的计数累加操作,将所述计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;所述从计数节点表示所述服务端中除所述主计数节点之外的其它计数节点,N小于所述从计数节点中计数节点的总数。

在一些实施例中,所述方法还包括:

确定候选计数模式集;所述候选计数模式集包括所述第一计数模式和其它计数模式;

从所述候选计数模式集中选择目标计数模式,实现QPS计数。

在一些实施例中,所述其它计数模式包括第二计数模式和/或第三计数模式;其中,

所述第二计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,执行对所述主计数节点的QPS计数器的计数累加操作,向客户端返回计数成功,将所述计数累加操作同步到从计数节点的模式;

所述第三计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,向客户端返回计数成功的模式,执行对所述主计数节点的QPS计数器的计数累加操作,将所述计数累加操作同步到从计数节点的模式。

在一些实施例中,所述在服务端中确定出一个主计数节点,包括:

建立选举集群,所述选举集群包括在服务端中的计数节点;

通过投票机制从所述选举集群中确定出一个主计数节点。

在一些实施例中,所述方法还包括:

当所述主计数节点不可用时,通过投票机制从所述从计数节点中重新确定出一个主计数节点。

在一些实施例中,所述主计数节点还用于在所述QPS计数器每次进行计数累加操作时,同步执行对所述全局数据索引的计数累加操作,将所述全局数据索引的计数累加操作同步到从计数节点,所述全局数据索引用于针对全部资源访问的QPS计数请求执行计数累加操作;所述通过投票机制从所述从计数节点中重新确定出一个主计数节点,包括:

确定所述从计数节点中每个计数节点的全局数据索引;

在所述每个计数节点进行投票、且确定其它从计数节点的全局数据索引大于或等于所述每个计数节点的全局数据索引时,利用所述每个计数节点对所述其它从计数节点进行投票,得到投票结果;

基于所述每个计数节点的投票结果,从所述从计数节点中确定出一个主计数节点。

在一些实施例中,所述基于所述每个计数节点的投票结果,从所述从计数节点中确定出一个主计数节点,包括:

基于所述每个计数节点的投票结果,确定所述从计数节点中每个计数节点获得的投票数;

在所述投票数大于所述从计数节点中总计数节点数量的一半时,将所述投票数对应的计数节点作为主计数节点。

本申请实施例还提出了一种计数装置,所述装置包括确定模块和计数模块,其中,

确定模块,用于在服务端中确定出一个主计数节点;所述主计数节点包括QPS计数器,所述QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;

计数模块,用于采用第一计数模式,实现QPS计数;所述第一计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,执行对所述主计数节点的QPS计数器的计数累加操作,将所述计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;所述从计数节点表示所述服务端中除所述主计数节点之外的其它计数节点,N小于所述从计数节点中计数节点的总数。

本申请实施例提供一种电子设备,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述一个或多个技术方案提供的计数方法。

本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后能够实现前述一个或多个技术方案提供的计数方法。

本申请实施例提出了一种计数方法、装置、电子设备和计算机存储介质,该方法包括:在服务端中确定出一个主计数节点;所述主计数节点包括QPS计数器,所述QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;采用第一计数模式,实现QPS计数;所述第一计数模式表示在所述主计数节点获取到客户端的QPS计数请求时,执行对所述主计数节点的QPS计数器的计数累加操作,将所述计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;所述从计数节点表示所述服务端中除所述主计数节点之外的其它计数节点,N小于所述从计数节点中计数节点的总数。如此,客户端不需要等到QPS计数器的计数累加操作同步到从计数节点中的全部计数节点之后才执行后续工作,即,客户端的响应时长只与同步完成的这部分计数节点的性能有关;进而,会降低客户端的响应时间。

附图说明

图1是本申请实施例中的一种计数方法的流程示意图;

图2a为本申请实施例中实现计数方法的框架的结构示意图;

图2b为本申请实施例的主计数节点进行QPS计数的流程图;

图2c为本申请实施例的对从计数节点同步的流程图;

图2d为本申请实施例中采用第一种计数模式执行计数的流程图;

图2e为本申请实施例中采用第二种计数模式执行计数的流程图;

图2f为本申请实施例中采用第三种计数模式执行计数的流程图;

图3a为本申请实施例的计数装置的组成结构示意图一;

图3b为本申请实施例的计数装置的组成结构示意图二;

图4为本申请实施例的电子设备的结构示意图。

具体实施方式

以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本申请,并不用于限定本申请。另外,以下所提供的实施例是用于实施本申请的部分实施例,而非提供实施本申请的全部实施例,在不冲突的情况下,本申请实施例记载的技术方案可以任意组合的方式实施。

需要说明的是,在本申请实施例中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其它要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,I和/或J,可以表示:单独存在I,同时存在I和J,单独存在J这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括I、J、R中的至少一种,可以表示包括从I、J和R构成的集合中选择的任意一个或多个元素。

例如,本申请实施例提供的计数方法包含了一系列的步骤,但是本申请实施例提供的计数方法不限于所记载的步骤,同样地,本申请实施例提供的计数设备包括了一系列模块,但是本申请实施例提供的计数设备不限于包括所明确记载的模块,还可以包括为获取相关时序数据、或基于时序数据进行处理时所需要设置的模块。

本申请实施例可以应用于服务器组成的计算机系统中,并可以与众多其它通用或专用计算系统环境或配置一起操作。这里,服务器可以是服务器计算机系统小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。

服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。

在互联网集群应用中,往往需要通过限流降级方案来确保后端系统的稳定性。在限流降级方案中,基础的方案是基于QPS的降级防护;为了解决单机限流不均衡的问题,通常都需要引入集群限流方案。在基于QPS的集群方案中,核心实现为如何实现QPS的计数统计。

针对上述技术问题,提出以下各实施例。

在本申请的一些实施例中,计数方法可以利用计数装置中的处理器实现,上述处理器可以为特定用途集成电路(Application Specific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital SignalProcessing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、中央处理器(CentralProcessing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。

图1是本申请实施例中的一种计数方法的流程示意图,如图1所示,该方法包括如下步骤:

步骤100:在服务端中确定出一个主计数节点;主计数节点包括QPS计数器,QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作。

在一种实施方式中,服务端是为客户端提供服务的,服务的内容可以包括:向客户端提供QPS计数服务、保存客户端数据等;服务端可以与某一个客户端建立连接,也可以与多个客户端建立连接;客户端用于实现与用户之间的交互。

本申请实施例中,服务端中可以包括多个计数节点,每个计数节点可以表示为一个设备,例如,计算机;从服务端中的所有计数节点中确定出一个主计数节点后,其它计数节点则为从计数节点;其中,主计数节点可以表示服务端中的主机,从计数节点中的每个计数节点表示备份机器;备份机器可以对主机执行的相关操作进行备份,以确保主机发生故障时,可以继续对客户端进行服务。

在一种实施方式中,在服务端中存在多个计数节点的情况下,用户可以直接通过客户端将其中一个计数节点设置为主计数节点。

在一种实施方式中,对于在服务端中确定出一个主计数节点的实现方式,还可以首先建立选举集群,选举集群包括在服务端中的计数节点;然后通过投票机制从选举集群中确定出一个主计数节点。

在一种实施方式中,每个计数节点都有一次投票机会,由于不同计数节点的投票速度存在差异,使得不同计数节点的投票结果不相同;这里,可以将服务端中最先获得超过一半票数的计数节点确定为主计数节点。

在一种实施方式中,假设服务端中存在三个计数节点,分别为计数节点1、计数节点2和计数节点3,若得到计数节点1、计数节点2和计数节点3的投票结果分别为0、2、1;则通过投票机制可以确定出计数节点2为主计数节点。

本申请实施例中,在主计数节点还未确定之前,服务端不会对客户端进行QPS计数服务;只有在服务端中确定出主计数节点后,主计数节点才会接收客户端发送的QPS计数请求,并通过自身的QPS计数器针对该QPS计数请求执行计数累加操作。

这里,计数累加操作可以按照每次加设定值的方式执行,设定值可以为1、2、3等,本申请实施例对此不作限制。

在一种实施方式中,客户端发送的每个QPS计数请求是针对一种资源访问的QPS计数请求;不同客户端可以向服务端发送针对同一种资源访问的QPS计数请求;同一个客户端可以向服务端发送针对不同资源访问的多个QPS计数请求。

本申请实施例中,通过QPS计数器对每一种资源访问的QPS计数请求分别执行计数累加操作,即,可以分别对客户端每一种资源访问的次数进行计数统计,得到每一种资源访问的计数结果。这里,每一种资源访问的计数结果都是独立存储的,并且每一种资源访问与计数结果是一一对应的。

在一种实施方式中,假设主计数节点的QPS计数器还未开始计数,主计数节点首次接收到第一种资源访问的QPS计数请求时,第一种资源访问的计数结果为1,主计数节点首次接收到针对第二种资源访问的QPS计数请求时,第二种资源访问的计数结果为1,再次接收到针对第二种资源访问的QPS计数请求时,第二种资源访问的计数结果为2。

在一种实施方式中,在得到每一种资源访问对应的计数结果后,主计数节点可以将这些计数结果返回给客户端,客户端再根据这些计数结果确定是否进行限流操作;进而,达到集群流控的目的。

在一种实施方式中,不同资源之间可以通过关键字或者标识进行区分;例如,可以通过C和D分别表示两种不同的资源标识。

在一种实施方式中,客户端可以直接向服务端发送针对一种资源访问的QPS计数请求,还可以通过发送资源标识或关键字的方式向服务端发送针对资源标识或关键字对应的资源访问的QPS计数请求。

步骤101:采用第一计数模式,实现QPS计数;第一计数模式表示在主计数节点获取到客户端的QPS计数请求时,执行对主计数节点的QPS计数器的计数累加操作,将计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;从计数节点表示服务端中除主计数节点之外的其它计数节点,N小于从计数节点中计数节点的总数。

在一种实施方式中,假设服务端中包括6的计数节点,除1个主计数节点之外,其它5个计数节点均为从计数节点;其中,N的取值可以是小于5的任意正整数,例如,N可以为1、2或3等。

本申请实施例中,每个计数节点均包括一个QPS计数器;当主计数节点的QPS计数器执行计数累加操作后,将该计数累加操作同步到从计数节点的QPS计数器。

在一种实施方式中,当主节点接收到客户端发送的针对每一种资源访问的QPS计数请求时,主计数节点的QPS计数器执行针对每一种资源访问次数的计数累加操作,并将该计数累加操作同步到从计数节点的QPS计数器,从计数节点的QPS计数器执行针对每一种资源访问次数的计数累加操作,从计数节点中每个计数节点可以得到每一种资源访问的计数结果。

在一种实施方式中,当从计数节点中部分计数节点的QPS计数器执行计数累加操作后,则说明该部分计数节点已经同步完成;当从计数节点中全部计数节点的QPS计数器执行计数累加操作后,则说明从计数节点中全部计数节点已经同步完成。

本申请实施例中,当采用第一计数模式实现QPS计数时,在从计数节点中部分计数节点同步完成后,便向客户端返回计数成功;示例性地,在从计数节点有三个计数节点的情况下,只要其中一个计数节点同步完成后,便可以向客户端返回计数成功。

这里,返回计数成功的方式可以通过屏幕显示,也可以通过语音提醒等,本申请实施例对此不作限制。

可见,本申请实施例不需要等到主计数节点的QPS计数器的计数累加操作同步到从计数节点中的全部计数节点之后才执行后续工作,进而,会降低客户端的响应时间。

本申请实施例提出了一种计数方法、装置、电子设备和计算机存储介质,该方法包括:在服务端中确定出一个主计数节点;主计数节点包括每秒查询率QPS计数器,QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;采用第一计数模式,实现QPS计数;第一计数模式表示在主计数节点获取到客户端的QPS计数请求时,执行对主计数节点的QPS计数器的计数累加操作,将计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;从计数节点表示服务端中除主计数节点之外的其它计数节点,N小于从计数节点中计数节点的总数。如此,客户端不需要等到QPS计数器的计数累加操作同步到从计数节点中的全部计数节点之后才执行后续工作,即,客户端的响应时长只与同步完成的这部分计数节点的性能有关;进而,会降低客户端的响应时间。

在一种实施方式中,上述计数方法还包括:确定候选计数模式集;候选计数模式集包括第一计数模式和其它计数模式;从候选计数模式集中选择目标计数模式,实现QPS计数。

本申请实施例中,在服务端中的计数节点进行QPS计数之前,用户可以先在候选计数模式集选择对应的目标计数模式,进而,服务端可以根据目标计数模式实现QPS计数;由于目标计数模式是可选择的,因而,可以提高QPS计数的灵活性。

在一种实施方式中,服务端可以接收客户端指令,根据接收到的指令从候选计数模式集中选择目标计数模式;也可以根据客户端输入的业务需求直接从候选计数模式集中选择目标计数模式。

在一种实施方式中,候选计数模式集中的其它计数模式可以包括:第二计数模式和/或第三计数模式等;其中,第二计数模式表示在主计数节点获取到客户端的QPS计数请求时,执行对主计数节点的QPS计数器的计数累加操作,向客户端返回计数成功,将计数累加操作同步到从计数节点的模式。第三计数模式表示在主计数节点获取到客户端的QPS计数请求时,向客户端返回计数成功的模式,执行对主计数节点的QPS计数器的计数累加操作,将计数累加操作同步到从计数节点的模式。

本申请实施例中,第一计数模式、第二计数模式和第三计数模式之间的区别在于服务端在QPS计数过程中向客户端返回计数成功的时间点不相同;第一计数模式向客户端返回计数成功的时间点是在从计数节点中的部分计数节点同步完成后;第二计数模式向客户端返回计数成功的时间点是在主计数节点的QPS计数器完成计数累加操作后;第三计数模式向客户端返回计数成功的时间点是在主计数节点接收到客户端的QPS计数请求后。可见,这三种模式的QPS计数速度按照从快到慢的顺序依次为:第三计数模式、第二计数模式和第一计数模式。虽然第二计数模式和第三计数模式的QPS计数速度更快些,但是存在发生丢失数据的风险;而第一计数模式在任何场景下都不会丢失数据,可以确保数据的可靠性。

在一种实施方式中,上述计数方法还包括:当主计数节点不可用时,可以通过投票机制在从计数节点中重新确定出一个主计数节点。

这里,在主计数节点发生故障导致无法进行QPS计数时,可以通过投票机制在从计数节点中重新确定出一个主计数节点。

在一种实施方式中,主计数节点还用于在QPS计数器每次进行计数累加操作时,同步执行对全局数据索引的计数累加操作,将全局数据索引的计数累加操作同步到从计数节点,全局数据索引用于针对全部资源访问的QPS计数请求执行计数累加操作;通过投票机制从从计数节点中重新确定出一个主计数节点,可以包括:确定从计数节点中每个计数节点的全局数据索引;在每个计数节点进行投票、且确定其它从计数节点的全局数据索引大于或等于每个计数节点的全局数据索引时,利用每个计数节点对其它从计数节点进行投票,得到投票结果;基于每个计数节点的投票结果,从从计数节点中确定出一个主计数节点。

本申请实施例中,服务端中的每个计数节点均包括一个全局数据索引;由于全局数据索引用于针对全部资源访问的QPS计数请求执行计数累加操作;即,主计数节点只要接收到针对任何一种资源访问的QPS计数请求时,均会执行计数累加操作,并得到对应的计数结果;其中,每一种资源访问的计数结果都是通过全局数据索引统一存储的,即,全部资源对应一个计数结果。

在一种实施方式中,假设计数节点的QPS计数器还未开始计数,计数节点的全局数据索引的计数结果为0,计数节点首次接收到第一种资源访问的QPS计数请求时,第一种资源访问的计数结果为1,全局数据索引的计数结果为1;计数节点首次接收到针对第二种资源访问的QPS计数请求时,第二种资源访问的计数结果为1,全局数据索引的计数结果为2。这里,计数节点可以为主计数节点,也可以为从计数节点中的计数节点;在计数节点为从计数节点中的计数节点时,上述接收到的第一种资源访问的QPS计数请求和第二种资源访问的QPS计数请求均为主计数节点同步过来的。

本申请实施例中,首先确定每个计数节点全局数据索引,在从计数节点中每个计数节点进行投票时,只有确定其它从计数节点的全局数据索引大于或等于每个计数节点的全局数据索引时,利用每个计数节点才会对其它从计数节点进行投票;也就是说,每个计数节点不会给小于自身全局数据索引的计数节点投票。

在一种实施方式中,基于每个计数节点的投票结果,从从计数节点中确定出一个主计数节点,可以包括:基于每个计数节点的投票结果,确定从计数节点中每个计数节点获得的投票数;在投票数大于从计数节点中总计数节点数量的一半时,将投票数对应的计数节点作为主计数节点。

本申请实施例中,在得到每个计数节点的投票结果后,将投票数大于从计数节点中总计数节点数量对应的计数节点作为主计数节点。在重新确定出一个主计数节点后,该主计数节点继续执行上述步骤,实现QPS计数。

为了能够更加体现本申请的目的,在本申请上述实施例的基础上,进行进一步的举例说明。

图2a为本申请实施例中实现计数方法的框架的结构示意图,如图2a所示,该框架包括两个客户端(客户端1和客户端2)和一个服务端;其中,服务端中包括一个主计数节点和两个从计数节点(从计数节点1和从计数节点2),每个计数节点包括一个QPS计数器和全局数据索引;这三个计数节点组成一个选举集群。

在一种实施方式中,当主计数节点接收到针对资源标识KeyB对应的资源访问的QPS计数请求时,其主计数节点的全局数据索引加1,依次类推。将该QPS计数请求从主计数节点同步到从计数节点1和从计数节点2时,从计数节点1和从计数节点2的全局数据索引加1。

这里,选举集群通过投票机制选举出主计数节点,主计数节点负责处理客户端的QPS计数请求,同时将该QPS计数请求对应的计数累加操作同步给从计数节点1和从计数节点2。选举集群中获得超过半数投票(即总计数节点数的一半)的节点即可成为主计数节点。

在上述图2a计数方法框架的基础上,下面对QPS计数方法的流程进行进一步的举例说明,该流程包括:

步骤A1:通过投票方式确定主计数节点。

在一种实施方式中,若计数节点获得到大于总计数节点数的一半的投票就能够成为选举集群中的主计数节点。计数节点在进行投票时需要判断发起投票节点(待成为主计数节点的计数节点)的全局数据索引是否大于或等于自己的全局数据索引;即,在投票的时候计数节点不会给全局数据索引小于自己的全局数据索引的计数节点投票。

步骤A2:主计数节点的QPS计数与从计数节点同步。

在一种实施方式中,图2b为本申请实施例的主计数节点进行QPS计数的流程图,如图2b所示,当客户端针对资源标识KeyB对应的资源访问的QPS计数请求到达服务端的主计数节点后,首先,写入QPS计数器中进行QPS计数,然后再对主计数节点的全局数据索引加1,最后将QPS计数采用异步或同步的方式同步给从计数节点。图2c为本申请实施例的对从计数节点同步的流程图,如图2c所示,从计数节点接收到主计数节点同步过来的QPS计数请求后,同样先执行QPS计数,然后再对从计数节点的全局数据索引加1。

在一种实施方式中,在服务端处理QPS计数的时候,可以提供三种计数模式供客户端选择,客户端可以根据实际的需求选择不同的模式,如下为三种计数模式:

1)第一种计数模式;图2d为本申请实施例中采用第一种计数模式执行计数的流程图,如图2d所示,QPS计数请求到达主计数节点,且写入QPS计数、并执行完全局数据索引加1,然后同步给从计数节点。等到半数的从计数节点返回成功(返回成功的从计数节点都已经成功执行了QPS计数和全局数据索引即1操作),此时,才返回客户端成功。特点:QPS计数快,任何场景都不会丢失数据。

2)第二种计数模式;图2e为本申请实施例中采用第二种计数模式执行计数的流程图,如图2e所示,QPS计数请求达到主计数节点,然后再写入QPS计数和执行完成全局数据索引加1后,才返回客户端成功,此时还没有同步给从计数节点。特点:QPS计数较快,虽然不存在主计数节点计数异常的问题,但在主计数节点宕机发生集群重新选举的场景下可能丢失数据。

3)第二种计数模式;图2f为本申请实施例中采用第二种计数模式执行计数的流程图,如图2f所示,客户端发送的QPS计数请求到达主计数节点后,就返回客户端成功;服务端后台异步执行计数、全局数据索引加1和同步操作。接收模式特点为:QPS计数速度极快,但是在主计数节点计数异常或者主计数节点宕机的场景下可能丢失数据。

可以看出,本申请实施例同时支持三种计数模式供客户端(使用者)选择,使用更加灵活。另外,第一种计数模式通过数据同步给半数从计数节点后才返回给客户端成功的模式,再结合投票选举时计数节点只给全局数据索引不小于自己的计数节点投票,确保了在QPS数据一旦写入成功(给客户端返回了成功),那么在任何场景都不会丢失。发生投票选举之后,新的主计数节点也能够有最新的数据。进一步地第一种计数模式下,因为只需要等到数据同步给半数从计数节点,而无需等待同步给所有从计数节点就可以返回客户端成功。因此,减少响应时间。

图3a为本申请实施例的计数装置的组成结构示意图一,如图3a所示,装置包括:确定模块300和计数模块301,其中:

确定模块300,用于在服务端中确定出一个主计数节点;主计数节点包括QPS计数器,QPS计数器用于针对一种资源访问的QPS计数请求执行计数累加操作;

计数模块301,用于采用第一计数模式,实现QPS计数;第一计数模式表示在主计数节点获取到客户端的QPS计数请求时,执行对主计数节点的QPS计数器的计数累加操作,将计数累加操作同步到从计数节点,在从计数节点中N个计数节点同步完成后,向客户端返回计数成功的模式;从计数节点表示服务端中除主计数节点之外的其它计数节点,N小于从计数节点中计数节点的总数。

图3b为本申请实施例的计数装置的组成结构示意图二,如图3b所示,装置还包括选择模块302,选择模块302,用于:

确定候选计数模式集;候选计数模式集包括第一计数模式和其它计数模式;

从候选计数模式集中选择目标计数模式,实现QPS计数。

在一些实施例中,其它计数模式包括第二计数模式和/或第三计数模式;其中,

第二计数模式表示在主计数节点获取到客户端的QPS计数请求时,执行对主计数节点的QPS计数器的计数累加操作,向客户端返回计数成功,将计数累加操作同步到从计数节点的模式;

第三计数模式表示在主计数节点获取到客户端的QPS计数请求时,向客户端返回计数成功的模式,执行对主计数节点的QPS计数器的计数累加操作,将计数累加操作同步到从计数节点的模式。

在一些实施例中,确定模块300,用于在服务端中确定出一个主计数节点,包括:

建立选举集群,选举集群包括在服务端中的计数节点;

通过投票机制从选举集群中确定出一个主计数节点。

在一些实施例中,确定模块300,还用于:

当主计数节点不可用时,通过投票机制从从计数节点中重新确定出一个主计数节点。

在一些实施例中,主计数节点还用于在QPS计数器每次进行计数累加操作时,同步执行对全局数据索引的计数累加操作,将全局数据索引的计数累加操作同步到从计数节点,全局数据索引用于针对全部资源访问的QPS计数请求执行计数累加操作;确定模块300,用于通过投票机制从从计数节点中重新确定出一个主计数节点,包括:

确定从计数节点中每个计数节点的全局数据索引;

在每个计数节点进行投票、且确定其它从计数节点的全局数据索引大于或等于每个计数节点的全局数据索引时,利用每个计数节点对其它从计数节点进行投票,得到投票结果;

基于每个计数节点的投票结果,从从计数节点中确定出一个主计数节点。

在一些实施例中,确定模块300,用于基于每个计数节点的投票结果,从从计数节点中确定出一个主计数节点,包括:

基于每个计数节点的投票结果,确定从计数节点中每个计数节点获得的投票数;

在投票数大于从计数节点中总计数节点数量的一半时,将投票数对应的计数节点作为主计数节点。

在实际应用中,上述确定模块300、计数模块301和选择模块302均可以由位于电子设备中的处理器实现,该处理器可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。

另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

具体来讲,本实施例中的一种计数方法对应的计算机程序指令可以被存储在光盘、硬盘、U盘等存储介质上,当存储介质中的与一种计数方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种计数方法。

基于前述实施例相同的技术构思,参见图4,其示出了本申请提供的电子设备400,可以包括:存储器401和处理器402;其中,

存储器401,用于存储计算机程序和数据;

处理器402,用于执行存储器中存储的计算机程序,以实现前述实施例的任意一种计数方法。

在实际应用中,上述存储器401可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM、快闪存储器(flash memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器402提供指令和数据。

上述处理器402可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的计数设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。

在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。

上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。

本申请所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。

本申请所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。

本申请所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程计数设备的处理器以产生一个机器,使得通过计算机或其它可编程计数设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可装载到计算机或其它可编程计数设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于群体体系结构的无人机蜂群反制方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!