首页> 中国专利> 一种高并发系统中控制并发数的装置和方法

一种高并发系统中控制并发数的装置和方法

摘要

本申请公开了一种高并发系统中控制并发数的装置,包括至少一个流量阀门和至少一个流量阀门配置器,其中流量阀门为双向流量阀门,设置有根据服务名称和请求处理类型区分的并发数上限,流量阀门配置器用于对流量阀门进行配置。同时还公开了控制并发数的方法,当一个服务请求被发起调用或接收时都要经过流量阀门,根据服务名称和请求处理类型来判断目前的并发数是否已经超过预定的上限来进行处理。本申请可以主动地控制调用服务的并发数和接收服务请求的并发数,保证系统内的计算、网络链接等资源的使用率在一定的范围之内,可以使每个系统在可承受的压力之下稳健地运行,避免了高并发使系统宕机的情况发生。

著录项

  • 公开/公告号CN103379040A

    专利类型发明专利

  • 公开/公告日2013-10-30

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201210122889.1

  • 发明设计人 谢中富;刘志勇;叶江华;

    申请日2012-04-24

  • 分类号H04L12/801(20130101);H04L12/863(20130101);

  • 代理机构33224 杭州天勤知识产权代理有限公司;

  • 代理人杨天娇

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2024-02-19 20:56:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-31

    授权

    授权

  • 2013-11-27

    实质审查的生效 IPC(主分类):H04L12/801 申请日:20120424

    实质审查的生效

  • 2013-10-30

    公开

    公开

说明书

技术领域

本申请涉及计算机网络技术领域,尤其涉及一种高并发系统中控制并 发数的装置和方法。

背景技术

随着互联网业务的不断丰富,网站相关的技术得到了飞速的发展,大 型网站不断涌现。大型网站,比如门户网站,经常需要面对高负载和高并 发问题。目前对于高并发下多系统间的并发数控制,一直是各大系统特别 是秒杀系统首要考虑的因素之一,这直接影响到系统的可用性和网站的用 户体验。

面对这样的问题,常用的解决方案集中在这样几个环节:使用高性能 的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器 等,以及采用HTML静态化,图片服务器分离,数据库集群和库表散列, 缓存,镜像,负载均衡等技术手段。但是对于突然增加的高并发情况,如 秒杀系统,仍然是无能为力,网站瘫痪的例子比较常见。为应对这种情况, 目前的解决方案主要是,前端应用系统与各个业务支撑系统根据系统自身 的处理能力,以系统维度独立控制并发数,当并发数超过预设的值时直接 拒绝后来的服务请求。这种方法存在的缺点是:

1、不同服务之间相互影响,服务之间存在高耦合;

在一个系统上有多个不同服务的情况下,由于并发数控制是按系统维 度,当某一个服务并发很高达到系统的并发数上限时,该系统将拒绝访问 系统内的所有服务,虽然该系统上的其它服务仍有足够的处理能力,仍然 会被拒绝访问,导致不可用。

2、会产生无用的网络开销,占用系统的通信资源;

当提供服务的系统处于非常忙碌的状态,达到并发数上限时,服务调 用系统并没有得到反馈,仍不断地调用所依赖的服务,产生大量无用的网 络开销。由于调用方得到失败的结果,会在一段时间内重试,大量重试请 求会占用系统的通信资源,从而影响其它服务的处理。

3、不能避免系统出现宕机的情况;

当第二种的情况长时间出现,随着前端用户持续不断地操作,必然会 触发整套系统链中瓶颈出现,如网络链接数耗光,最终导致雪崩响应,系 统宕机。

公开号为CN102291324A的中国发明申请公开了一种高并发业务请 求处理方法,通过设置分组消息队列,首先将业务请求按照目的IP进行分 组,然后将同组的业务请求合并成网络请求后再发送给服务器,减少了请求 次数,但是其服务器的响应仍然是逐个响应。该方案不能按照服务区别响 应,同样服务调用系统并没有得到反馈,仍不断地调用所依赖的服务。

公开号为CN101815338A的中国发明申请公开了一种控制并发呼叫 量的装置和方法,具有根据呼叫特征划分的各个并发呼叫量对应的变量, 并判断所述变量不小于设定的阈值时,释放当前呼叫。但是该方法按照呼 叫特征优先级来响应,当一种特征呼叫处于高并发状态时,仍然要影响其 他特征的服务。

因此,如何有效利用现有设备,有效控制高并发数,降低系统宕机的 风险,仍然是需要解决的技术问题。

发明内容

本申请的目的是有效控制高并发系统中的并发数,防止系统在高并发 冲击下的资源耗尽,进而宕机。

一种高并发系统中控制并发数的装置,包括:

至少一个流量阀门,所述流量阀门为双向流量阀门,设置有根据服务 名称和请求处理类型区分的并发数上限,用于判断接收的服务请求对应的 并发数是否耗尽,并进行处置;

流量阀门配置器,用于按服务名称和请求处理类型配置所述流量阀门 对应该服务名称和请求处理类型的并发数上限。

进一步地,所述流量阀门包括:

