并发数的控制方法与流程

文档序号:36873109发布日期:2024-02-02 20:52阅读:18来源:国知局
并发数的控制方法与流程

本技术涉及并发数控制领域,具体而言,涉及一种并发数的控制方法。


背景技术:

1、现有的并发数控制机制如下:

2、1)多个待控制实例执行同一种服务,多个待控制实例借助redis组件的redis计数器进行并发控制,在待控制实例接收到同一种类型的服务请求时,redis组件对redis计数器+1,待控制实例执行完这一类型的服务时,redis组件对redis计数器-1,从而实现了对同一种类型的服务的并发数的控制,多个待控制实例之间通过redis组件实现了对同一种类型的服务并发数的同一控制,此方法可以实现对同一类型的服务的并发数的统一控制,并发数控制精度高,但是此方法依赖于redis等第三方组件实现,redis组件是一款第三方分布式缓存组件,需分配独立的资源进行部署,运维复杂,成本高,且redis集群容易发生故障,比如因脑裂不可用时,并发数控制失效,并发数控制可靠性低下。

3、2)多个待控制实例执行同一种服务,采用分开控制的方式,同一服务在每个待控制实例的最大并发数=同一服务的最大并发数/待控制实例个数,即将同一服务的最大并发数平均分配到每个待控制实例,各个待控制实例自行控制自己的并发数,这种方法在待控制实例间负载不均衡时,很可能发生某些待控制实例空闲,某些待控制实例已进行并发数限制的问题,即未达到同一服务的最大允许并发数,但部分待控制实例已进行并发数限制,此方法无需第三方分布式缓存组件,避免了并发数控制失效的发生,并发数控制可靠性高,但是此方法无法实现对同一类型的服务的并发数的统一控制,并发数控制精度低下。

4、综上所述,现有技术中的并发数控制方法存在的问题如下:

5、无法兼顾并发数控制可靠性和并发数控制精度。


技术实现思路

1、本技术的主要目的在于提供一种并发数的控制方法,以至少解决现有技术中的并发数控制方法无法兼顾并发数控制可靠性和并发数控制精度的问题。

2、为了实现上述目的,根据本技术的一个方面,提供了一种并发数控制方法,第一服务器配置有多个待控制实例,一个所述待控制实例用于执行至少一种类型的服务,第二服务器配置有多个控制实例,所述第一服务器与多个客户端通信连接,所述第一服务器与所述第二服务器通信连接,所述方法应用于所述第一服务器,所述方法包括:在所述第一服务器配置的目标待控制实例接收到来自目标客户端的目标报文的情况下,所述第一服务器配置的所述目标待控制实例根据所述目标报文,确定目标控制实例的ip地址,所述目标待控制实例为多个所述待控制实例中的任意一个,所述目标客户端为多个所述客户端中的任意一个,所述目标报文为表征请求执行目标类型的服务的报文,所述目标类型为多种所述类型中的任意一种,所述第二服务器配置的一个所述控制实例具有一个ip地址,所述目标控制实例为多个所述控制实例中的一个,且所述目标控制实例与所述目标类型的服务对应,一个所述控制实例用于确定当前时刻下一种所述类型的服务的并发数是否小于对应的预设并发数,一种所述类型的服务对应一个所述预设并发数;所述第一服务器配置的所述目标待控制实例根据所述第二服务器配置的所述目标控制实例的ip地址向所述第二服务器配置的所述目标控制实例发送请求信息,所述请求信息表征请求确定当前时刻下所述目标类型的服务的并发数是否小于对应的所述预设并发数;在所述第一服务器配置的所述目标待控制实例接收到来自所述第二服务器配置的所述目标控制实例的第一反馈信息的情况下,所述第一服务器配置的所述目标待控制实例向所述目标客户端发送第二反馈信息,且执行所述目标类型的服务,所述第一反馈信息表示所述当前时刻下所述目标类型的服务的并发数小于对应的所述预设并发数,所述第二反馈信息表征允许执行所述目标类型的服务。

