CN114070847B - 服务器的限流方法、装置、设备及存储介质 - Google Patents

服务器的限流方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114070847B
CN114070847B CN202010732368.2A CN202010732368A CN114070847B CN 114070847 B CN114070847 B CN 114070847B CN 202010732368 A CN202010732368 A CN 202010732368A CN 114070847 B CN114070847 B CN 114070847B
Authority
CN
China
Prior art keywords
service
current
limiting
current limiting
service node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010732368.2A
Other languages
English (en)
Other versions
CN114070847A (zh
Inventor
吕庆翰
吕梦伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010732368.2A priority Critical patent/CN114070847B/zh
Publication of CN114070847A publication Critical patent/CN114070847A/zh
Application granted granted Critical
Publication of CN114070847B publication Critical patent/CN114070847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种服务器的限流方法、装置、设备及存储介质,涉及网络技术领域。该方法包括:接收终端发送的服务请求,服务请求用于请求业务节点处理业务;读取内存中与业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数,第一可响应次数在服务请求被成功响应时减少;响应于第一可响应次数满足读取条件,从数据库中再次请求业务节点对应的下一个限流分片;响应于数据库中与业务节点对应的限流分片的剩余分片数量为零,对服务请求进行限流处理。使得分布式服务器无需频繁访问数据库,从而缓解了数据库的运行压力,保证了分布式计算机系统运行时的负载均衡。

Description

服务器的限流方法、装置、设备及存储介质
技术领域
本申请涉及网络技术领域,特别涉及一种服务器的限流方法、装置、设备及存储介质。
背景技术
服务器在接收到大量请求时,通过限流的方式降低请求量对服务器产生的压力,防止因请求量暴增而导致服务器产生运行缓慢或宕机的现象。
以用户查询水费为例,用户可通过社交应用程序查询已花费的水费,通过社交应用程序的分布式服务器向对应的业务节点发送查询请求,以查询用户需要的信息。业务节点的承载能力小分布式服务器的承载能力,通过分布式服务器对用户发送的请求进行限流处理,使得业务节点在承载能力范围内运行。当分布式服务器接收到大量查询请求时,分布式服务器根据业务节点设置的总限流额度,更新数据库中存储的允许响应的剩余限流额度。
在上述过程中,分布式服务器每处理一次查询请求,需要更新一次剩余限流额度,频繁更新使得数据库的运行压力较大。
发明内容
本申请实施例提供了一种服务器的限流方法、装置、设备及存储介质,通过分布式服务器读取业务节点对应的限流分片,使得分布式服务器无需频繁访问数据库,从而缓解了数据库的运行压力。所述技术方案如下:
根据本申请的一方面,提供了一种服务器的限流方法,所述方法应用于多个分布式服务器中的任意一个分布式服务器,所述分布式服务器通过网络分别与业务节点和数据库相连,所述方法包括:
接收终端发送的服务请求,所述服务请求用于请求所述业务节点处理业务;
读取内存中与所述业务节点对应的限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,所述第一可响应次数在所述服务请求被成功响应时减少;
响应于所述第一可响应次数满足读取条件,从所述数据库中再次请求所述业务节点对应的下一个限流分片;
响应于所述数据库中与所述业务节点对应的限流分片的剩余分片数量为零,对所述服务请求进行限流处理。
根据本申请的另一方面,提供了一种服务器的限流方法,所述方法应用于数据库中,所述数据库通过网络与多个分布式服务器相连,所述分布式服务器通过所述网络与业务节点相连,所述方法包括:
根据所述业务节点的可响应总次数生成所述业务节点对应的限流分片;
响应于接收到所述分布式服务器发送的获取请求,向所述分布式服务器发送所述业务节点对应的限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数;
响应于所述业务节点对应的限流分片的剩余分片数量为零,向所述分布式服务器发送限流响应,所述限流响应用于指示所述分布式服务器在接收到所述限流响应时对所述服务请求进行限流处理。
根据本申请的另一方面,提供了一种服务器的限流装置,所述装置包括:
第一接收模块,用于接收终端发送的服务请求,所述服务请求用于请求业务节点处理业务;
读取模块,用于读取内存中与所述业务节点对应的限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,所述第一可响应次数在所述服务请求被成功响应时减少;
第一获取模块,用于响应于所述第一可响应次数满足读取条件,从数据库中再次请求所述业务节点对应的下一个限流分片;
限流模块,用于响应于所述数据库中与所述业务节点对应的限流分片的剩余分片数量为零,对所述服务请求进行限流处理。
在一个可选的实施例中,所述第一获取模块,用于响应于所述第一可响应次数小于或等于第一阈值,从所述数据库中再次请求所述业务节点对应的下一个限流分片;或,响应于所述第一可响应次数小于比例,从所述数据库中再次请求所述业务节点对应的下一个限流分片。
在一个可选的实施例中,所述服务请求携带有所述业务节点的节点标识;
所述第一接收模块,用于响应于所述第一可响应次数小于或等于所述第一阈值,向所述数据库发送第一获取请求,所述第一获取请求携带有所述节点标识;接收所述业务节点对应的下一个限流分片,所述下一个限流分片是所述数据库根据所述节点标识发送的;
所述第一接收模块,用于响应于所述第一可响应次数小于所述比例,向所述数据库发送第二获取请求,所述第二获取请求携带有所述节点标识;接收所述业务节点对应的下一个限流分片,所述限流分片是所述数据库根据所述节点标识发送的。
在一个可选的实施例中,所述第一获取模块,用于响应于所述内存中不具有所述限流分片,从所述数据库中请求所述业务节点对应的限流分片。
在一个可选的实施例中,所述限流模块,用于响应于所述数据库中所述业务节点对应的所述限流分片的剩余分片数量为零,拒绝将所述服务请求发送至所述业务节点中;向所述终端发送提示信息,所述提示信息用于表示所述终端无法接收到所述服务请求对应的服务响应。
在一个可选的实施例中,所述更新模块,用于响应于从所述数据库中再次获取到所述业务节点对应的下一个限流分片,将所述数据库中所述业务节点对应的限流分片的剩余分片数量减少第二阈值;根据所述下一个限流分片的第二可响应次数更新所述内存中的所述第一可响应次数;根据已更新的第一可响应次数,将所述服务请求发送至所述业务节点中,所述已更新的第一可响应次数在所述服务请求被成功响应时减少。
在一个可选的实施例中,所述业务节点对应的限流分片是按照周期划分的;所述第一获取模块,用于响应于接收到的所述服务请求在第i个周期,将所述第i个周期之前的所述业务节点对应的限流分片删除,i为正整数;根据所述服务请求获取所述第i个周期内的所述限流分片。
根据本申请的另一方面,提供了一种服务器的限流装置,所述装置包括:
生成模块,用于根据业务节点的可响应总次数生成所述业务节点对应的限流分片;
发送模块,用于响应于接收到分布式服务器发送的获取请求,向所述分布式服务器发送所述业务节点对应的限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数;
所述发送模块,用于响应于所述业务节点对应的限流分片的剩余分片数量为零,向所述分布式服务器发送限流响应,所述限流响应用于指示所述分布式服务器在接收到所述限流响应时对所述服务请求进行限流处理。
在一个可选的实施例中,所述获取请求包括:第一获取请求,所述第一获取请求是所述分布式服务器根据所述第一可响应次数小于或等于第一阈值时生成的;或,第二获取请求,所述第二获取请求是所述分布式服务器根据所述第一可响应次数小于比例时生成的;或,第三获取请求,所述第三获取请求是所述分布式服务器根据内存中不具有所述限流分片时生成的。
在一个可选的实施例中,所述装置包括第二获取模块,所述限流分片具有的所述第一可响应次数是通过如下方式得到的:
所述第二获取模块,用于获取所述分布式服务器的每秒查询率和所述分布式服务器的服务器数量,所述服务器数量是发送更新请求的分布式服务器的数量,所述更新请求用于请求更新所述业务节点对应的限流分片的剩余分片数量,所述每秒查询率是所述分布式服务器每秒内的可响应次数;获取所述第一可响应次数减少至零时所需的第一时长;响应于所述第一时长大于第三阈值,根据所述每秒查询率和所述服务器数量得到所述第一可响应次数。
在一个可选的实施例中,所述装置包括第二接收模块,所述第三阈值是通过如下方式得到的:
所述第二接收模块,用于响应于所述第一可响应次数为零,接收所述分布式服务器发送的所述更新请求;根据所述更新请求获取更新所述限流分片的剩余分片数量所需的第二时长;根据所述服务器数量和所述第二时长得到所述第三阈值。
根据本申请的另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述方面所述的服务器的限流方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述方面所述的服务器的限流方法。
根据本申请的另一方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行如上方面所述的服务器的限流方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过对各个业务节点的可响应总次数设置限流分片,分布式服务器根据服务请求的数量消耗限流分片,每消耗完一个限流分片,数据库才更新业务节点对应的限流分片的剩余分片数量,无需分布式服务器频繁访问数据库,同时,分布式服务器每接收一个服务请求,从数据库中获取一个限流分片,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。并且,通过将限流分片与服务请求建立联系,根据限流分片对服务请求进行限流处理,降低了业务节点的运行压力。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的计算机系统的框架图;
图2是本申请一个示例性实施例提供的服务器的限流方法的流程图;
图3是本申请另一个示例性实施例提供的服务器的限流方法的流程图;
图4是本申请一个示例性实施例提供的限流系统的框架示意图;
图5是本申请一个示例性实施例提供的获取限流分片的框架示意图;
图6是本申请另一个示例性实施例提供的服务器的限流方法的流程图;
图7是本申请另一个示例性实施例提供的服务器的限流方法的流程图;
图8是本申请一个示例性实施例提供的分布式服务器周期内获取到的限流分片的示意图;
图9是本申请另一个示例性实施例提供的服务器的限流方法的流程图;
图10是本申请一个示例性实施例提供的限流分片的第一可响应次数的计算方法的流程图;
图11是本申请另一个示例性实施例提供的多进程下获取限流分片的方法流程图;
图12是本申请一个示例性实施例提供的服务器的限流装置的结构框图;
图13是本申请另一个示例性实施例提供的服务器的限流装置的结构框图;
图14是本申请一个示例性实施例提供的服务器的装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例涉及的名词进行介绍。
限流分片:是指根据业务节点的可响应总次数分配到各个限流分片的第一可响应次数。即一个业务节点对应有多个限流分片,一个限流分片具有的第一可响应次数是业务节点的可响应总次数的一部分。限流分片的大小通过分布式服务器的每秒查询率、更新剩余分片数量的服务器数量和更新一次第一可响应次数的时间计算得到。本申请实施例中根据不同的限流场景设置对应大小的限流分片,通过限流分片对服务请求进行限制。
云计算(cloud computing)指互联网技术(Internet Technology,IT)基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(UtilityComputing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。本申请实施例提供的服务器的限流方法可应用于云服务器中,在云服务器中设置有限流分片,可应对各类终端请求访问的场景,使得云服务器能够应对各类高并发场景。
本申请实施例提供服务器的限流方法可以应用于具有较强的数据处理能力的计算机设备中。在一种可能的实施方式中,本申请实施例提供的限流方法可以应用于工作站或服务器中,即通过对工作站或服务器分设置有限流额度,从而在终端发送服务请求时根据限流额度对服务请求进行限制。该工作站或服务器包括各个业务机构(如管理水费的机构)的业务工作站或业务节点,还包括应用程序对应的工作站或分布式服务器。
示意性的,将服务器的限流功能设置在应用程序的后台服务器中,当大量用户向应用程序对应的分布式服务器发送大量服务请求时,分布式服务器可基于本申请实施例提供的限流方法对服务请求进行限制,以避免业务节点因无法接收大量服务请求而产生宕机或运行缓慢的现象。
请参考图1,其示出了本申请一个示例性实施例提供的计算机系统的结构示意图。该计算机系统100中包括终端110、分布式服务器121、业务节点122和数据库123,其中,终端110与分布式服务器121、业务节点122和数据库123之间通过通信网络进行数据通信,分布式服务器121、业务节点122和数据服务器123之间也通过通信网络进行数据通信。可选地,通信网络可以是有线网络也可以是无线网络,且该通信网络可以是局域网、城域网以及广域网中的至少一种。
终端110中安装有应用程序,该应用程序可以是社交应用程序、支付应用程序、游戏应用程序、购物应用程序、团购应用程序等,本申请实施例对此不作限定。
在一些实施例中,终端110可以是智能手机、平板电脑、膝上便携式笔记本电脑等移动终端,也可以是台式电脑、投影式电脑等终端,本申请实施例对终端的类型不加以限定。
分布式服务器121可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。业务节点122对应有业务服务器和数据库123对应有数据库服务器。
在一种可能的实施方式中,分布式服务器121是终端110中应用程序的后台服务器,业务节点122对应有各个业务机构的后台服务器,数据库123对应有与分布式服务器121相连的数据库服务器,用于存储各个业务机构对应的总限流额度以及其它限流参数(如每个业务机构的限流分片、限流周期等参数)。业务机构可以是管理水费的业务机构、电费的业务机构、网络运营商、燃气费的业务机构、宽带费的业务机构等,本申请实施例对业务机构的类型不加以限定。
示意性的,分布式服务器121包括多台服务器,多台服务器分布式部署,用于避免集中部署的分布式服务器121在接收到大量服务请求时产生宕机或运行缓慢的现象。
限流分片用于表示服务器允许终端接收到的响应的可响应总次数。分布式服务器121根据终端110发送的服务请求从数据库123中确定对应的业务机构的限流分片,分布式服务器121根据限流分片对应的第一可响应次数决定是否将服务请求发送至业务节点122中以获取用户所需的信息。
如图1所示,在本申请实施例中,分布式服务器121在接收到终端110发送的服务请求时,根据服务请求携带的业务机构的机构标识从数据库123中获取限流分片。比如,分布式服务器121根据机构标识为机构1获取一个限流分片1。一个业务机构对应多个限流分片,每个限流分片具有的第一可响应次数是一致的。分布式服务器121每接收一个服务请求就消耗一次响应次数,当一个限流分片对应的第一可响应次数为零时,分布式服务器121从数据库123中获取下一个限流分片,直至将业务机构对应的限流分片全部消耗完。再次接收服务请求时,分布式服务器121将拦截该服务请求,即终端110无法接收到服务请求对应的服务响应。
本申请实施例提供了一种服务器的限流方法,该方法应用于如图1所示的计算机系统中。
示意性的,用户使用的终端上安装有社交应用程序,该社交应用程序提供有电话费查询功能、水费查询功能、电费查询功能、燃气费查询功能、宽带查询功能中的至少一种功能,比如,用户可通过社交应用程序查询剩余话费。
示意性的,用户在话费查询界面输入要查询的电话号码,终端向社交应用程序对应的分布式服务器发送话费查询请求,话费查询请求携带有话费查询机构的机构标识。比如,该用户查询的电话号码的归属地是北京,向北京对应的分布式服务器发送话费查询请求。分布式服务器根据机构标识判断内存中是否对应有相应的话费查询机构的限流分片,若分布式服务器的内存中对应有相应的话费查询机构的限流分片,分布式服务器根据该限流分片对应的第一可响应次数判断是否将该话费查询请求发送至话费查询机构对应的业务节点。若限流分片对应的第一可响应次数不为零,则分布式服务器将话费查询请求发送至话费查询机构对应的业务节点。业务节点根据该话费查询请求查询用户输入的电话号码对应的话费余额,并将话费余额发送至分布式服务器,由分布式服务器向终端发送该话费余额。
若分布式服务器的内存中未对应有相应的话费查询机构的限流分片,且该话费查询机构还对应有限流额度(即还存在剩余的限流分片),则分布式服务器根据机构标识从数据库中获取话费查询机构对应的限流分片,分布式服务器重复上述过程根据话费查询请求消耗该限流分片对应的第一可响应次数。
若分布式服务器的内存中未对应有相应的话费查询机构的限流分片,且该话费查询机构无剩余限流额度(即无剩余的限流分片),则分布式服务器对接收到的话费查询请求进行限流处理,即终端接收到拒绝话费查询的响应。
每一个限流分片对应的第一可响应次数为零时,该限流分片被消耗完,分布式服务器向数据库发送限流片更新请求,数据库根据限流片更新请求,更新该话费查询机构对应的剩余限流片的数量,即每消耗完一个限流分片更新一次剩余限流片的数量,一个限流分片对应的第一响应次数是多次,以限流分片的大小来衡量第一可响应次数。如,一个限流分片的大小为20,则该限流分片对应的第一可响应次数为20。每个业务机构对应有多个限流分片。
示意性的,上述分布式服务器以分布式方式部署,针对不同地区的用户部署分布式服务器,提高处理服务请求的效率。
通过对各个分布式服务器设置对应的限流分片,分布式服务器根据查询请求消耗限流分片,当一个限流分片消耗完才更新业务机构对应的剩余限流额度,使得分布式服务器无需频繁访问数据库,从而缓解了数据库的运行压力。同时,提高了分布式服务器对服务请求的处理效率,使得服务器在限流的场景下提供持续的服务。
图2示出了本申请一个示例性实施例提供的服务器的限流方法的流程图。本实施例以该方法用于如图1所示的计算机系统100中的分布式服务器121为例进行说明,分布式服务器121通过网络分别与业务节点和数据库相连。该方法包括如下步骤:
步骤201,接收终端发送的服务请求,服务请求用于业务节点处理业务。
终端是发送服务请求的终端,在终端上安装有应用程序,该应用程序可以是社交应用程序、支付应用程序、购物应用程序、团购应用程序等,本申请实施例对应用程序的类型不加以限定。
该应用程序具有支持用户在多个业务节点办理业务事件的功能,服务请求是指从办理业务事件的业务节点中获取服务的请求。示意性的,服务请求为查询请求、缴费请求、还款请求、业务办理请求等请求,比如,用户通过社交应用程序向业务节点发送话费查询请求以查询手机号码对应的话费余额,或者,用户通过支付应用程序向业务节点发送水费缴费请求以缴纳居住地所花费的水费,或者,用户通过支付应用程序发送还款请求以偿还借款,或者,用户通过社交应用程序办理电子不停车收费业务(ETC,Electronic TollCollection)。
业务节点是指业务机构,如水电管理机构、燃气管理机构、网络运营商、有线电视管理机构、银行等机构。业务事件与服务请求一一对应。业务事件是指用户要求业务节点处理的事件,比如,服务请求为话费查询请求,则业务事件为请求话费查询机构(网络运营)查询电话号码的剩余话费。
分布式服务器是应用程序的后台服务器,分布式服务器的数据不在同一服务器中,分散到多个服务器,避免了集中式系统的主机出现异常时导致整个系统无法正常运行。
在一些实施例中,终端还包括小程序(依赖于宿主程序运行的程序),用户可通过小程序发送服务请求;在另一些实施例中,终端还包括网站,用户可通过网站发送服务请求。
步骤202,读取内存中与业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数,第一可响应次数在服务请求被成功响应时减少。
业务节点是业务机构对应的后台服务器,通常每个业务机构的业务节点的接收请求的承载能力较小,为防止业务节点产生宕机或运行缓慢的情况,业务节点通常会采用限流的方式对接收到的请求进行限制。
用户通过应用程序发送服务请求,由应用程序对应的分布式服务器接收该服务请求,再由分布式服务器将该服务请求发送至业务节点中。由于使用该应用程序的用户较多,分布式服务器接收到的请求量较大,且分布式服务器可能同时接收到大量请求,若分布式服务器直接将大量请求发送至业务节点中,易于造成业务节点宕机或运行缓慢的情况,因此需要通过分布式服务器对服务请求进行限流。
本申请实施例通过限流分片对服务请求进行限流。限流分片是指一个业务节点(或业务机构)根据可响应总次数分配到每个限流分片中的第一可响应次数,即每个限流分片具有一定的第一可响应次数。通常情况下,同一业务机构的每个限流分片具有的第一可响应次数是相同的,不同的业务机构之间的限流分片具有的第一可响应次数不一定相同。在一些实施例中,同一业务机构的每个限流分片具有的第一可响应次数可以是不同的。本申请实施例以限流分片的大小说明限流分片具有的第一可响应次数的多少,比如,一个限流分片的大小是20,则该限流分片具有的第一可响应次数是20次。
每个业务机构可根据实际情况设置限流分片具有的第一可响应次数,比如,业务机构A的承载大量服务请求的能力较好,业务机构B的承载大量服务请求的能力较弱,则业务机构A的限流分片具有的第一可响应次数要高于业务机构B的限流分片具有的第一可响应次数。
在一些实施例中,限流分片还可以具有根据业务节点根据总流量分配到每个限流分片的分片流量,即每个限流分片具有一定的分片流量。同一业务机构的每个限流分片表示的流量是相同的,不同业务机构之间的限流分片表示的流量是不同的。比如,业务机构A的承载大量服务请求的能力较好,业务机构B的承载大量服务请求的能力较弱,业务机构A的限流分片表示的流量为Q,业务机构B的限流分片表示的流量为P,且Q>P>0。
步骤203,响应于第一可响应次数满足读取条件,从数据库中再次请求业务节点对应的下一个限流分片。
限流分片存储于数据库中,数据库与分布式服务器通过网络相连,应用程序对应的分布式服务器共用同一个数据库或同一数据库集群。数据库用于管理各个业务机构对应的限流分片、各个业务机构的限流周期、各个业务机构的可响应总次数以及限流分片消耗后各个业务机构更新的剩余限流分片(或剩余的第一可响应次数)。
读取条件包括:限流分片具有的第一可响应次数小于或等于第一阈值,或,第一可响应次数小于比例,或,分布式服务的内存中不具有限流分片中的任意一种。即分布式服务器接收到的服务请求将分布式服务器中的限流分片消耗完毕时或分布式服务器中不具有业务节点对应的限流分片时,从数据库中再次请求获取业务节点对应的下一个限流分片。
步骤204,响应于数据库中与业务节点对应的限流分片的剩余分片数量为零,对服务请求进行限流处理。
响应于内存中具有与节点标识对应的限流分片,分布式服务器向业务节点发送该服务请求,业务节点根据该服务请求办理对应的业务事件。比如,该服务请求是话费查询请求,话费查询请求携带有待查询的电话号码。当业务节点接收到该话费查询请求时,从存储的数据中查找到对应的数据,将该数据返回至分布式服务器中,由分布式服务器发送至终端,用户可在终端上看到话费查询结果。
响应于内存中不具有节点标识对应的限流分片,包括如下两种情况:
1、分布式服务器的内存中已有的限流分片具有的第一可响应次数已被消耗完,在数据库中还具有与节点标识对应的限流分片。
在该情况下,由于数据库还具有与节点标识对应的限流分片,则分布式服务器从数据库中再次获取一个限流分片即可。
2、分布式服务器的内存中已有的限流分片具有的第一可响应次数已被消耗完,在数据库中不具有节点标识对应的限流分片。
在该情况下,由于数据库中不具有与节点标识对应的限流分片,则分布式服务器无法再次获取限流分片,因此分布式服务器对服务请求进行限流处理,即拒绝对终端发送的服务请求作出服务响应。
综上所述,本实施例提供的方法,通过对各个业务节点的可响应总次数设置限流分片,分布式服务器根据服务请求的数量消耗限流分片,每消耗完一个限流分片,数据库才更新业务节点对应的限流分片的剩余分片数量,无需分布式服务器频繁访问数据库,同时,分布式服务器每接收一个服务请求,从数据库中获取一个限流分片,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。并且,通过将限流分片与服务请求建立联系,根据限流分片对服务请求进行限流处理,降低了业务节点的运行压力。
图3示出了本申请另一个示例性实施例提供的服务器的限流方法的流程图。本实施例以该方法用于如图1所示的计算机系统100中的分布式服务器121为例进行说明,该方法包括如下步骤:
步骤301,接收终端发送的服务请求,服务请求用于业务节点处理业务。
示意性的,用户使用的终端上安装有社交应用程序,该社交应用程序具有支持用户在多个业务节点办理业务事件的功能。示意性的,业务事件是用户通过社交应用程序查询住宅消耗的电量。
示意性的,用户从社交应用程序进入小程序,该小程序是依赖社交应用程序运行的程序。该小程序具有支持用户在多个业务节点办理业务事件的功能。示意性的,业务事件是用户通过小程序查询住宅消耗的水量。
步骤302,读取内存中与业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数,第一可响应次数在服务请求被成功响应时减少。
如图4所示,分布式服务器121的内存中与业务节点(业务机构)对应的限流分片是从数据库123中获取的,分布服务器121读取该限流分片具有的第一可响应次数。示意性的,分布式服务器的内存中存储有水费业务节点对应的第一限流分片,分布式服务器的内存中存储有电费业务节点对应的第二限流分片。示意性的,第一限流分片具有的第一可响应次数大于第二限流分片具有的第二可响应次数。
当分布式服务器接收到终端发送的一个服务请求时,分布式服务器根据请求携带的节点标识读取内存中是否具有与节点标识对应的限流分片。响应于内存中具有与节点标识对应的限流分片,则当该服务请求被成功响应时减少限流分片具有的第一可响应次数,一个服务请求对应一次响应。
分布式服务器从数据库中读取下一个限流分片的步骤包括步骤303a至步骤303c。
步骤303a,响应于第一可响应次数小于或等于第一阈值,从数据库中再次请求业务节点对应的下一个限流分片。
示意性的,当限流分片具有的第一可响应次减少到一定程度时,由于数据库中存储有与业务节点对应的一系列限流分片,则分布式服务器从数据库中再次请求获取业务节点对应的下一个限流分片。
终端发送的服务请求携带有业务节点的节点标识。节点标识用于唯一标识不同的业务节点,节点标识包括数字、字母和符号中至少一种字符的字符串。如,银行的节点标识为节点a1、网络运营商的节点标识为节点A2。属于同一机构的不同业务节点的节点标识不同,比如,两个建设银行对应的节点标识分别为a11和a22。本申请实施例对节点标识的类型和表示方式不加以限定。
步骤303a可替换为如下步骤:
步骤3031a,响应于第一可响应次数小于或等于第一阈值,向数据库发送第一获取请求,第一获取请求携带有节点标识。
示意性的,第一阈值为10,限流分片具有的第一可响应次数为100,当第一可响应次数小于10或等于10,向数据库发送第一获取请求。
示意性的,第一阈值为0,限流分片具有的第一可响应次数为100,当第一可响应次数等于0,即一个限流分片被消耗完时,向数据库发送第一获取请求。
步骤3032a,接收业务节点对应的下一个限流分片,下一个限流分片是数据库根据节点标识发送的。
示意性的,分布式服务器的内存中具有第k个限流分片,分布式服务器根据接收到的服务请求消耗第k个限流分片对应的第一可响应次数,当第一可响应次数等于0(第一阈值)时,从数据库中获取与业务节点对应的第k+1个限流分片。k为正整数。
步骤303b,响应于第一可响应次数小于比例,从数据库中再次请求业务节点对应的下一个限流分片。
步骤303b可替换为如下步骤:
步骤3031b,响应于第一可响应次数小于比例,向数据库发送第二获取请求,第二获取请求携带有节点标识。
该比例为限流分片当前剩余的可响应次数占第一可响应次数的比例,示意性的,该比例为5%,限流分片的第一可响应次数为100,则响应于当前剩余的可响应次数小于5次,分布式服务器向数据库发送第二获取请求。
步骤3032b,接收业务节点对应的下一个限流分片,限流分片是数据库根据节点标识发送的。
示意性的,分布式服务器的内存中具有第k个限流分片,分布式服务器根据接收到的服务请求消耗第k个限流分片对应的第一可响应次数,当前可响应次数占第一可响应次数的比例小于5%(比例)时,从数据库中获取与业务节点对应的第k+1个限流分片。k为正整数。
如图5所示,分布式服务器122的内存中包括正在消耗的限流分片(限流分片1)和缓冲区域,该限流分片1剩余部分第一可响应次数(以斜线表示)。示意性的,当限流分片1的当前可响应次数如图5所示,分布式服务器122根据预取指令机制从数据库123中预先获取业务节点对应的下一个限流分片(限流分片2)。
在上述实施例中,分布式服务器消耗的是已有的限流分片,在另一些实施例中,分布式服务器在启动初始,此时获取限流分片的方式为步骤303c:
步骤303c,响应于内存中不具有限流分片,从数据库中请求业务节点对应的限流分片。
此时分布式服务器根据服务请求携带的节点标识从数据库中获取业务节点对应的第一个限流分片。
步骤304,响应于数据库中业务节点对应的限流分片的剩余分片数量为零,拒绝将服务请求发送至所述业务节点中。
当数据库中与业务节点对应的限流分片的剩余分片数量为零时,即该业务节点对应的限流分片被全部消耗完,则分布式服务器无法将服务请求发送至业务节点中。
步骤305,向终端发送提示信息,提示信息用于表示终端无法接收到服务请求对应的服务响应。
由分布式服务器代替业务节点向终端发送提示信息,使得用户通过提示信息确定服务请求被拒绝。示意性的,该提示信息为:暂时无法查询,请稍后重试。在一些实施例中,该提示信息是含有警告标志的图形,如红色感叹号。本申请实施例对提示信息的具体内容不加以限定。
可以理解的是上述步骤303a、步骤303b和步骤303c可分别独立实施,也可按照一定顺序组合实施,或全部实施。
综上所述,本实施例提供的方法,通过对各个业务节点的可响应总次数设置限流分片,分布式服务器根据服务请求的数量消耗限流分片,每消耗完一个限流分片,数据库才更新业务节点对应的限流分片的剩余分片数量,无需分布式服务器频繁访问数据库,同时,分布式服务器每接收一个服务请求,从数据库中获取一个限流分片,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。并且,通过将限流分片与服务请求建立联系,根据限流分片对服务请求进行限流处理,降低了业务节点的运行压力。
通过对一个限流分片的第一可响应次数设置第一阈值或比例,当限流分片的第一可响应次数满足第一阈值或比例时,预先从数据库中获取与业务接点对应的下一个限流分片,在业务节点对应有限流分片的前提下,保证分布式服务器能够持续性对接收到的服务请求进行处理。
无论分布式服务器的内存中的是否具有限流分片,均可从数据库中获取限流分片,提高了分布式服务器处理服务请求的效率。
当业务节点对应的限流分片的剩余分片数量为零时,由分布式服务器代替业务节点向终端发送提示信息,用于提示用户服务请求被拒绝响应,从而达到分布式服务器代替业务节点对服务请求进行限流的效果。
基于图3的可选实施例中,在分布式服务器从数据库中获取限流分片后,需要更新一些数据,包括如下步骤,如图6所示:
步骤306,响应于从数据库中再次获取到业务节点对应的下一个限流分片,将数据库中业务节点对应的限流分片的剩余分片数量减少第二阈值。
示意性的,响应于分布式服务器的内存中与业务节点对应的限流分片满足读取条件时,从数据库中再次获取业务节点对应的下一个限流分片,当分布式服务器获取到业务节点对应的下一个限流分片时,数据库对应减少业务节点对应的限流分片的剩余分片数量。通常情况下,第二阈值为1,即分布式服务器从数据库获取到业务节点对应的一个限流分片,数据库中业务节点对应的限流分片的剩余分片数量对应减少一个。
在一些实施例中,响应于分布式服务器的内存中不具有业务节点对应的限流分片,限流分片的剩余片内数量为零,分布式服务器从数据库中获取到业务节点对应的限流分片后,分布式服务器中的限流分片的剩余片内数量为1,数据库中业务节点对应的限流分片的剩余分片数量对应减少一个。
步骤307,根据下一个限流分片的第二可响应次数更新内存中的第一可响应次数。
可以理解的是,分布式服务器获取到下一个限流分片后,将下一个限流分片的第二可响应次数叠加在分布式服务器中当前正在消耗的限流分片的剩余可响应次数上。若无当前正在消耗的限流分片,则第一可响应次数为零。比如,当前正在消耗的限流分片的剩余可响应次数为3,下一个限流分片的第二可响应次数为20,则更新后的第一可响应次数为23。
步骤308,根据已更新的第一可响应次数,将服务请求发送至业务节点中,已更新的第一可响应次数在服务请求被成功响应时减少。
由于分布式服务中具有第一可响应次数,因此分布式服务器不对服务请求进行限流处理,将服务请求发送至业务节点,使得业务节点处理该服务请求。由于服务请求消耗已更新的第一可响应次数,在服务请求被成功响应时,已更新的第一可响应次数减少。比如,已更新的第一可响应次数为23,则当该服务请求成功响应时,已更新的第一可响应次数为22,其中该服务请求为一个服务请求。
综上所述,本实施例提供的方法,通过接收到的服务请求及时更新数据库中的限流分片的剩余分片数量,使得分布式服务器能够根据剩余分片数量确定是否能够再次获取业务节点对应的下一个限流分片,同时,分布式服务器根据接收到的服务请求更新第一可响应次数,使得分布式服务器能够确定是否对服务请求进行限流处理,提高了分布式服务器处理服务请求的效率和准确率。
基于图3的可选实施例中,业务节点对应的限流分片是按照周期划分的,上述实施例中服务器的限流方法还包括如下步骤,如图7所示:
步骤320,响应于接收到的服务请求在第i个周期,将第i个周期之前的业务节点对应的限流分片删除,i为正整数。
示意性的,对于同一业务节点,每周期内数据库分配的限流分片的分片数量是相同的。
示意性的,i为3,当分布式服务器在第3周期内接收到服务请求,而分布式服务器在第2周期内的限流分片具有的第一可响应次数未全部消耗完,将第3周期之前的业务节点对应的所有限流分片删除。
步骤340,根据服务请求获取第i个周期内的所述限流分片。
示意性的,分布式服务器根据服务请求所在的第3个周期,获取第3个周期内业务节点对应的限流分片。
如图8所示,以分布式服务器1为例进行说明,数据库123中业务节点对应的限流分片包括M个周期的限流分片。示意性的,分布式服务器1在第一个周期内获取到10个限流分片,在第二个周期内获取到6个限流分片,在第三个周期获取到1个限流分片,在第M个周期获取到N个限流分片。分布式服务器在不同的周期内获取到的限流分片的个数是相同的或不同的。
综上所述,本实施例提供的方法,通过按照周期划分限流分片,使得分布式服务器每周期更新限流分片,从而提高了分布式服务器处理服务请求的效率和准确率。
可以理解的是,上述更新限流分片的剩余片内数量、第一响应次数和周期性划分可以分别单独实施,也可以两两组合实施,也可以全部组合实施。
图9出了本申请另一个示例性实施例提供的服务器的限流方法,本实施例以该方法用于如图1所示的计算机系统100中为例进行说明,计算机系统100包括多个分布式服务器,分布式服务器通过网络分别与业务节点和数据库相连,该方法包括如下步骤:
步骤901,数据库根据业务节点的节点标识生成业务节点对应的限流分片。
如图4所示,数据库123中存储有各个业务节点对应的数据,以业务节点的节点标识作为键(key),通过键(key)确定对应的值(value),如,通过业务节点的节点标识能够确定业务节点对应的限流分片的第一可响应次数、业务节点的可响应总次数、业务节点更新一次限流分片的剩余分片数量的时间点、业务节点对应的剩余分片数量等数据。
数据库根据限流分片具有的第一可响应次数生成业务节点对应的限流分片。
其中,限流分片具有的第一响应次数是通过如下方式得到的,如图10所示:
S1、数据库获取分布式服务器的每秒查询率和分布式服务器的服务器数量,服务器数量是发送更新请求的分布式服务器的数量,更新请求用于请求更新业务节点对应的限流分片的剩余分片数量,每秒查询率是分布式服务器每秒内的可响应次数。
示意性的,多个分布式服务器的总查询为Q,分布式服务器中发送更新请求的服务器数量(即更新限流分片的剩余分片数量)为N,每个分布式服务器的每秒查询率为Q/N,更新一次剩余分片数量的时间为T,限流分片对应的第一可响应次数为S。
S2、数据库获取第一可响应次数减少至零时所需的第一时长。
由步骤S1可知,第一时长为S/(Q/N)。
S3、响应于第一时长大于第三阈值,数据库根据每秒查询率和服务器数量得到第一可响应次数。
当第一时长满足约束条件时,该约束条件为:一个限流片消耗的时间大于更新一次剩余分片数量的时间*(服务器数量-1),即S/(Q/N)>(N-1)*T。可计算得到限流分片的第一可响应次数为:S>((N-1)*T*Q)/N。
其中,第三阈值是通过如下方式得到的:
S11、响应于第一可响应次数为零,数据库接收分布式服务器发送的更新请求。
当业务节点对应的一个限流分片消耗完时,数据库更新业务节点对应的限流分片的剩余分片数量。
S22、数据库根据更新请求获取更新限流分片的剩余分片数量所需的第二时长。
示意性的,第二时长为更新一次剩余分片数量的时间T。第二时长是通过分布式服务器上一次更新剩余分片数量的时间点t1和本次更新剩余分片数量的时间点t2之间的时间差计算得到的。需要说明的是,当多个分布式服务器同时更新限流分片的剩余分片数量时,计算每个分布式服务器的更新一次剩余分片数量的时间T,然后计算该时间T的平均值得到第二时长。
S33、数据库根据服务器数量和第二时长得到第三阈值。
由第一时长满足的约束条件可知,第三阈值为(N-1)*T。
多个分布式服务器在更新业务节点对应的剩余分片数量时,为了避免已经更新过的分布式服务器又再次进行更新,延长未更新的分布式服务器的更新时长,保证分布式服务器进行有限次数的更新后,能够成功更新限流分片的剩余分片数量,从而以该有限次数小于等于服务器数量作为约束条件。
步骤902,分布式服务器接收终端发送的服务请求,服务请求用于业务节点处理业务。
步骤902的实施方式与图2所示的步骤201的实施方式一致,此处不再赘述。
步骤903,分布式服务器读取内存中与业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数,第一可响应次数在服务请求被成功响应时减少。
步骤903的实施方式与图2所示的步骤202的实施方式一致,此处不再赘述。
步骤904,响应于第一可响应次数满足读取条件,分布式服务器向数据库发送获取请求。
在一些实施例中,分布式服务器接收到多个终端同时发送的多个服务请求,多个服务请求对应的任务进程存在竞争关系,如图11所示,分布式服务器获取业务节点对应的限流分片的过程如下:
步骤1101,分布式服务器确定限流分片的第一可响应次数为零。
步骤1102,分布式服务器获取抢占到加锁的任务进程,该任务进程与多个服务请求中的一个服务请求对应。
步骤1103,分布式服务器根据已抢占到加锁的任务进程从数据库中获取限流分片。
需要说明的是,多个服务请求属于同一业务节点对应的服务请求。当多个进程存在竞争关系时,当任务进程抢占到加锁时才能执行操作,即抢占到加锁的任务进程执行从数据库中获取限流分片的操作。多个服务请求中的其它服务请求消耗分布式服务器中的限流分片具有的第一可响应次数。
示意性的,在本申请实施例中,当同一计算机系统中多个进程同时访问同一资源,可能导致数据不同步,因此需要对进程添加进程锁,获取到进程锁的进程执行相应的程序。示意性的,分布式服务器为进程所添加的锁为比较并交换锁(CAS锁,Compare And Swap)。
步骤1104,分布式服务器根据获取到的限流分片更新内存中的第一可响应次数。
步骤1104的实施方式与图6所示的步骤307的实施方式一致,此处不再赘述。
步骤1105,分布式服务器对已抢占到加锁的任务进程进行解锁操作,并将该服务请求对应的服务响应返回至终端。
示意性的,当抢占加锁的任务进程对应的服务请求也消耗限流分片的第一可响应次数,分布式服务器向业务节点发送该服务请求,业务节点根据该服务请求向分布式服务器发送服务响应,从而分布式服务器将服务响应发送至终端。
步骤905,响应于接收到分布式服务器发送的获取请求,数据库向分布式服务器发送业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数。
其中,获取请求包括:第一获取请求,第一获取请求是分布式服务器根据第一可响应次数小于或等于第一阈值时生成的;或,第二获取请求,第二获取请求是分布式服务器根据第一可响应次数小于比例时生成的;或,第三获取请求,第三获取请求是分布式服务器根据内存中不具有限流分片时生成的。
步骤906,响应于业务节点对应的限流分片的剩余分片数量为零,数据库向分布式服务器发送限流响应,限流响应用于指示分布式服务器在接收到限流响应时对服务请求进行限流处理。
步骤907,分布式服务器根据限流响应向终端发送提示信息,提示信息用于表示终端无法接收到服务请求对应的服务响应。
步骤907的实施方式与如图3所示的步骤305的实施方式一致,此处不再赘述。
综上所述,本实施例的方法,通过分布式服务器与数据库、业务节点之间多端交互,通过分布式服务器消耗限流分片进行对服务请求进行限流处理,无需分布式服务器频繁访问数据库,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。
图12是本申请一个示例性实施例提供的服务器的限流装置的结构框图,该装置包括:
第一接收模块1210,用于接收终端发送的服务请求,服务请求用于请求业务节点处理业务;
读取模块1220,用于读取内存中与业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数,第一可响应次数在服务请求被成功响应时减少;
第一获取模块1230,用于响应于第一可响应次数满足读取条件,从数据库中再次请求业务节点对应的下一个限流分片;
限流模块1240,用于响应于数据库中与业务节点对应的限流分片的剩余分片数量为零,对服务请求进行限流处理。
在一个可选的实施例中,所述第一获取模块1230,用于响应于第一可响应次数小于或等于第一阈值,从数据库中再次请求业务节点对应的下一个限流分片;或,响应于第一可响应次数小于比例,从数据库中再次请求业务节点对应的下一个限流分片。
在一个可选的实施例中,服务请求携带有业务节点的节点标识;
所述第一接收模块1210,用于响应于第一可响应次数小于或等于第一阈值,向数据库发送第一获取请求,第一获取请求携带有节点标识;接收业务节点对应的下一个限流分片,下一个限流分片是数据库根据节点标识发送的;
所述第一接收模块1210,用于响应于第一可响应次数小于比例,向数据库发送第二获取请求,第二获取请求携带有节点标识;接收业务节点对应的下一个限流分片,限流分片是数据库根据节点标识发送的。
在一个可选的实施例中,所述第一获取模块1230,用于响应于内存中不具有限流分片,从数据库中请求业务节点对应的限流分片。
在一个可选的实施例中,所述限流模块1240,还用于响应于数据库中业务节点对应的限流分片的剩余分片数量为零,拒绝将服务请求发送至业务节点中;向终端发送提示信息,提示信息用于表示终端无法接收到服务请求对应的服务响应。
在一个可选的实施例中,该装置包括更新模块1250;
所述更新模块1250,用于响应于从数据库中再次获取到业务节点对应的下一个限流分片,将数据库中业务节点对应的限流分片的剩余分片数量减少第二阈值;根据下一个限流分片的第二可响应次数更新内存中的第一可响应次数;根据已更新的第一可响应次数,将服务请求发送至业务节点中,已更新的第一可响应次数在服务请求被成功响应时减少。
在一个可选的实施例中,业务节点对应的限流分片是按照周期划分的;所述第一获取模块1230,用于响应于接收到的服务请求在第i个周期,将第i个周期之前的业务节点对应的限流分片删除,i为正整数;根据服务请求获取第i个周期内的限流分片。
综上所述,本实施例提供的装置,通过对各个业务节点的可响应总次数设置限流分片,分布式服务器根据服务请求的数量消耗限流分片,每消耗完一个限流分片,数据库才更新业务节点对应的限流分片的剩余分片数量,无需分布式服务器频繁访问数据库,同时,分布式服务器每接收一个服务请求,从数据库中获取一个限流分片,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。并且,通过将限流分片与服务请求建立联系,根据限流分片对服务请求进行限流处理,降低了业务节点的运行压力。
通过对一个限流分片的第一可响应次数设置第一阈值或比例,当限流分片的第一可响应次数满足第一阈值或比例时,预先从数据库中获取与业务接点对应的下一个限流分片,在业务节点对应有限流分片的前提下,保证分布式服务器能够持续性对接收到的服务请求进行处理。
无论分布式服务器的内存中的是否具有限流分片,均可从数据库中获取限流分片,提高了分布式服务器处理服务请求的效率。
当业务节点对应的限流分片的剩余分片数量为零时,由分布式服务器代替业务节点向终端发送提示信息,用于提示用户服务请求被拒绝响应,从而达到分布式服务器代替业务节点对服务请求进行限流的效果。
通过接收到的服务请求及时更新数据库中的限流分片的剩余分片数量,使得分布式服务器能够根据剩余分片数量确定是否能够再次获取业务节点对应的下一个限流分片,同时,分布式服务器根据接收到的服务请求更新第一可响应次数,使得分布式服务器能够确定是否对服务请求进行限流处理,提高了分布式服务器处理服务请求的效率和准确率。
通过按照周期划分限流分片,使得分布式服务器每周期更新限流分片,从而提高了分布式服务器处理服务请求的效率和准确率。
图13是本申请另一个示例性实施例提供的服务器的限流装置的结构框图,该装置包括:
生成模块1310,用于根据业务节点的可响应总次数生成业务节点对应的限流分片;
发送模块1320,用于响应于接收到分布式服务器发送的获取请求,向分布式服务器发送业务节点对应的限流分片,限流分片具有根据业务节点的可响应总次数分配到限流分片的第一可响应次数;
所述发送模块1320,用于响应于业务节点对应的限流分片的剩余分片数量为零,向分布式服务器发送限流响应,限流响应用于指示分布式服务器在接收到限流响应时对服务请求进行限流处理。
在一个可选的实施例中,获取请求包括:第一获取请求,第一获取请求是分布式服务器根据第一可响应次数小于或等于第一阈值时生成的;或,第二获取请求,第二获取请求是分布式服务器根据第一可响应次数小于比例时生成的;或,第三获取请求,第三获取请求是分布式服务器根据内存中不具有限流分片时生成的。
在一个可选的实施例中,该装置还包括第二获取模块1330;限流分片具有的第一可响应次数是通过如下方式得到的:
所述第二获取模块1330,用于获取分布式服务器的每秒查询率和分布式服务器的服务器数量,服务器数量是发送更新请求的分布式服务器的数量,更新请求用于请求更新业务节点对应的限流分片的剩余分片数量,每秒查询率是分布式服务器每秒内的可响应次数;获取第一可响应次数减少至零时所需的第一时长;响应于第一时长大于第三阈值,根据每秒查询率和服务器数量得到第一可响应次数。
在一个可选的实施例中,该装置还包括第二接收模块1340;第三阈值是通过如下方式得到的:
所述第二接收模块1340,用于响应于第一可响应次数为零,接收分布式服务器发送的更新请求;根据更新请求获取更新限流分片的剩余分片数量所需的第二时长;根据服务器数量和第二时长得到第三阈值。
综上所述,本实施例提供的装置,通过分布式服务器与数据库、业务节点之间多端交互,通过分布式服务器消耗限流分片进行对服务请求进行限流处理,无需分布式服务器频繁访问数据库,将数据库的运行压力分散到多个分布式服务器中,降低了数据库的运行压力。
需要说明的是:上述实施例提供的服务器的限流装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器的限流装置与服务器的限流方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图14示出了本申请一个示例性实施例提供的服务器的结构示意图。该服务器可以是如图1所示的计算机系统100中的分布式服务器121。
服务器1400包括中央处理单元(CPU,Central Processing Unit)1401、包括随机存取存储器(RAM,Random Access Memory)1402和只读存储器(ROM,Read Only Memory)1403的系统存储器1404,以及连接系统存储器1404和中央处理单元1401的系统总线1405。服务器1400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统,Input Output System)1406,和用于存储操作系统1413、应用程序1414和其他程序模块1415的大容量存储设备1407。
基本输入/输出系统1406包括有用于显示信息的显示器1408和用于用户输入信息的诸如鼠标、键盘之类的输入设备1409。其中显示器1408和输入设备1409都通过连接到系统总线1405的输入输出控制器1410连接到中央处理单元1401。基本输入/输出系统1406还可以包括输入输出控制器1410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1410还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备1407通过连接到系统总线1405的大容量存储控制器(未示出)连接到中央处理单元1401。大容量存储设备1407及其相关联的计算机可读介质为服务器1400提供非易失性存储。也就是说,大容量存储设备1407可以包括诸如硬盘或者紧凑型光盘只读存储器(CD-ROM,Compact Disc Read Only Memory)驱动器之类的计算机可读介质(未示出)。
计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(DVD,Digital Versatile Disc)或固态硬盘(SSD,Solid State Drives)、其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器1404和大容量存储设备1407可以统称为存储器。
根据本申请的各种实施例,服务器1400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1400可以通过连接在系统总线1405上的网络接口单元1411连接到网络1412,或者说,也可以使用网络接口单元1411来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
在一个可选的实施例中,提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的服务器的限流方法。
在一个可选的实施例中,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的服务器的限流方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅为了描述,不代表实施例的优劣。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从该计算机可读存储介质读取该计算机指令,该处理器执行该计算机指令,使得该计算机设备执行如上所述的服务器的限流方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (14)

1.一种服务器的限流方法,其特征在于,所述方法应用于多个分布式服务器中的任意一个分布式服务器,所述分布式服务器通过网络分别与业务节点和数据库相连,一个业务节点对应多个限流分片,所述方法包括:
接收终端发送的服务请求,所述服务请求用于请求所述业务节点处理业务;
读取内存中与所述业务节点对应的一个限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,所述第一可响应次数在所述服务请求被成功响应时减少;
响应于所述第一可响应次数小于或等于第一阈值,从所述数据库中再次请求所述业务节点对应的下一个限流分片;或,响应于所述第一可响应次数小于比例,从所述数据库中再次请求所述业务节点对应的下一个限流分片;
响应于所述数据库中与所述业务节点对应的限流分片的剩余分片数量为零,对所述服务请求进行限流处理。
2.根据权利要求1所述的方法,其特征在于,所述服务请求携带有所述业务节点的节点标识;
所述响应于所述第一可响应次数小于或等于第一阈值,从所述数据库中再次请求所述业务节点对应的下一个限流分片,包括:
响应于所述第一可响应次数小于或等于所述第一阈值,向所述数据库发送第一获取请求,所述第一获取请求携带有所述节点标识;接收所述业务节点对应的下一个限流分片,所述下一个限流分片是所述数据库根据所述节点标识发送的;
所述响应于所述第一可响应次数小于比例,从所述数据库中再次请求所述业务节点对应的下一个限流分片,包括:
响应于所述第一可响应次数小于所述比例,向所述数据库发送第二获取请求,所述第二获取请求携带有所述节点标识;接收所述业务节点对应的下一个限流分片,所述限流分片是所述数据库根据所述节点标识发送的。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述内存中不具有所述限流分片,从所述数据库中请求所述业务节点对应的限流分片。
4.根据权利要求1至2任一所述的方法,其特征在于,所述响应于所述数据库中所述业务节点对应的限流分片的剩余分片数量为零,对所述服务请求进行限流处理,包括:
响应于所述数据库中所述业务节点对应的所述限流分片的剩余分片数量为零,拒绝将所述服务请求发送至所述业务节点中;
向所述终端发送提示信息,所述提示信息用于表示所述终端无法接收到所述服务请求对应的服务响应。
5.根据权利要求1至2任一所述的方法,其特征在于,所述方法还包括:
响应于从所述数据库中再次获取到所述业务节点对应的下一个限流分片,将所述数据库中所述业务节点对应的限流分片的剩余分片数量减少第二阈值;
根据所述下一个限流分片的第二可响应次数更新所述内存中的所述第一可响应次数;
根据已更新的第一可响应次数,将所述服务请求发送至所述业务节点中,所述已更新的第一可响应次数在所述服务请求被成功响应时减少。
6.根据权利要求1至2任一所述的方法,其特征在于,所述业务节点对应的限流分片是按照周期划分的;所述方法还包括:
响应于接收到的所述服务请求在第i个周期,将所述第i个周期之前的所述业务节点对应的限流分片删除,i为正整数;
根据所述服务请求获取所述第i个周期内的所述限流分片。
7.一种服务器的限流方法,其特征在于,所述方法应用于数据库中,所述数据库通过网络与多个分布式服务器相连,所述分布式服务器通过所述网络与业务节点相连,一个业务节点对应多个限流分片,所述方法包括:
根据所述业务节点的可响应总次数生成所述业务节点对应的限流分片;
响应于接收到所述分布式服务器发送的获取请求,向所述分布式服务器发送所述业务节点对应的一个限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,其中所述获取请求包括:第一获取请求,所述第一获取请求是所述分布式服务器根据所述第一可响应次数小于或等于第一阈值时生成的;或,第二获取请求,所述第二获取请求是所述分布式服务器根据所述第一可响应次数小于比例时生成的;
响应于所述业务节点对应的限流分片的剩余分片数量为零,向所述分布式服务器发送限流响应,所述限流响应用于指示所述分布式服务器在接收到所述限流响应时对服务请求进行限流处理。
8.根据权利要求7所述的方法,其特征在于,所述获取请求还包括:
第三获取请求,所述第三获取请求是所述分布式服务器根据内存中不具有所述限流分片时生成的。
9.根据权利要求7或8所述的方法,其特征在于,所述限流分片具有的所述第一可响应次数是通过如下方式得到的:
获取所述分布式服务器的每秒查询率和所述分布式服务器的服务器数量,所述服务器数量是发送更新请求的分布式服务器的数量,所述更新请求用于请求更新所述业务节点对应的限流分片的剩余分片数量,所述每秒查询率是所述分布式服务器每秒内的可响应次数;
获取所述第一可响应次数减少至零时所需的第一时长;
响应于所述第一时长大于第三阈值,根据所述每秒查询率和所述服务器数量得到所述第一可响应次数。
10.根据权利要求9所述的方法,其特征在于,所述第三阈值是通过如下方式得到的:
响应于所述第一可响应次数为零,接收所述分布式服务器发送的所述更新请求;
根据所述更新请求获取更新所述限流分片的剩余分片数量所需的第二时长;
根据所述服务器数量和所述第二时长得到所述第三阈值。
11.一种服务器的限流装置,其特征在于,所述装置包括:
第一接收模块,用于接收终端发送的服务请求,所述服务请求用于请求业务节点处理业务;
读取模块,用于读取内存中与所述业务节点对应的一个限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,所述第一可响应次数在所述服务请求被成功响应时减少其中一个业务节点对应多个限流分片;
第一获取模块,用于响应于所述第一可响应次数小于或等于第一阈值,从数据库中再次请求所述业务节点对应的下一个限流分片;或,响应于所述第一可响应次数小于比例,从所述数据库中再次请求所述业务节点对应的下一个限流分片;
限流模块,用于响应于所述数据库中与所述业务节点对应的限流分片的剩余分片数量为零,对所述服务请求进行限流处理。
12.一种服务器的限流装置,其特征在于,所述装置包括:
生成模块,用于根据业务节点的可响应总次数生成所述业务节点对应的限流分片;
发送模块,用于响应于接收到分布式服务器发送的获取请求,向所述分布式服务器发送所述业务节点对应的一个限流分片,所述限流分片具有根据所述业务节点的可响应总次数分配到所述限流分片的第一可响应次数,其中一个业务节点对应多个限流分片;所述获取请求包括:第一获取请求,所述第一获取请求是所述分布式服务器根据所述第一可响应次数小于或等于第一阈值时生成的;或,第二获取请求,所述第二获取请求是所述分布式服务器根据所述第一可响应次数小于比例时生成的;
所述发送模块,用于响应于所述业务节点对应的限流分片的剩余分片数量为零,向所述分布式服务器发送限流响应,所述限流响应用于指示所述分布式服务器在接收到所述限流响应时对服务请求进行限流处理。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至10任一所述的服务器的限流方法。
14.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至10任一所述的服务器的限流方法。
CN202010732368.2A 2020-07-27 2020-07-27 服务器的限流方法、装置、设备及存储介质 Active CN114070847B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010732368.2A CN114070847B (zh) 2020-07-27 2020-07-27 服务器的限流方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010732368.2A CN114070847B (zh) 2020-07-27 2020-07-27 服务器的限流方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114070847A CN114070847A (zh) 2022-02-18
CN114070847B true CN114070847B (zh) 2024-01-23

Family

ID=80226529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010732368.2A Active CN114070847B (zh) 2020-07-27 2020-07-27 服务器的限流方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114070847B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115086234B (zh) * 2022-05-09 2024-04-26 阿里巴巴(中国)有限公司 消息处理方法及系统、设备及存储介质
CN116095098B (zh) * 2022-11-28 2024-04-09 华南农业大学 数据的分布式存储方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019120217A1 (zh) * 2017-12-19 2019-06-27 北京金山云网络技术有限公司 一种令牌获取方法、装置、服务器、用户终端及介质
CN110049084A (zh) * 2018-12-10 2019-07-23 阿里巴巴集团控股有限公司 分布式系统的限流方法、装置及设备
CN110191160A (zh) * 2019-05-10 2019-08-30 深圳前海微众银行股份有限公司 一种并发控制方法和装置
CN110399212A (zh) * 2018-04-25 2019-11-01 北京京东尚科信息技术有限公司 任务请求处理方法、装置、电子设备及计算机可读介质
CN110401720A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 信息处理方法、装置、系统、应用服务器和介质
CN110460541A (zh) * 2019-07-30 2019-11-15 秒针信息技术有限公司 应用于web服务器的限流方法及装置
CN110768912A (zh) * 2019-10-21 2020-02-07 中国民航信息网络股份有限公司 Api网关限流方法及装置
CN110798517A (zh) * 2019-10-22 2020-02-14 雅马哈发动机(厦门)信息系统有限公司 去中心化集群负载均衡方法、系统、移动终端及存储介质
US10659371B1 (en) * 2017-12-11 2020-05-19 Amazon Technologies, Inc. Managing throttling limits in a distributed system
CN111447150A (zh) * 2020-02-29 2020-07-24 中国平安财产保险股份有限公司 访问请求限流方法、服务器及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581745B2 (en) * 2017-12-11 2020-03-03 International Business Machines Corporation Dynamic throttling thresholds

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10659371B1 (en) * 2017-12-11 2020-05-19 Amazon Technologies, Inc. Managing throttling limits in a distributed system
WO2019120217A1 (zh) * 2017-12-19 2019-06-27 北京金山云网络技术有限公司 一种令牌获取方法、装置、服务器、用户终端及介质
CN110399212A (zh) * 2018-04-25 2019-11-01 北京京东尚科信息技术有限公司 任务请求处理方法、装置、电子设备及计算机可读介质
CN110049084A (zh) * 2018-12-10 2019-07-23 阿里巴巴集团控股有限公司 分布式系统的限流方法、装置及设备
CN110191160A (zh) * 2019-05-10 2019-08-30 深圳前海微众银行股份有限公司 一种并发控制方法和装置
CN110460541A (zh) * 2019-07-30 2019-11-15 秒针信息技术有限公司 应用于web服务器的限流方法及装置
CN110401720A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 信息处理方法、装置、系统、应用服务器和介质
CN110768912A (zh) * 2019-10-21 2020-02-07 中国民航信息网络股份有限公司 Api网关限流方法及装置
CN110798517A (zh) * 2019-10-22 2020-02-14 雅马哈发动机(厦门)信息系统有限公司 去中心化集群负载均衡方法、系统、移动终端及存储介质
CN111447150A (zh) * 2020-02-29 2020-07-24 中国平安财产保险股份有限公司 访问请求限流方法、服务器及存储介质

Also Published As

Publication number Publication date
CN114070847A (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
CN111091429B (zh) 电子票据标识分配方法及装置、电子票据生成系统
CN108399101B (zh) 资源调度的方法、装置和系统
CN107464151B (zh) 高并发业务的订单数据处理方法及装置
CN111639309B (zh) 一种数据处理方法、装置、节点设备及存储介质
CN114070847B (zh) 服务器的限流方法、装置、设备及存储介质
CN109918382A (zh) 数据处理方法、装置、终端及存储介质
CN112468409A (zh) 访问控制方法、装置、计算机设备及存储介质
CN109582439A (zh) Dcn部署方法、装置、设备及计算机可读存储介质
CN110737425A (zh) 一种计费平台系统的应用程序的建立方法及装置
CN113254106B (zh) 基于Flink的任务执行方法、装置、计算机设备及存储介质
CN108520401B (zh) 用户名单管理方法、装置、平台及存储介质
CN110928594A (zh) 服务开发方法和平台
CN111694835B (zh) 物流电子面单的号段存取方法及系统、设备及存储介质
CN116886626A (zh) 一种业务数据限流方法、装置、计算机设备及存储介质
CN111291045A (zh) 服务隔离数据传输方法、装置、计算机设备及存储介质
CN116723002A (zh) 基于态势感知的电力报告智能加密方法
CN118034822A (zh) 页面处理方法、装置、设备和存储介质
CN114331446B (zh) 区块链的链外服务实现方法、装置、设备和介质
US20230049322A1 (en) Information processing method, device, system, and computer-readable storage medium
CN113420050A (zh) 数据查询管理方法、装置、计算机设备及可读存储介质
CN113495887B (zh) 数据表单处理方法、装置和系统
CN114493598A (zh) 计算资源管理方法、装置、计算机设备和存储介质
CN115686811A (zh) 进程管理方法、装置、计算机设备及存储介质
CN115373831A (zh) 数据处理方法、装置以及计算机可读存储介质
CN111523927A (zh) 资源的发送方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant