一种访问量的控制方法及装置与流程

文档序号:15394664发布日期:2018-09-08 01:54阅读:147来源:国知局
本发明涉及互联网
技术领域
:,尤其涉及一种访问量的控制方法及装置。
背景技术
::随着互联网技术的发展,在线购物平台在近几年呈现爆炸式增长,并逐渐成为了人民生活中的一种主要购物手段。各大在线购物平台的运营商也在不断优化平台性能,以便于承载更多了访问量。促销、抢购等容易造成访问量峰值的高并发业务,往往都会极大得增加在线购物平台的运行负载,为了维持系统的稳定运行,目前都会进行流量控制。但是,在商品展示系统、详情页展示系统等业务系统,往往承担了多种业务,由于高并发业务进行的流量控制,会影响业务系统所承担的非高并发业务的正常执行,例如:业务系统进入流量控制模式后,采用抢占式的处理方式:先来的业务先处理,同时流控掉其它业务的请求;待有完成的业务被释放后再接入其它业务的请求并为之分配相应的计算资源。并且造成了以牺牲非高并发业务为前提条件来实现对系统的保护的现象,从而影响非高并发业务的正常运行,最终导致了销售量降低。技术实现要素:本发明的实施例提供一种访问量的控制方法及装置,能够缓减现有方案中以牺牲非高并发业务为前提条件来实现对系统的保护的现象。为达到上述目的,本发明的实施例采用如下技术方案:第一方面,本发明的实施例提供的方法,包括:获取当前所运行的业务接口的键值,并读取指向所述业务接口的并发请求的数量,所述键值用于标识当前所运行的业务接口的业务级别;根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点;若是,则根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分;根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点,包括:在单位时间内检测指向所述业务接口的并发请求的数量,是否达到预设门限;若是则判定所述键值对应的业务为热点。结合第一方面,在第一方面的第二种可能的实现方式中,所述根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制,包括:根据所述对应所述业务接口的热点通过率和当前读取到的随机数,确定所述业务接口的流控阀值;针对未被拦截的指向所述业务接口的并发请求,根据所述流控阀值检测是否对所述业务接口执行流量控制。结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:获取为热点的业务接口的有效时长,并将所述有效时长分割为至少2个时间节点,其中,若超过所述有效时长,则业务接口失效为非热点;根据当前的时间节点内的并发请求的通过数和流控数的比例,确定下一时间节点的热点通过率。结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:当一个业务接口作为有效的热点时,根据这一个业务接口的键值分配缓存,所述缓存用于存储指向这一个业务接口的并发请求;当一个业务接口由有效的热点转换为非有效的热点时,删除针对这一个业务接口的键值所分配的缓存。结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:当判定所述一个业务接口作为有效的热点时,建立对应所述一个业务接口的键值的计时器;当所述计时器超时时,判定所述一个业务接口转换为非有效的热点。第二方面,本发明的实施例提供的装置,包括:读取模块,用于获取当前所运行的业务接口的键值,并读取指向所述业务接口的并发请求的数量,所述键值用于标识当前所运行的业务接口的业务级别;热点管理模块,用于根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点;第一层流控模块,用于根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分;第二层流控模块,用于根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。结合第二方面,在第二方面的第一种可能的实现方式中,所述热点管理模块,具体用于在单位时间内检测指向所述业务接口的并发请求的数量,是否达到预设门限;若是则判定所述键值对应的业务为热点。结合第二方面,在第二方面的第二种可能的实现方式中,所述第二层流控模块,具体用于根据所述对应所述业务接口的热点通过率和当前读取到的随机数,确定所述业务接口的流控阀值;针对未被拦截的指向所述业务接口的并发请求,根据所述流控阀值检测是否对所述业务接口执行流量控制。结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:通过率调整模块,用于获取为热点的业务接口的有效时长,并将所述有效时长分割为至少2个时间节点,其中,若超过所述有效时长,则业务接口失效为非热点;并根据当前的时间节点内的并发请求的通过数和流控数的比例,确定下一时间节点的热点通过率。本发明实施例提供的访问量的控制方法及装置,根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分;再根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。通过对应所述业务接口的热点通过率来拦截大量的高并发请求(即第一层流控),再通过热点算法的请求将继续第二层流控,使得高并发业务和非高并发业务的流控解耦,缓减并发业务的流控影响非高并发业务的情况。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本发明实施例提供的一种可能的系统架构示意图;图2为本发明实施例提供的方法流程示意图;图3为本发明实施例提供的具体实例的流程示意图;图4、图5为本发明实施例提供的装置的结构示意图。具体实施方式为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本
技术领域
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本
技术领域
:技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。本实施例中的方法流程,具体可以在一种如图1所示的系统上执行,该系统包括:服务器和用户设备。其中,服务器主要用于:接收用户设备发送的请求,比如:智能手机向网站服务器发送的访问消息,并在较高负载情况下对接收到的请求进行流量控制处理。在本实施例中,请求包括:用于触发业务执行的请求、用于访问某个页面或者登陆网站的消息,或者其他用于用户设备向服务器发送的用于执行业务操作的“消息”、“报文”、“数据”或者“信息”,在本实施例中对于这些“消息”、“报文”、“数据”或者“信息”统称为“请求”。本实施例中所揭示的服务器,具体可以是服务器、工作站、超级计算机等设备,或者是由多个服务器组成的一种用于数据处理的服务器集群系统。需要说明的是,在实际应用中,服务器和后台服务器通常可以集成在同一个服务器集群中,即通过同一个服务器集群同时承担服务器和后台服务器的功能,并用于执行本实施例所提供的流程。在实际应用中,用户设备发送的请求主要由用户通过用户设备的输入设备比如:键盘、触摸屏、鼠标等输入用户设备;服务器可以向发布网页、登录界面等操作界面,以便于用户设备通过操作界面输入请求。本实施例中所揭示的用户设备具体可以实做成单独一台装置,或整合于各种不同的媒体数据播放装置中,诸如机顶盒、移动电话、平板电脑(tabletpersonalcomputer)、膝上型电脑(laptopcomputer)、多媒体播放器、数字摄影机、个人数字助理(personaldigitalassistant,简称pda)、移动上网装置(mobileinternetdevice,mid)或可穿戴式设备(wearabledevice)等。其中,用户设备向服务器上所运行的业务接口发送请求,比如:服务器为一种在线购物平台的服务器,用于运行并向用户设备展示平台的商品展示界面,则当前所运行的业务接口可以包括:用于接收用户设备发送的下单操作请求的接口,用于接收用户设备发送的搜索请求,或者用户设备发送的用于参与促销活动的请求等。在实际应用中,服务器上当前所运行的一种业务接口可以由一个进程承载,一个进程可以包括多个线程,其中,可以在服务器上建立多个虚拟机,一个虚拟机分配的计算资源至少包括一个线程。具体的,可以由多个虚拟机同时承担一个业务接口的请求的接收工作,即由众多用户设备向服务器发送的海量请求(指向同一个业务接口的请求很多,可以称为海量请求),由对应业务接口的键值的多个虚拟机进行并行处理,其中,所述键值用于标识当前所运行的业务接口的业务级别。其中,业务接口下的业务级别可以按照具体的业务维度进行划分,例如:会员维度(如会员id),商品维度(如商品编码)。本发明实施例提供一种访问量的控制方法,如图2所示,包括:s1、获取当前所运行的业务接口的键值,并读取指向所述业务接口的并发请求的数量.其中,所述键值用于标识当前所运行的业务接口的业务级别。对应所述键值的虚拟机用于处理指向所述业务接口的请求。当前承担的请求数量可以理解为对应所述键值的所有虚拟机承担的请求的总数量。流控阀值可以理解为单台虚拟机的流控阀值。例如:可以采用jvm(javavirtualmachine,java虚拟机)进行分散缓存,多个jvm的缓存共同管理整个业务集群的流量控制,相对于分布式缓存系统的流控方式,jvm分散缓存的流控方式,具有性能高、响应快、对服务集群压力小的特点。由于单台jvm的流控阀值为1,例如:针对服务集群数特大而允许访问请求数极较小的分布式集群部署的场景中,jvm集群数为100,单台jvm流控阀值为1,那么整个jvm集群的允许并发数将达到100。其中,jvm集群可以理解为运行在服务器上的虚拟机的集合。s2、根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点。其中,判定所述一个业务接口是否作为热点,可以检测单位时间指向所述业务接口的请求是否达到流控数值,若是则判定该业务接口为热点。当判定所述一个业务接口作为有效的热点时,建立对应所述一个业务接口的键值的计时器。当所述计时器超时时,判定所述一个业务接口转换为非有效的热点。在本实施例中,当一个业务接口作为有效的热点时,根据这一个业务接口的键值分配缓存。当一个业务接口由有效的热点转换为非有效的热点时,删除针对这一个业务接口的键值所分配的缓存。在本实施例中,所述缓存可以是预先分配给jvm的,并由jvm在用于存储指向业务接口的请求,本实施例中的流控过程所针对的请求即为存储在缓存内的请求。s3、若是,则根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分。若否,则可以采用常用的流量控制方案处理非热点的业务接口流控。在本实施例中,所述根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点,包括:在单位时间t内(t可配置)内检测指向所述业务接口的并发请求的数量,是否达到预设门限。若是则判定所述键值对应的业务为热点。s4、根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。在本实施例中,通过对应所述业务接口的热点通过率来拦截大量的高并发请求(即第一层流控),再通过热点算法的请求将继续第二层流控,比如:当前正在执行的业务数是否大于等于预设的阀值,所大于等于则执行流量控制。其中,针对热点的用于流控判定的阀值与非热点可以相互独立配置,即通过热点的划分,使得高并发业务和非高并发业务的流控解耦,缓减并发业务的流控影响非高并发业务的情况。并且通过随机数值来突破单个最小流控阀值为1的限制,从而使得jvm集群在单位时间内采用更小的集群允许并发数,使得集群允许并发数不再受到单个jvm的可控的最小力度的限制,实现更灵活的流控效果。本发明实施例提供的针对分布式系统的流量控制方法,通过jvm技术来实现分布式集群的流控效果,相对于分布式缓存系统分布式缓存系统的流控方式,采用jvm集群进行流控,通过承载jvm集群的设备执行流控过程,并行处理的请求由承载jvm集群的设备集中处理,减少了系统内的交互过程,从而减少对于业务系统内部的交互接口的依赖,因此受到设备本身接口阻塞或者宕机等问题的影响较小,从而减少高并发业务和非高并发业务同时存在的业务场景中,缓减非高并发业务的受影响的问题。在本实施例中,所述根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制,包括:根据所述对应所述业务接口的热点通过率和当前读取到的随机数,确定所述业务接口的流控阀值。针对未被拦截的指向所述业务接口的并发请求,根据所述流控阀值检测是否对所述业务接口执行流量控制。在本实施例中,本方案中所提及的流控策略,具体可以采取两种模式:一种是,对应所述键值的各个虚拟机的流控阀值等于1,或者,对应所述键值的各个虚拟机的流控阀值等于一个正整数,比如:针对流控阀值为大于等于1的正整数配置(即业务集群处理能力>=jvm集群数),举例来说:第一种模式可以采用常用的响应模式,即根据单台jvm的当前业务并发数与流控阀值的比较来判断请求处理或被流控。例如:可配流控阀值=1,当请求时判断jvm当前累计业务并发数是否达到流控阀值:若未达到流控阀值则该请求可处理,同时增加累计业务并发数,在业务处理结束后释放累计值(累计业务并发数—操作)。若达到流控阀值则该请求被流控。另一种是,对应所述键值的各个虚拟机的流控阀值大于0且小于1,比如:以及针对流控率为0-1任意值的配置(即业务集群处理能力<jvm集群数)。例如:根据对应所述键值的虚拟机的数量和对应所述键值的各个虚拟机的流控阀值,确定所述业务接口的拦截数量。按照所述拦截数量,拦截指向所述业务接口的请求。举例来说:在实际使用场景中,对于jvm集群来说,会出现所允许的请求并发数可能为50或者更小的情况,因此还提供一种单台jvm可控的最小力度小于1的方案,采用随机率+滑窗模式双层流程来处理。即可以先通过java随机函数产生的随机值与可配流控率来做比较,例如:如图3所示的,假设jvm集群接收到总共100个请求,通过java随机函数针对100个请求分别生成随机值,所生成的随机值在大于0且小于1,其中所采用的java随机函数生成的随机值,在理论统计上均匀分布在0至1之间。若可配流控率为0.8,则随机值在0至0.2之间的请求可以被通过,随机值在0.2至1之间的请求被拦截,则理论上100个请求会被拦截80个,其它20个请求将会通过第一层流控,通过第一层流控的请求将进行第二次滑窗式流控:单元时间内允许的最大业务并发数,例如:jvm集群的tps(transactionspersecond,系统吞吐量-是网络协议层的指标,指一秒内成功完成的事务数)能力为10,jvm集群数为100,那么单台jvm处理能力要求为0.1,实际应用可以换算成单位时长内的单台jvm允许的请求数(通过乘以单位时长,换算成整数),比如:要求10s内单台jvm允许的请求数=1。从而在大量并发场景下对第一层未拦截到的请求做进一步流控。进一步的,还包括:当一个业务接口作为有效的热点时,根据这一个业务接口的键值分配缓存,所述缓存用于存储指向这一个业务接口的并发请求。当一个业务接口由有效的热点转换为非有效的热点时,删除针对这一个业务接口的键值所分配的缓存。其中,当判定所述一个业务接口作为有效的热点时,建立对应所述一个业务接口的键值的计时器。当所述计时器超时时,判定所述一个业务接口转换为非有效的热点。本实施例中的热点通过率可以通过单位时间t内(t可配置)的业务通过数及流控数的比例来动态计算,在当前t失效时会将当前t内得到的通过率作为下一个单位时间t的热点通过率来流控,从而实现随时间的推移动态更新热点通过率,例如,还包括了:获取为热点的业务接口的有效时长,并将所述有效时长分割为至少2个时间节点。其中,若超过所述有效时长,则业务接口失效为非热点。例如:计时器的有效时长为10分钟,平均分割出20个时间节点,每个时间节点为30秒。根据当前的时间节点内的请求的通过数和流控数的比例,确定下一时间节点的热点通过率。本发明实施例还提供一种如图4所示的访问量的控制装置,包括:读取模块,用于获取当前所运行的业务接口的键值,并读取指向所述业务接口的并发请求的数量,所述键值用于标识当前所运行的业务接口的业务级别;热点管理模块,用于根据所述指向所述业务接口的并发请求的数量,检测所述键值对应的业务接口是否为热点;第一层流控模块,用于根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分;第二层流控模块,用于根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。其中,所述热点管理模块,具体用于在单位时间内检测指向所述业务接口的并发请求的数量,是否达到预设门限;若是则判定所述键值对应的业务为热点。所述第二层流控模块,具体用于根据所述对应所述业务接口的热点通过率和当前读取到的随机数,确定所述业务接口的流控阀值;针对未被拦截的指向所述业务接口的并发请求,根据所述流控阀值检测是否对所述业务接口执行流量控制。进一步的,如图5所示,还包括:通过率调整模块,用于获取为热点的业务接口的有效时长,并将所述有效时长分割为至少2个时间节点,其中,若超过所述有效时长,则业务接口失效为非热点;并根据当前的时间节点内的并发请求的通过数和流控数的比例,确定下一时间节点的热点通过率。其中,当一个业务接口作为有效的热点时,根据这一个业务接口的键值分配缓存,所述缓存用于存储指向这一个业务接口的并发请求;当一个业务接口由有效的热点转换为非有效的热点时,删除针对这一个业务接口的键值所分配的缓存。具体的,当判定所述一个业务接口作为有效的热点时,建立对应所述一个业务接口的键值的计时器;当所述计时器超时时,判定所述一个业务接口转换为非有效的热点。本发明实施例提供的访问量的控制装置,根据对应所述业务接口的热点通过率,拦截指向所述业务接口的并发请求中的一部分;再根据所述对应所述业务接口的热点通过率,检测是否对所述业务接口执行流量控制。通过对应所述业务接口的热点通过率来拦截大量的高并发请求(即第一层流控),再通过热点算法的请求将继续第二层流控,使得高并发业务和非高并发业务的流控解耦,缓减并发业务的流控影响非高并发业务的情况。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1