3、可选地,所述第一服务器配置的所述目标待控制实例根据所述目标报文,确定目标控制实例的ip地址,包括:所述第一服务器配置的所述目标待控制实例从所述目标报文的报文体获取所述目标类型;所述第一服务器配置的所述目标待控制实例根据所述目标类型,采用预设规则,确定目标并发数id,所述预设规则为以下任意之一:值映射、区间映射、条件映射、数值取余、hash取余、字符串截取、格式化字符串、自定义函数、规则级联,所述目标并发数id为多个并发数id中的一个,且所述目标并发数id与所述目标类型的服务对应,一个所述并发数id与一种所述类型的服务对应;所述第一服务器配置的所述目标待控制实例获取控制实例列表,并根据所述控制实例列表,确定控制实例数量,所述控制实例列表包含所述第二服务器配置的多个所述控制实例的ip地址,且所述控制实例列表中的ip地址按照预设顺序排列,所述控制实例数量为所述控制实例列表包含的ip地址的数量;所述第一服务器配置的所述目标待控制实例获取目标哈希值,所述目标哈希值为所述目标并发数id的哈希值;所述第一服务器配置的所述目标待控制实例根据公式b=h%a,确定目标余数,其中,h为所述目标哈希值,a为所述控制实例数量,b为所述目标余数;所述第一服务器配置的所述目标待控制实例确定所述控制实例列表中第所述目标余数个ip地址为所述第二服务器配置的所述目标控制实例的ip地址。

4、可选地,在所述第一服务器配置的所述目标待控制实例获取控制实例列表之前,所述方法还包括:所述第一服务器配置的所述目标待控制实例按照所述预设顺序将多个所述控制实例的ip地址注册到所述控制实例列表;所述第一服务器配置的所述目标待控制实例确定所述控制实例列表中各ip地址对应的所述控制实例是否发生故障;所述第一服务器配置的所述目标待控制实例在所述控制实例列表中至少一个ip地址对应的所述控制实例发生故障的情况下,将发生故障的所述控制实例的ip地址更新为对应的备用的所述控制实例的ip地址,所述控制实例列表中每个所述控制实例的ip地址对应一个备用的所述控制实例的ip地址。

5、可选地,在所述第一服务器配置的所述目标待控制实例根据所述第二服务器配置的所述目标控制实例的ip地址向所述第二服务器配置的所述目标控制实例发送请求信息之后,所述方法还包括:所述第一服务器配置的所述目标待控制实例在接收到来自所述第二服务器配置的所述目标控制实例的第三反馈信息的情况下,向所述目标客户端发送第四反馈信息,所述第三反馈信息表示所述当前时刻下所述目标类型的服务的并发数大于或者等于对应的所述预设并发数,所述第四反馈信息表征禁止执行所述目标类型的服务。

6、可选地,在所述第一服务器配置的所述目标待控制实例根据所述第二服务器配置的所述目标控制实例的ip地址向所述第二服务器配置的所述目标控制实例发送请求信息之后,所述方法还包括:所述第一服务器配置的所述目标待控制实例获取第一请求时间,所述第一请求时间为当前时刻与向所述第二服务器配置的所述目标控制实例发送所述请求信息的时刻的差值;在所述第一请求时间大于第一预设时间的情况下,所述第一服务器配置的所述目标待控制实例向所述目标客户端发送所述第二反馈信息,且执行所述目标类型的服务。

7、根据本技术的一个方面,提供了一种并发数控制方法,第一服务器配置有多个待控制实例,一个所述待控制实例用于执行至少一种类型的服务,第二服务器配置有多个控制实例,所述第一服务器与多个客户端通信连接,所述第一服务器与所述第二服务器通信连接,所述方法应用于所述第二服务器,所述方法包括:在所述第二服务器配置的目标控制实例接收到所述第一服务器配置的目标待控制实例发送的请求信息的情况下,所述第二服务器配置的所述目标控制实例获取目标信号量的值,所述目标待控制实例为多个所述待控制实例中的一个,所述第一服务器配置的所述目标待控制实例用于接收来自目标客户端的目标报文,所述目标客户端为多个所述客户端中的任意一个,所述目标报文为表征请求执行目标类型的服务的报文,所述目标类型为多种所述类型中的任意一种,所述目标控制实例为多个所述控制实例中的一个,且所述目标控制实例与所述目标类型的服务对应,所述请求信息表征请求确定当前时刻下所述目标类型的服务的并发数是否小于对应的预设并发数,一种所述类型的服务对应一个所述预设并发数,一个所述控制实例用于确定所述当前时刻下一种所述类型的服务的并发数是否小于对应的所述预设并发数,所述目标信号量为信号量池的多个信号量中的一个,且所述目标信号量与所述目标类型的服务对应,一个所述信号量与一种所述类型的服务对应,所述信号量的初始值等于对应的所述预设并发数;所述第二服务器配置的所述目标控制实例确定所述目标信号量的值是否大于0;所述第二服务器配置的所述目标控制实例在所述目标信号量的值大于0的情况下,将所述目标信号量的值减1,并向所述第一服务器配置的目标待控制实例发送第一反馈信息,所述第一反馈信息表示所述当前时刻下所述目标类型的服务的并发数小于对应的所述预设并发数。