缓存单元,用于对服务请求进行排队;

判断单元,用于判断接收的服务请求对应的并发数是否耗尽;

处理单元,用于根据判断结果,对所述服务请求进行处置,若接收的 服务请求对应的并发数耗尽则将服务请求放入缓存单元排队,否则允许服 务请求通过。

进一步地,所述的流量阀门缓存单元包括::

超时处理单元,用于判断等待处理的服务请求是否等待超时,若超时 则返回请求超过并发数上限信息,并删除所述服务请求,否则服务请求继 续等待流量阀门处理。

所述请求处理类型包括调用服务和接收服务。对于同一个服务名称的 服务请求,所述高并发系统中流量阀门设置的调用服务并发数上限要小于 等于接收服务并发数上限。

一种高并发系统中控制并发数的方法,应用于包括子系统为前端应用 系统和至少一个业务支撑系统的高并发系统,包括以下步骤:

根据各子系统包括的服务配置各子系统上的流量阀门,其中,所述流 量阀门为双向流量阀门,设置有根据服务名称和请求处理类型区分的并发 数上限;

当流量阀门收到服务请求时,根据所请求的服务名称和请求处理类型 判断流量阀门设置的相应并发数上限是否被耗尽;

如果所述相应并发数未被耗尽,则允许所述服务请求通过流量阀门, 否则不允许所述服务请求通过。

进一步地,还包括步骤:

若不允许所述服务请求通过,则所述服务请求排队等待流量阀门处 理;

判断等待时间是否超时,如果超时则返回请求超过并发数上限,并删 除该服务请求,否则继续等待流量阀门处理。

所述的请求处理类型包括调用服务和接收服务,对于同一个服务名称 的服务请求,所述高并发系统中流量阀门设置的调用服务并发数上限要小 于等于接收服务并发数上限。

对于同一个服务名称的服务被所述高并发系统中多个子系统调用,那 么多个子系统的流量阀门设置的调用服务并发数上限之和应小于等于接 收服务并发数上限。

本申请公开的高并发系统中控制并发数的装置和方法,相对于现有技 术,具有如下突出的技术效果:

1、本申请在高并发系统的各个子系统中设置流量阀门,当有大量地 用户并发操作时,通过流量阀门主动控制对依赖业务支撑系统的并发压 力。控制各个子系统的并发数,就可以使每个子系统在可承受的压力之下 稳健地运行,避免了大并发使系统宕机的情况发生。本申请流量阀门为双 向阀门的设计,分别对接收的服务请求按照调用服务还是接收服务进行区 分,使得服务调用方对服务提供方的并发数压力在预设的范围之内,避免 了大量无用地调用服务的情况,系统可以主动地控制调用服务的并发数和 接收服务请求的并发数,保证系统内的计算、网络链接等资源的使用率在 一定的范围之内,避免这些资源被消耗光,导致服务不可用。就是使每个 系统承受的并发压力在预定的范围内,并且保证在服务处理能力达到瓶颈 时系统间的网络传输不存在大量无效地请求。同时所述的流量阀门还设置 了缓存单元,对接收的服务请求进行排队,并判断等待时间是否超时,如 果超时则直接回复该请求超过并发数上限,并删除该服务请求,从而避免 了大量服务请求排队导致拥塞的产生。

2、本申请通过在高并发系统的各个子系统中设置双向流量阀门的方 法,以服务的维度控制服务调用方的并发数,并控制服务提供方处理请求 的并发数,两者协调配合保证各个系统的并发数在可承受范围内,按服务 的维度控制并发数,可以做到不同服务之间不会相互影响。对于同一服务 名称的服务,如果服务提供子系统同时被多个服务请求子系统调用服务, 那么多个子系统的流量阀门设置的调用服务并发数上限之和应小于等于 接收服务并发数上限,这样就有效的实现整个高并发系统各自子系统之间 调用服务和接收服务的均衡,避免因某一服务资源被耗光后,影响整个系 统的运行,极大的维持了高并发系统的稳定性。

附图说明

图1为本申请高并发系统结构示意图;

图2为本申请流量阀门内部模块结构示意图;

图3为本申请高并发系统流量阀门工作流程图。

具体实施方式

下面结合附图和实施例对本申请技术方案做进一步详细说明,以下实 施例不构成对本申请的限定。

如图1所示,本申请高并发系统包括多个子系统,分别为前端应用系 统与多个业务支撑系统,分别为业务支撑系统1,业务支撑系统2,业务 支撑系统3;高并发系统还设置有流量阀门配置器。前端应用系统和业务 支撑系统都分别设置有双向流量阀门。

本申请的前端应用系统接收用户的操作请求,在处理请求的过程中需 要调用后端的业务支撑系统提供的服务,而各个业务支撑系统之间也存在 服务调用。前端应用系统接收用户的操作请求,并调用业务支撑系统1和 业务支撑系统2的服务,业务支撑系统1和业务支撑系统2不仅接收前端 应用系统的服务请求,还调用业务支撑系统3的服务。

流量阀门配置器按服务名称和请求处理类型分别对各个子系统的流 量阀门进行配置,配置流量阀门对应各个服务名称和请求处理类型的并发 数上限。

流量阀门是双向流量阀门,按服务名称和请求处理类型控制通过流量 阀门的服务请求并发数,请求处理类型包括调用服务和接收服务,对于本 子系统流入的接收服务和流出的调用服务进行双向控制。

表1显示了流量阀门配置器的一些示例性的配置表:

  服务名称   请求处理类型   并发数上限   描述   algorithm_mlrm   invoke   5   算法相关性算分服务   algorithm_mlrm   receive   10   算法相关性算分服务   algorithm_normandy   invoke   5   算法推荐词服务

表1

其中服务名称如algorithm_mlrm,是由系统名和服务名组成,algorithm 是服务名称的系统名,mlrm是相关服务名称的服务名。请求处理类型包 括调用服务和接收服务请求两种,invoke代表调用服务,receive代表接收 服务请求。

表1中algorithm_mlrm服务被两个系统调用,所以receive请求类型 的并发数上限是invoke请求类型的两倍。

每个远程服务的调用都是通过网络传输的,流量阀门通过双向、主动 地方式控制网络链接池,限制每个服务请求的并发数不超过预设置的值。 对于同一个服务,服务调用系统流量阀门设置的并发数上限要小于等于服 务提供系统设置的上限。一个服务可能被多个系统调用,这时多个服务调 用系统的设置的并发数上限之和应小于等于服务提供系统设置的上限。通 过这种控制方式,就可以使得各个系统间的并发数不超过系统可承受的上 限,同时也能保证在系统之间相互的服务请求是有效地,各个系统能高效 协同地工作。

前端应用系统接收用户的操作请求,并向业务支撑系统1和业务支撑 系统2发起调用服务请求;对于用户而言,前端应用系统是服务提供系统, 而对于支撑业务系统而言,前端应用系统是业务支撑系统的服务调用系 统,业务支撑系统1和2是前端应用系统的服务提供系统。则前端应用系 统的流量阀门设置的接收服务并发数上限是针对用户的,其设置的调用服 务并发数上限是针对业务支撑系统的,同时该调用服务并发数上限应该小 于或等于业务支撑系统1和业务支撑系统2接收服务并发数上限。

而支撑业务系统1和2是业务支撑系统3的服务调用系统,业务支撑 系统3是业务支撑系统1和2的服务提供系统,因此业务支撑系统3上的 接收服务并发数上限要大于业务支撑系统1和业务支撑系统2上调用服务 并发数上限的和。

流量阀门配置器分别为各个系统中的流量阀门进行配置,统一管理整 个系统中调用服务并发数和接收服务并发数,维持服务提供系统与服务调 用系统间的平衡。限制每个服务请求的并发数不超过预设置的值,对于同 一个服务,服务调用系统流量阀门设置的并发数上限要小于等于服务提供 系统设置的上限,从而保障整个系统稳定高效的工作。

如图2所示,本申请的流量阀门还包括:

缓存单元,用于对服务请求进行排队;

判断单元,用于判断接收的服务请求对应的并发数是否耗尽;

处理单元,用于根据判断结果,对服务请求进行处置,若接收的服务 请求对应的并发数耗尽则将服务请求放入缓存单元排队,否则允许服务请 求通过。

进一步地,流量阀门缓存单元包括::

超时处理单元,用于判断等待处理的服务请求是否等待超时,若超时 则返回请求超过并发数上限信息,并删除服务请求,否则服务请求继续等 待流量阀门处理。

本申请流量阀门控制并发数流程如图3所示,包括步骤:

步骤301、根据服务名称和请求处理类型配置各个子系统流量阀门并 发数上限;

步骤302、流量阀门收到服务请求;

步骤303、根据服务名称和请求处理类型判断流量阀门设置的相应并 发数是否被耗尽,如果被耗尽则进入下一步骤,否则进入步骤307;

步骤304、等待流量阀门处理;

步骤305、判断等待时间是否超时,如果超时则进入下一步骤,否则 返回步骤303;

步骤306、返回请求超过阀值,结束;

步骤307、执行具体业务逻辑;

步骤308、返回请求成功信息,结束;

当一个服务请求被发起调用或接收时都要经过流量阀门,程序根据服 务名称和请求处理类型来判断目前的并发数是否已经超过预定的上限,如 果没有达到上限,此请求通过阀门,此时占用一个网络链接资源。否则循 环等待网络链接资源释放,当等待时间超过预设的等待超时时间时,返回 请求超过阀值。如果没有超时,并且有资源释放时,此请求就通过阀门, 此时占用一个网络链接资源。

本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人 计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器 系统、包括以上任何系统或设备的分布式计算环境等等。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描 述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象 数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计 算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连 接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于 包括存储设备在内的本地和远程计算机存储介质中。

以上仅是本申请的优选实施方式,应当指出,对于本技术领域的一般 技术人员来说,本申请还可以有各种更改和变化。在不脱离本申请原理的 前提下,所作的任何修改、等同替换、改进等,均应包含在本申请的保护 范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号