CN111491015B - 预热任务处理方法及系统、代理服务器、服务中心 - Google Patents
预热任务处理方法及系统、代理服务器、服务中心 Download PDFInfo
- Publication number
- CN111491015B CN111491015B CN202010244965.0A CN202010244965A CN111491015B CN 111491015 B CN111491015 B CN 111491015B CN 202010244965 A CN202010244965 A CN 202010244965A CN 111491015 B CN111491015 B CN 111491015B
- Authority
- CN
- China
- Prior art keywords
- preheating
- task
- thread
- quota
- service center
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
Abstract
本公开实施例公开了一种预热任务处理方法及系统、代理服务器、服务中心。所述预热任务为从请求方向服务中心发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器进行处理,该方法包括:接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额;对每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;为被分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。解决了不同请求方预热任务全部放在一个队里中按顺序进行消费而导致有些请求方的预热任务无法被分配到线程而不能被及时处理的问题,提升了请求方的服务体验。
Description
技术领域
本公开实施例涉及计算机网络技术领域,尤其涉及一种预热任务处理方法及系统、代理服务器、服务中心。
背景技术
在内容分发网络(CDN)中,请求方首次调用服务提供方时,请求方的服务代理需要和大量的服务提供方建立网络连接。因此进行首次服务调用时花费的时间为建立网络连接的时间加上服务调用的时间。为了解决首次服务调用花费时间长的问题,业界常用的方法是在请求方启动过程中进行预热,以建立与服务提供方的网络连接,该方法可以解决首次交易花费时间过长的问题。
现有处理预热任务的方案为,来自不同请求方预热任务全部放在一个待处理的队列里面,进程按照顺序对预热任务进行消费。
在这种情况下,当队列中存在大量的预热任务且处理预热任务的线程数量已经达到系统的最大值时,则会导致这些预热任务无法分配到线程,使得这些预热任务不能被及时处理,进而造成不好的服务体验。
发明内容
本公开实施例的目的在于提供一种预热任务处理方法及系统、代理服务器、服务中心,解决了不同请求方预热任务全部放在一个队里中按顺序进行消费而导致有些请求方的预热任务无法被分配到线程而不能被及时处理的问题,提升请求方的服务体验。
根据本公开实施例的第一方面,提供了一种预热任务处理方法,所述预热任务为从请求方向服务中心发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器进行处理,所述方法执行在代理服务器端,包括:
接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额;
对每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;
为被分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。
根据本公开实施例的第二方面,提供了一种预热任务处理方法,所述预热任务为从请求方向服务中心发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器进行处理,所述方法执行在服务中心端,包括:
接收预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识;
根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的预热任务请求中;
获取与所述客户标识对应的预设的代理服务器列表,将所述预热任务发送给每一个所述列表中的代理服务器。
根据本公开实施例的第三方面,提供了一种代理服务器,所述代理服务器用于处理服务中心发送的预热任务,所述预热任务为从请求方向服务中心发起的预热任务,包括:
接收模块,用于接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额;
分类模块,用于对所述接收模块接收的每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;
分配模块,用于为所述分类模块分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。
根据本公开实施例的第四方面,提供了一种服务中心,所述服务中心用于将所述预热任务发送给多个代理服务器,所述预热任务为从请求方向服务中心发起的预热任务,包括:
接收模块,用于接收预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识;
加载模块,用于根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的所述接收模块接收的预热任务请求中;
发送模块,用于获取与所述客户标识对应的预设的代理服务器列表,将经过所述加载模块处理后的所述预热任务发送给每一个所述列表中的代理服务器。
根据本公开实施例的第五方面,提供了一种预热任务处理系统,包括本公开实施例第三方面提供的代理服务器和本公开实施例第四方面提供的服务中心,所述代理服务器与所述服务中心通信连接。
根据本公开实施例的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据本公开实施例第一方面和第二方面所述的预热任务处理方法。
根据本公开实施例提供的预热任务处理方法,所述预热任务为从请求方向服务中心发起的预热任务,该预热任务内包括有用于识别该预热任务的请求方的客户标识。服务中心根据客户标识获取存储的线程配额表,将与客户标识对应的线程配额加载到对应的预热任务上发送给多个处理该请求方预热任务的代理服务器上。代理服务器根据接收到的携带有客户标识以及线程配额的预热任务对其进行分类以使具有相同客户标识的预热任务分类到相同的预热任务队列中,最后根据与客户标识对应的线程配额为不同的任务队列中的预热任务分配线程来处理队列中的预热任务,上述处理预热任务的方法为以请求方为单位,为不同请求方设置不同的线程配额,并且将来自同一请求方的预热任务放入一个队列中,尽可能使得来自每个请求方的预热任务都能够分配到相应的线程来进行消费,进而可以解决现有技术中将来自所有请求方的预热任务放入一个队列中按顺序消费导致有些请求方的预热任务无法被分配到线程而不能被及时处理的问题,提升请求方的服务体验。
通过以下参照附图对本公开实施例的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本公开实施例的实施例,并且连同其说明一起用于解释本公开实施例的原理。
图1为可用于实现本公开实施例的系统结构方框图。
图2为本公开实施例的一种预热任务处理方法步骤流程图。
图3为本公开实施例的另一种预热任务处理方法步骤流程图。
图4为本公开实施例的代理服务器的结构方框图。
图5为本公开实施例的服务中心的结构方框图。
图6为本公开实施例的应用场景图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开实施例的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开实施例及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<实施环境和硬件配置>
图1是示出可以实现本公开实施例的预热任务处理方法的一种系统组成结构示意图,所述系统用于实现预热任务处理方法,所述预热任务为从请求方向服务中心(center)发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器(agent)进行处理。
如图1所示,本实施例的预热任务处理系统1000包括服务中心1100、代理服务器1200以及网络1300。
服务中心1100例如可以是刀片服务器、机架式服务器等,服务中心1100也可以是部署在云端的服务器集群,在此不做限定。
如图1所示,服务中心1100可以包括处理器1110、存储器1120、接口装置1130、通信装置1140、显示装置1150和输入装置1160。处理器1110用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1120例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括USB接口、串行接口等。通信装置1140例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏。输入装置1160例如可以包括触摸屏、键盘等。
本实施例中,服务中心1100可用于参与实现根据本公开任意实施例的预热任务处理方法。
应用于本公开实施例中,服务中心1100的存储器1120用于存储指令,所述指令用于控制所述处理器1110进行操作以支持实现根据本公开任意实施例的预热任务处理方法。技术人员可以根据本公开实施例所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本领域技术人员应当理解,尽管在图1中示出了服务中心1100的多个装置,但是,本公开实施例的服务器1100可以仅涉及其中的部分装置,例如,只涉及处理器1110和存储器1120。
如图1所示,代理服务器1200可以包括处理器1210、存储器1220、接口装置1230、通信装置1240、显示装置1250和输入装置1260。处理器1210用于执行计算机程序。该计算机程序可以采用比如x86、Arm、RISC、MIPS、SSE等架构的指令集编写。存储器1220例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括USB接口、串行接口等。通信装置1240例如能够进行有线或无线通信。显示装置1250例如是液晶显示屏。输入装置1260例如可以包括触摸屏、键盘等。
本实施例中,代理服务器1200可用于参与实现根据本公开任意实施例的预热任务处理方法。
应用于本公开实施例中,代理服务器1200的存储器1220用于存储指令,所述指令用于控制所述处理器1210进行操作以支持实现根据本公开任意实施例的预热任务处理方法。技术人员可以根据本公开实施例所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
本领域技术人员应当理解,尽管在图1中示出了代理服务器1200的多个装置,但是,本公开实施例的代理服务器1200可以仅涉及其中的部分装置,例如,只涉及处理器1210和存储器1220。
通信网络1300可以是无线网络也可以是有线网络,可以是局域网也可以是广域网。代理服务器1200可以通过通信网络1300与服务中心1100进行通信。
图1所示的系统1000仅是解释性的,并且决不是为了要限制本公开实施例、其应用或用途。例如,尽管图1仅示出一个服务中心1100和一个代理服务器1200,但不意味着限制各自的数量,系统1000中可以包含多个服务中心1100和/或多个代理服务器1200。
<方法实施例一>
在分布式系统中,请求方首次调用服务提供方时,请求方的服务代理需要和大量的服务提供方建立网络连接。因此进行首次服务调用时花费的时间为建立网络连接的时间加上服务调用的时间。为了解决首次服务调用花费时间长的问题,业界常用的方法是在请求方启动过程中进行预热,以建立与服务提供方的网络连接,该方法可以解决首次交易花费时间过长的问题,当请求方发送了大量的服务请求时,就会产生大量的预热任务被处理的需求,且该预热任务可以是来自多个不同的请求方。
现有处理预热任务的方案为服务中心将接收到的请求预热任务发送到代理服务器上,该代理服务器可以是部署在CDN网络节点中的代理服务器。代理服务器内包含有api进程、worker进程以及redis队列,api进程用于实现服务中心、worker进程以及redis队列相互通信,worker进程是工作进程,所有的业务逻辑都在该进程中进行,redis队列是一个用于存储预热任务的可持久化的数据库,当api进程接收到来自服务中心的预热任务据后,将所有的预热任务写入redis队列中,由worker进程按照顺序处理预热任务,这样带来的问题是所有预热任务都不加区分的写入redis队列,按照时间先后顺序来处理,会导致当处理预热任务的线程数量达到系统的最大值,在存留在该redis队列中的预热任务无法被分配到线程而不能被及时处理,而这些预热任务很有可能是来自优先级较高的请求方,即这些预热任务很有可能是需要进行及时快速处理的预热任务,从而可能引起客户体验下降、整体效能降低。
本公开实施例提供的方法通过对不同请求方的预热任务设置不同的线程配额,当服务方接收到请求方发送的预热任务时,根据请求方的客户标记将预热任务分到不同的任务队列中,根据客户标记对应的任务队列的线程配额确定线程数量对相应任务队列中的预热任务进行处理,使得每个请求方都能够被分配到线程处理其发送的预热任务,可以避免预热任务大量堆积无法及时处理的问题,同时可以避免资源分配失衡,提升请求方的服务体验。
在本公开的一个实施例中,预热任务处理方法可以是由服务中心实施,服务中心可以与多个代理服务器通信连接,服务中心将接收的不同请求方的预热任务发送到与该请求方对应的代理服务器上,当请求方请求预热任务时,一个有益的方案是另该请求方对应的每一个代理服务器均处理该预热任务。这样当服务请求被该请求方的不同地域的其它客户请求时,可以从任何一个代理服务器中直接获取该服务请求的内容不需要再进行任务预热。
参考图2,在本公开一个实施例中,预热任务处理方法可以是由服务中心实施,该服务中心例如可以是如图1所示的服务中心1100。
在步骤202中,接收预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识。具体来说,服务中心可以处理预热任务请求,也可以处理其他的任务请求。当服务中心接收到任务请求时,需要对任务请求进行解析,判断接收任务的类型,根据相应的处理步骤对接收的任务进行处理。其中,当服务中心解析到接收的任务是预热任务请求时,该预热任务请求可以是来自一个请求方的一个任务请求、一个请求方的多个任务请求或者多个请求方的多个任务请求,该预热任务请求中携带客户标识,该客户标识用来识别预热任务的来源,区分不同请求方的预热任务,便于后续对不同请求方的预热任务进行分类处理。
在一个实施例中,所述客户标识可以是能够标识请求方的任何信息,例如可以是请求方的IP地址、域名或存取控制地址等。对于能够标识客户的信息形式本公开不限制,其作用就是为了使服务中心端能够识别预热请求的请求方。当服务中心端获取了该预热任务后,读取预热任务中包含的客户标识便可获知该预热任务的请求方所属,用于后续为不同的请求方的预热任务加载对应的线程配额。
在步骤204中,根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的预热任务请求中。具体来说,服务中心内存储有记录客户-线程配额对的线程配额表,该线程配额表是由例如一分布式应用程序协调服务设置并保存,分布式应用程序协调服务(Zookeeper)是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等,服务中心通过与分布式应用程序协调服务进行交互获取所述线程配额表,获取后存储在服务中心的存储器中,在处理预热任务时,从存储器中读取该线程配额表,将对应的线程配额加载到对应的预热任务中,以使接收端(代理服务器端)接收到带有线程配额的预热任务,这样代理服务器不需要从其它地方读取线程配额,再根据该线程配额为接收的预热任务分配线程,节约了预热任务处理的时间,提高了预热任务处理的效率,进而提高了客户满意度。
可选的,在所述根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的预热任务请求中之后,所述方法还包括:
对所述预热任务请求的格式进行转换以使转换后的格式中包含与所述客户标识对应的线程配额。具体来说,格式转换就是将服务中心接收的预热任务的经过加载线程配额的过程转换成便于代理服务器接收的格式。
可选的,所述方法还包括响应于更新配额的通知,根据所述通知重新获取更新后的线程配额并保存的步骤。具体来说,线程配额可以是在分布式应用程序协调服务中设置并存储,线程配额表会根据客户预热任务的数量、客户的消费能力、预热任务的重要程度等情况的变化而进行相应的调整。当分布式应用程序协调服务中线程配额表发生变化后,会给服务中心发送更新配额的通知,服务中心根据通知重新获取分布式应用程序协调服务更新后的线程配额并保存到存储器中以供后续处理预热任务使用。以使服务中心在线程配额表未更新时只需要从可以是分布式应用程序协调服务中获取一次线程配额表,不需要每次接收到预热任务时获取,节约了预热任务处理的时间。
可选的,所述线程配额根据请求方的优先等级来设置,以使优先等级更高的请求方被分配更多的线程配额。
在一个实施例中,线程配额可以是在分布式应用程序协调服务上设置并得到记录客户-线程配额对的线程配额表中的线程配额,然后服务中心从分布式应用程序协调服务交互获取该线程配额表。请求方的优先等级可以根据不同请求方预热任务的数量来设置、可以根据不同请求方预热任务的重要程度来设置、还可以根据不同请求方的消费能力等来设置,以使预热任务多、预热任务重要或者消费能力高等的请求方分配到更多的线程。线程配额的设置依据有多种,在此不做限定。例如,请求方A的预热任务数量最多,请求方B预热任务数量小于A,请求方C预热任务数量小于B,则可以设置请求方的优先级等级为:请求方A>请求方B>请求方C,在有10个数量的线程情况下,可以为请求方A设置5个数量的线程配额,可以为请求方B设置3个数量的线程配额,可以为请求方C设置2个数量的线程配额。以使预热任务多的请求方A分配到最多的线程处理其请求的预热任务,避免优先级高的客户请求的预热任务分配不到多的线程,导致大量堆积得不到及时的处理,造成了不好的客户体验。
在步骤206中,获取与所述客户标识对应的预设的代理服务器列表,将所述预热任务发送给每一个所述列表中的代理服务器。具体来说,服务中心对接收到的预热任务进行处理后,需要将预热任务发送给代理服务器进行处理,对于同一客户的预热任务可以是设置多个代理服务器来处理,所以在发送预热任务之前需要获取与客户标识对应的代理服务器列表以使服务中心有目的的对预热任务进行发送,使代理服务器接收到对应的预热任务。该代理服务器列表可以是从分布式应用程序协调服务的存储器中获取的还可以是从其它存储器中获取的,服务中心获取了代理服务器列表后存储在存储器中,当服务中心需要发送预热任务给代理服务器时,从服务中心的存储器中读取该代理服务器列表。其中,当代理服务器列表更新时,根据相应的更新通知去对应的地方获取更新后的代理服务器列表以供后续使用。
在本公开的一个实施例中,预热任务处理方法可以是由服务中心实施,服务中心可以与多个代理服务器通信连接。当服务中心接收携带有请求方客户标识的预热任务时,读取存储器中存储的客户-线程配额对的线程配额表,将与客户标识对应的线程配额加载到对应的预热任务请求中,最后根据预设的代理服务器列表,将对应的预热任务发送给代理服务器列表中记录的每一个代理服务器,以使与预热任务对应的每一个代理服务器均可以接收到对应的预热任务以及与该预热任务对应的线程配额,便于与预热任务对应的每一个代理服务器根据对应的线程配额分配线程处理预热任务,提高预热任务的处理速率。
<方法实施例二>
服务中心接收到请求方的预热任务后,对所述预热任务进行了对应的处理,然后将预热任务发送给多个代理服务器,由多个代理服务器对与之对应的所述预热任务进行处理。
在本公开一个实施例中,预热任务处理方法可以是由代理服务器实施,多个代理服务器可以与一个服务中心通信连接,该多个代理服务器可以是用来处理同一请求方预热任务的代理服务器。每一个代理服务器根据对应的线程配额为不同队列中的预热任务分配处理该预热任务的线程。这样的一个有益的方案是使接收到的预热任务均能够被分配到线程处理,另一个有益方案是当服务请求被该请求方的不同地域的其它客户请求时,可以从任何一个代理服务器中直接获取该服务请求的内容不需要再进行任务预热。具体预热任务处理方法如下:
参考图3,在本公开一个实施例中,预热任务处理方法可以是由代理服务器实施,该代理服务器例如可以是如图1所示的代理服务器1200。
在步骤302中,接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额。具体来说,接收到的预热任务可以来自一个请求方或者多个请求方,预热任务可以是一个请求方的一个也可以是一个请求方的多个或者多个请求方的多个。接收到的预热任务是经过服务中心处理后预热任务,该预热任务上携带有客户标识以及与客户标识对应的线程配额,便于后续按照客户标识对预热任务进行分类。预热任务由对应的一个或者多个代理服务器接收,当与某一客户标识对应的预热任务设置有多个代理服务器处理时,多个代理服务器可以同时接收并处理该预热任务。
举例来说,服务中心接收了5个预热任务,包括客户A的2个预热任务、客户B的1个预热任务和客户C的2个预热任务,服务中心将5个预热任务发送给代理服务器,代理服务器在接收时就会按照这5个预热任务携带的客户标识接收到对应的代理服务器上。例如,序号为1-5的代理服务器是用来处理客户A的预热任务,则序号为1-5的代理服务器接收客户A的2个预热任务并处理;序号为6-7的代理服务器是用来处理客户B的预热任务,则序号为6-7的代理服务器接收客户B的1个预热任务并处理;序号为10-20的代理服务器是用来处理客户C的预热任务,则序号为10-20的代理服务器接收客户C的2个预热任务并处理。
在步骤304中,对每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列。具体来说,把从不同请求方接收的预热任务请求,按照客户标识进行分类,分类操作由api进程执行,具体过程是由api进程将预热任务按照客户标识分类写入redis队列中对应客户标识的队列里,使得redis队列被分类为多组不同的任务队列,每一个任务队列中包含一个相同请求方的预热任务,其中每一个任务队列中包含至少一个预热任务。
例如,请求方发送了十个预热任务,其中第一个、第五个、第七个为客户A的预热任务,第二个、第三个、第八个为客户B的预热任务,第四个、第六个、第九个、第十个为客户C的预热任务,则可以将第一个、第五个、第七个预热任务分类到redis队列的队列A中,第一个、第五个、第七个预热任务分类到redis队列的队列B中,第四个、第六个、第九个、第十个预热任务分类到redis队列的队列C中。
在一个实施例中,分类操作可以是服务方接收到一个预热任务就执行一次分类;还可以是批量接收后进行批量分类操作。
在步骤306中,为被分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。具体来说,对接收到的预热任务由api进程进行分类后得到了多个预热任务队列,预热任务请求中包括有对应的线程配额,由worker进程按照线程配额给不同的预热任务队列分配与线程配额相同数量的线程处理队列中的预热任务。线程是随机分配的,只要有空闲的线程,就可以按需分配到队列中去处理预热任务。
给对应的队列分配好线程以后,线程就开始处理预热任务,线程处理预热任务的方式包括:
为被分类至相同预热任务队列中的预热任务根据请求的时间先后顺序排队,依序为所述预热任务分配线程。具体来说,就是线程按照预热任务在所属队列中的排队顺序来处理预热任务,这其中还包括两种情况,一种情况可以是预热任务的数量小于等于线程配额,即分配的线程刚好可以一次性把该任务队列中的预热任务一次性处理完,按照预热任务的排队顺序依序为预热任务分配线程处理。还有一种情况可以是预热任务的数量大于线程配额的情况,当预热任务队列中预热任务数量大于线程配额时,首先按照排队顺序依序读取与线程配额相同数量的预热任务进行处理,当存在预热任务处理完成时,就会有线程空闲,再按照排队顺序为该线程依序读取该队列中剩余的预热任务进行处理。
举例来说,队列A中接收了5个预热任务,队列A的线程配额为8,则在线程中随机调用5个空闲的线程来处理A队列中的预热任务,可以快速的将A客户的预热任务处理完。
在另一个例子中,队列A中接收了5个预热任务,队列A的线程配额为3,则在线程中随机调用3个空闲的线程来处理A队列中的预热任务,先从队列A中读取排队前三的预热任务进行处理,当这三个预热任务中有一个被处理完成的,就空闲出一个线程,再为该线程读取该队列中第四个预热任务进行处理,以此类推,直到队列A中的预热任务全部处理完。
在一个实施例中,如图6所示为本公开提供的一种预热任务处理应用场景图,服务中心接收到预热任务请求,从可以是分布式应用程序协调服务中获取线程配额,该预热任务请求可以来自多个请求方,例如来自A、B、C三个请求方,且请求方A的预热任务可以是由代理服务器1、2、3处理,请求方B的预热任务可以是由代理服务器2、3处理,请求方C的预热任务可以是由代理服务器3处理。则服务中心将接收到的预热任务按照客户标识分别发送到代理服务器1、2、3上,每一个代理服务器内均包含有api进程、worker进程以及redis队列,当api进程接收到来自服务中心的预热任务数据后,将所有的预热任务分类写入redis队列中形成队列A、队列B和队列C或者其它组合,worker进程按照预热任务在队列中的排列顺序根据与客户标识对应的线程配额给队列中的预热任务分配线程处理预热任务,例如,给队列A分配10个线程、队列B分配8个线程、给队列C分配5个线程,解决了预热任务无法被分配到线程导致积压不能及时处理的问题,同时避免资源分配失衡,提升了优先级高的请求方的服务体验。
在本公开的一个实施例中,预热任务处理方法可以是由代理服务器实施。当与预热任务对应的每一个代理服务器接收到携带有请求方客户标识以及与客户标识对应的线程配额的预热任务时,根据客户标识对每一个预热任务进行分类,以使api进程将具有相同客户标识的预热任务被分类至相同的预热任务队列,一个代理服务器上可以包括一个队列,也可以包括多个队列。最后由worker进程按照线程配额给队列分配与线程配额相同数量的线程处理队列中的预热任务,解决了预热任务无法被分配到线程导致不能及时处理的问题,提升了预热任务处理的速率。
<装置实施例一>
如图4所示,在本公开再一个实施例中,提供了一种服务中心400,所述服务中心400用于将所述预热任务发送给多个代理服务器400,所述预热任务为从请求方向服务中心400发起的预热任务,如图4所示,该图为本公开实施例的服务中心400的结构方框图,服务中心400包括:接收模块402、加载模块404以及发送模块406。
该接收模块402,用于接收预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识;
该加载模块404,用于根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的所述接收模块402接收的预热任务请求中;
该发送模块406,用于获取与所述客户标识对应的预设的代理服务器列表,将经过所述加载模块404处理后的所述预热任务发送给每一个所述列表中的代理服务器。
所述服务中心400还包括转换模块408、获取模块410以及存储模块412,该转换模块408用于对所述预热任务请求的格式进行转换以使转换后的格式中包含与所述客户标识对应的线程配额。
该获取模块410,用于响应于更新配额的通知,根据所述通知重新获取更新后的线程配额并保存。
该存储模块412,用于存储线程配额表。最后,根据本公开实施例的又一个实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序在被处理器执行时实现根据本公开实施例任意实施例所述的预热任务处理方法。
<装置实施例二>
如图5所示,在本公开再一个实施例中,提供了一种代理服务器500,所述代理服务器500用于处理服务中心500发送的预热任务,所述预热任务为从请求方向服务中心500发起的预热任务,如图5所示,该图为本公开实施例的代理服务器500的结构方框图,代理服务器500包括:接收模块502、分类模块504以及分配模块506。
该接收模块502,用于接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额;
该分类模块504,用于对所述接收模块502接收的每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;
该分配模块506,用于为所述分类模块504分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。
该代理服务器500还包括处理模块508,用于按照预热任务队列中的预热任务请求的时间先后顺序,依序处理预热任务。其中,当预热任务队列中预热任务数量大于所述线程配额时,对在预热任务队列中时间顺序较早的与线程配额数量相等的预热任务分配线程以使处理模块508处理所述预热任务;以及
当存在线程空闲时,对预热任务队列中剩余的预热任务中时间顺序较早的预热任务分配线程以使处理模块508处理所述预热任务。
<计算机可读存储介质>
本公开实施例可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开实施例的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开实施例操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开实施例的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开实施例的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开实施例的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本公开实施例的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本公开实施例的范围由所附权利要求来限定。
Claims (11)
1.一种预热任务处理方法,所述预热任务为从请求方向服务中心发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器进行处理,所述方法执行在代理服务器端,包括:
接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额;
对每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;
为被分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程,
其中,所述线程配额基于从所述服务中心读取的线程配额表获得。
2.根据权利要求1所述的方法,其中,所述方法还包括:
为被分类至相同预热任务队列中的预热任务根据请求的时间先后顺序排队,依序为所述预热任务分配线程。
3.一种预热任务处理方法,所述预热任务为从请求方向服务中心发起的预热任务,所述服务中心用于将所述预热任务发送给多个代理服务器端进行处理,所述方法执行在服务中心端,包括:
接收请求方发送的预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识;
根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的预热任务请求中;
获取与所述客户标识对应的预设的代理服务器列表,将所述预热任务发送给每一个所述列表中的代理服务器,
其中,所述线程配额基于从所述服务中心读取的线程配额表获得。
4.根据权利要求3所述的方法,其中,在所述根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的预热任务请求中之后,所述方法还包括:
对所述预热任务请求的格式进行转换以使转换后的格式中包含与所述客户标识对应的线程配额。
5.根据权利要求3所述的方法,其中,所述方法还包括:
响应于更新线程配额的通知,根据所述通知重新获取更新后的线程配额并保存。
6.根据权利要求1或3任一项所述的方法,所述客户标识包括:
请求方的IP地址、域名或存取控制地址。
7.根据权利要求3所述的方法,其中,所述线程配额根据请求方的优先等级来设置,以使优先等级更高的请求方被分配更多的线程配额。
8.一种代理服务器,所述代理服务器用于处理服务中心发送的预热任务,所述预热任务为从请求方向服务中心发起的预热任务,包括:
接收模块,用于接收预热任务请求,所述预热任务请求包括用于识别所述预热任务的请求方的客户标识以及与所述客户标识对应的线程配额,其中,所述线程配额基于从所述服务中心读取的线程配额表获得;
分类模块,用于对所述接收模块接收的每一个所述预热任务进行分类处理,以使具有相同客户标识的预热任务被分类至相同的预热任务队列;
分配模块,用于为所述分类模块分类至相同预热任务队列中的预热任务分配与所述客户标识相对应的线程配额的线程。
9.一种服务中心,所述服务中心用于将预热任务发送给多个代理服务器,所述预热任务为从请求方向服务中心发起的预热任务,包括:
接收模块,用于接收预热任务请求,所述预热任务请求中包括用于识别所述预热任务的请求方的客户标识;
加载模块,用于根据所述客户标识获取预设的与所述客户标识对应的线程配额并加载到对应的所述接收模块接收的预热任务请求中,其中,所述线程配额基于从所述服务中心读取的线程配额表获得;
发送模块,用于获取与所述客户标识对应的预设的代理服务器列表,将经过所述加载模块处理后的所述预热任务发送给每一个所述列表中的代理服务器。
10.一种预热任务处理系统,包括权利要求8的代理服务器和权利要求9的服务中心,所述代理服务器与所述服务中心通信连接。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1至7中任一权利要求所述的预热任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244965.0A CN111491015B (zh) | 2020-03-31 | 2020-03-31 | 预热任务处理方法及系统、代理服务器、服务中心 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010244965.0A CN111491015B (zh) | 2020-03-31 | 2020-03-31 | 预热任务处理方法及系统、代理服务器、服务中心 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111491015A CN111491015A (zh) | 2020-08-04 |
CN111491015B true CN111491015B (zh) | 2022-11-11 |
Family
ID=71812526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010244965.0A Active CN111491015B (zh) | 2020-03-31 | 2020-03-31 | 预热任务处理方法及系统、代理服务器、服务中心 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111491015B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099921A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 基于JVM的Java应用系统预热方法及系统 |
CN114466079B (zh) * | 2022-02-09 | 2024-02-06 | 星环信息科技(上海)股份有限公司 | 请求处理方法、装置、代理服务器及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
CN101009655A (zh) * | 2007-02-05 | 2007-08-01 | 华为技术有限公司 | 流量调度方法及装置 |
CN105897837A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 内容分发任务的提交方法及系统 |
CN107239328A (zh) * | 2016-03-29 | 2017-10-10 | 上海普兰金融服务有限公司 | 任务分配方法及装置 |
CN107302489A (zh) * | 2017-06-02 | 2017-10-27 | 北京潘达互娱科技有限公司 | 消息展示方法及装置 |
CN108733476A (zh) * | 2017-04-20 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种执行多任务的方法和装置 |
CN109388504A (zh) * | 2018-09-26 | 2019-02-26 | 平安科技(深圳)有限公司 | 消息化对接处理方法、装置、计算机设备及存储介质 |
CN109788083A (zh) * | 2019-03-22 | 2019-05-21 | 网易(杭州)网络有限公司 | 应用下载方法、装置、存储介质及电子装置 |
CN110413395A (zh) * | 2019-07-30 | 2019-11-05 | 中国工商银行股份有限公司 | 服务调用预热方法、装置、设备及存储介质 |
CN110716813A (zh) * | 2019-09-17 | 2020-01-21 | 贝壳技术有限公司 | 数据流处理方法、装置、可读存储介质及处理器 |
CN110851288A (zh) * | 2019-10-17 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 消息处理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020954A (zh) * | 2016-05-13 | 2016-10-12 | 深圳市永兴元科技有限公司 | 线程管理方法及装置 |
CN107766129B (zh) * | 2016-08-17 | 2021-04-16 | 北京金山云网络技术有限公司 | 一种任务处理方法、装置及系统 |
CN110609743A (zh) * | 2018-06-15 | 2019-12-24 | 伊姆西Ip控股有限责任公司 | 用于配置资源的方法、电子设备和计算机程序产品 |
-
2020
- 2020-03-31 CN CN202010244965.0A patent/CN111491015B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1606301A (zh) * | 2004-07-09 | 2005-04-13 | 清华大学 | 一种共享资源访问的调度控制方法及装置 |
CN101009655A (zh) * | 2007-02-05 | 2007-08-01 | 华为技术有限公司 | 流量调度方法及装置 |
CN105897837A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 内容分发任务的提交方法及系统 |
CN107239328A (zh) * | 2016-03-29 | 2017-10-10 | 上海普兰金融服务有限公司 | 任务分配方法及装置 |
CN108733476A (zh) * | 2017-04-20 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种执行多任务的方法和装置 |
CN107302489A (zh) * | 2017-06-02 | 2017-10-27 | 北京潘达互娱科技有限公司 | 消息展示方法及装置 |
CN109388504A (zh) * | 2018-09-26 | 2019-02-26 | 平安科技(深圳)有限公司 | 消息化对接处理方法、装置、计算机设备及存储介质 |
CN109788083A (zh) * | 2019-03-22 | 2019-05-21 | 网易(杭州)网络有限公司 | 应用下载方法、装置、存储介质及电子装置 |
CN110413395A (zh) * | 2019-07-30 | 2019-11-05 | 中国工商银行股份有限公司 | 服务调用预热方法、装置、设备及存储介质 |
CN110716813A (zh) * | 2019-09-17 | 2020-01-21 | 贝壳技术有限公司 | 数据流处理方法、装置、可读存储介质及处理器 |
CN110851288A (zh) * | 2019-10-17 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 消息处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111491015A (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
CN112256423B (zh) | 分布式资源管理系统中的动态租户结构调整的系统、设备和过程 | |
US20170220564A1 (en) | On-demand mailbox synchronization and migration system | |
CN112486648A (zh) | 任务调度方法、装置、系统、电子设备和存储介质 | |
CN109729106B (zh) | 处理计算任务的方法、系统和计算机程序产品 | |
CN111491015B (zh) | 预热任务处理方法及系统、代理服务器、服务中心 | |
US9535749B2 (en) | Methods for managing work load bursts and devices thereof | |
CN109218356B (zh) | 管理服务器上有状态应用的方法和设备 | |
WO2016061935A1 (zh) | 一种资源调度方法、装置及计算机存储介质 | |
CN111045782A (zh) | 日志处理方法、装置、电子设备和计算机可读存储介质 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN114610499A (zh) | 任务调度方法、装置、计算机可读存储介质及电子设备 | |
CN116166395A (zh) | 任务调度方法、装置、介质及电子设备 | |
CN108958933B (zh) | 任务执行器的配置参数更新方法、装置及设备 | |
CN110290228B (zh) | 一种互联网协议ip地址分配方法及装置 | |
CN115237589A (zh) | 一种基于sr-iov的虚拟化方法、装置和设备 | |
CN111062572A (zh) | 任务分配的方法和装置 | |
CN106657195B (zh) | 任务处理方法和中继设备 | |
CN107045452B (zh) | 虚拟机调度方法和装置 | |
CN111858035A (zh) | 一种fpga设备分配方法、装置、设备及存储介质 | |
CN116880990A (zh) | 任务执行方法、装置、电子设备及计算机可读存储介质 | |
CN108696557B (zh) | 信息处理系统、方法和装置 | |
US20200278889A1 (en) | Task management using a virtual node | |
CN115617511A (zh) | 资源数据处理的方法、装置、电子设备和存储介质 | |
US20150120607A1 (en) | System and method for customer event email consolidation and delivery |
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 |