8、可选地,在所述第二服务器配置的所述目标控制实例在所述目标信号量大于0的情况下,将所述目标信号量的值减1,并向所述第一服务器配置的目标待控制实例发送第一反馈信息之后,所述方法还包括:所述第二服务器配置的所述目标控制实例生成第一目标流水号,向所述第一服务器配置的所述目标待控制实例发送所述第一目标流水号,并将所述第一目标流水号加入第一队列,所述第一目标流水号为多个流水号中的一个,且所述第一目标流水号与目标请求组合对应,所述目标请求组合为多个请求组合中的一个,且所述目标请求组合包括所述目标控制实例和所述目标控制实例本次发送所述请求信息的时刻,一个所述请求组合包括一个所述控制实例和所述控制实例发送所述请求信息的时刻;在所述第二服务器配置的所述目标控制实例接收到来自所述第一服务器配置的所述目标待控制实例的第五反馈信息的情况下,所述第二服务器配置的所述目标控制实例将所述目标信号量的值加1,并将所述第一目标流水号加入第二队列,所述第五反馈信息包括所述第一目标流水号,且所述第五反馈信息表征所述目标客户端的所述目标类型的服务已执行完毕。

9、可选地,所述方法还包括:所述第二服务器配置的所述目标控制实例执行第一获取步骤,从所述第一队列中获取第二目标流水号,所述第二目标流水号为所述第一队列中的多个所述流水号中的一个;所述第二服务器配置的所述目标控制实例执行第二获取步骤,获取第二请求时间,所述第二请求时间为当前时刻与生成所述第二目标流水号的时刻之间的差值;所述第二服务器配置的所述目标控制实例执行第一确定步骤,确定所述第二请求时间是否大于第二预设时间;所述第二服务器配置的所述目标控制实例执行第一处理步骤,在所述第二请求时间大于所述第二预设时间的情况下,将所述目标信号量的值加1,删除所述第一队列中的所述第二目标流水号;所述第二服务器配置的所述目标控制实例重复执行所述第一获取步骤、所述第二获取步骤、所述第一确定步骤和所述第一处理步骤至少一次,直至完成所述第一队列中的所有的所述流水号的处理工作。

10、可选地,所述方法包括:所述第二服务器配置的所述目标控制实例执行第三获取步骤,从所述第二队列中获取第三目标流水号,所述第三目标流水号为所述第二队列中的多个所述流水号中的一个;所述第二服务器配置的所述目标控制实例执行第二确定步骤,从确定所述第一队列是否存在所述第三目标流水号;所述第二服务器配置的所述目标控制实例执行第二处理步骤,在所述第一队列中存在所述第三目标流水号的情况下,将所述第一队列中的所述第三目标流水号删除,且将所述第二队列中的所述第三目标流水号删除;所述第二服务器配置的所述目标控制实例重复执行所述第三获取步骤、所述第二确定步骤和所述二处理步骤至少一次,直至完成所述第二队列中的所有的所述流水号的处理工作。

11、可选地,在所述第二服务器配置的所述目标控制实例执行第二确定步骤,从确定所述第一队列是否存在所述第三目标流水号之后,所述方法包括:所述第二服务器配置的所述目标控制实例执行第三处理步骤,在所述第一队列中不存在所述第三目标流水号的情况下,将所述目标信号量的值减1,将所述第三目标流水号加入所述第一队列。

12、应用本技术的技术方案,相比于现有技术中采用第三方分布式缓存组件进行并发数控制的并发数控制方法,本技术采用控制实例进行并发数控制,无需第三方分布式缓存组件,避免了并发数控制失效的发生,保证了并发数控制的可靠性,相比于现有技术中将同一服务的最大并发数平均分配到每个待控制实例,各个待控制实例自行控制自己的并发数的并发数控制方法,本技术的各待控制实例均将请求确定同一类型的服务的并发数是否小于对应的预设并发数的请求信息发送至同一控制实例,即采用同一控制实例对同一类型的服务的并发数进行控制,在同一类型的服务的并发数小于对应的预设并发数,允许待控制实例执行这一类型的服务请求,从而实现了对同一类型的服务的并发数的统一控制,保证了并发数控制精度,解决了现有技术中的并发数控制方法无法兼顾并发数控制可靠性和并发数控制精度的问题。

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