一种协程管理方法以及相关装置与流程

未命名 09-09 阅读:118 评论:0


1.本技术涉及互联网技术领域,尤其涉及一种协程管理方法以及相关装置。


背景技术:

2.云计算(cloud computing)是分布式计算的一种,指的是通过服务器在网络中构成的云环境将巨大的数据计算处理程序分解成无数个小程序,然后通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云环境是指能够从动态虚拟化的资源池中向用户或者各种应用系统按需提供计算能力、存储能力或者虚拟机服务等的互联网或者大数据环境。
3.云环境中运行的业务服务器,往往采用传统的业务流处理方式工作,即针对每一个业务服务器创建若干个协程,这些协程用于处理具体业务的数据请求。一般来说,当业务服务器接收到任务请求时,需要启动对应的协程,每个协程对应一个会话任务进行数据的处理。在这个过程中,业务服务器从会话池中为每个会话任务分配合适的内存资源,业务服务器从内存资源池中为协程分配合适的内存资源。
4.目前通常的做法是为该会话任务分配固定的内存资源,为对应的协程分配固定的内存资源。当业务服务器处理大量任务请求的过程中,上述做法会占用大量系统资源,造成业务的拥塞,难以适应系统动态负载情况。


技术实现要素:

5.本技术提供了一种协程管理方法,业务服务器创建协程后运行该协程,在运行协程时确定该协程实际占用内存资源的资源量。然后,根据协程实际占用内存资源的资源量,将与该协程对应的会话中的初始资源量更新为目标资源量,使得后续获取新的任务请求后,基于目标资源量确定该协程实际占用内存资源的资源量。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
6.有鉴于此,本技术一方面提供一种协程管理方法,包括:
7.获取第一任务请求,其中,第一任务请求用于请求创建第一会话和第一协程,第一会话与第一协程对应,第一会话携带针对第一协程的初始资源量;
8.响应于第一任务请求,根据第一会话所携带的初始资源量确定第一内存资源;
9.当使用第一内存资源运行第一协程时,确定第一协程实际占用内存资源的资源量;
10.根据第一协程实际占用内存资源的资源量,确定目标资源量,其中,目标资源量大于或等于第一协程实际占用内存资源的资源量;
11.将第一会话中的初始资源量更新为目标资源量。
12.本技术另一方面提供一种协程管理装置,包括:
13.收发模块,用于获取第一任务请求,其中,第一任务请求用于请求创建第一会话和第一协程,第一会话与第一协程对应,第一会话携带针对第一协程的初始资源量;
14.处理模块,用于响应于第一任务请求,根据第一会话所携带的初始资源量确定第一内存资源;
15.处理模块,还用于当使用第一内存资源运行第一协程时,确定第一协程实际占用内存资源的资源量;
16.处理模块,还用于根据第一协程实际占用内存资源的资源量,确定目标资源量,其中,目标资源量大于或等于第一协程实际占用内存资源的资源量;
17.处理模块,还用于将第一会话中的初始资源量更新为目标资源量。
18.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
19.处理模块,还用于根据第一协程实际占用内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
20.处理模块,还用于将第一内存资源池中内存资源块所对应的资源量作为目标资源量
21.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
22.处理模块,还用于根据第一协程实际占用的内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
23.处理模块,还用于当第一内存资源池中的内存资源块处于非空闲状态时,从内存资源池集合中确定第二内存资源池,第二内存资源池中每个内存资源块提供的资源量大于或等于第一内存资源池中每个内存资源块提供的资源量;
24.处理模块,还用于将第二内存资源池中内存资源块所对应的资源量作为目标资源量。
25.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
26.处理模块,还用于当内存资源池集合中提供可用的内存资源块的内存资源池的数量为0时,创建第三内存资源池,第三内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
27.处理模块,还用于从第三内存资源池中内存资源块所对应的资源量作为目标资源量。
28.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
29.处理模块,还用于当第三内存资源池中内存资源块未被使用时,释放第三内存资源池。
30.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
31.内存资源池集合包括一个或多个内存资源池;
32.内存资源池集合中同一个内存资源池所包括的内存资源块提供的资源量相同;
33.内存资源池集合中不同内存资源池所包括的内存资源块提供的资源量呈梯度排列。
34.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
35.收发模块,还用于获取第二任务请求,其中,第二任务请求用于请求创建第二会话;
36.处理模块,还用于根据第一会话和第二会话,确定第一会话和第二会话共有的第一函数;
37.处理模块,还用于创建基类会话,基类会话包括第一函数,使得第一会话和第二会话复用基类会话。
38.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
39.收发模块,还用于获取来自第二业务服务器的第一任务请求;
40.处理模块,还用于根据第一任务请求,向第二业务服务器发送响应消息,响应消息中携带的序列号与第一会话对应的序列号一致。
41.本技术另一方面提供一种计算机设备,包括:存储器、处理器以及总线系统;
42.其中,存储器用于存储程序;
43.处理器用于执行存储器中的程序,处理器用于根据程序代码中的指令执行上述各方面的方法;
44.总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。
45.本技术的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
46.本技术的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方面所提供的方法。
47.从以上技术方案可以看出,本技术实施例具有以下优点:
48.通过上述方法,业务服务器创建协程后运行该协程,在运行协程时确定该协程实际占用内存资源的资源量。然后,根据协程实际占用内存资源的资源量,将与该协程对应的会话中的初始资源量更新为目标资源量,使得后续获取新的任务请求后,基于目标资源量确定该协程实际占用内存资源的资源量。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
附图说明
49.图1为本技术实施例涉及的系统示意图;
50.图2为本技术实施例中涉及的会话池和内存资源池示意图;
51.图3为本技术实施例提出的一种协程管理方法的实施例示意图;
52.图4为本技术实施例中内存资源池的一种示意图;
53.图5为本技术实施例中内存资源池的又一种示意图;
54.图6为本技术实施例中内存资源池的又一种示意图;
55.图7为本技术实施例中协程管理方法的又一种实施例示意图;
56.图8为本技术实施例中基类会话的示意图;
57.图9为本技术实施例中协程管理方法的又一种实施例示意图;
58.图10为本技术实施例涉及的一种哈希表示意图;
59.图11为本技术实施例中一种应用场景示意图;
60.图12为本技术实施例中一种协程管理装置示意图;
61.图13是本技术实施例提供的一种服务器结构示意图;
62.图14是本技术实施例提供的一种终端设备结构示意图。
具体实施方式
63.本技术实施例提供了一种协程管理方法,首先,获取第一任务请求,第一任务请求用于请求创建第一会话和第一协程,第一会话与第一协程对应;其次,运行第一协程,确定第一协程实际占用内存资源的资源量;再次,根据第一协程实际占用内存资源的资源量,将第一协程占用的内存资源大小由第一内存资源块的大小调整为第二内存资源块的大小,第二内存资源块的大小大于或等于第一协程实际占用内存资源的资源量;再次,更新第一会话,更新后的第一会话指示第一协程占用的内存资源的大小为第二内存资源块的大小。通过上述方法,业务服务器创建协程后运行该协程,在运行协程时确定该协程实际占用内存资源的资源量。然后,根据协程实际占用内存资源的资源量,将与该协程对应的会话中的初始资源量更新为目标资源量,使得后续获取新的任务请求后,基于目标资源量确定该协程实际占用内存资源的资源量。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
64.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
65.(1)、云技术(cloud technology):
66.云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
67.(2)、协程:是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。一个线程可以包括多个协程。
68.图1为本技术实施例涉及的系统示意图。该系统包括:多个业务服务器120(包括:业务服务器121、业务服务器122和业务服务器123)。业务服务器120可以是服务器,在某些场景中该业务服务器可以被称为中心服务器,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云
计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn(content delivery network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。业务服务器之间可以通过有线或无线通信方式进行直接或间接地连接,本技术在此不做限制。
69.可选的,该系统还可以包括管理设备(图1未示出),该管理设备与业务服务器120之间通过通信网络相连。可选的,通信网络是有线网络或无线网络。
70.可选的,上述的无线网络或有线网络使用标准通信技术和/或协议。网络通常为因特网、但也可以是任何网络,包括但不限于局域网(local area network,lan)、城域网(metropolitan area network,man)、广域网(wide area network,wan)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合)。在一些实施例中,使用包括超文本标记语言(hyper text mark-up language,html)、可扩展标记语言(extensible markuplanguage,xml)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(secure socket layer,ssl)、传输层安全(transport layer security,tls)、虚拟专用网络(virtual private network,vpn)、网际协议安全(internet protocolsecurity,ipsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
71.具体的,图1示意的分布式系统可用于执行异步通信处理。业务服务器121向业务服务器122发送请求消息1(request 1)。响应于该请求消息1,业务服务器122向业务服务器123发送请求消息2(request 2)。响应于该请求消息2,业务服务器123执行相关处理,并向业务服务器122发送响应消息3(response 3),该响应消息3携带业务服务器123对请求消息2的处理结果。业务服务器122收到该响应消息3后,向业务服务器121发送响应消息4(response 4)。
72.当业务服务器121发送请求消息1后,由于业务服务器121需要等待一段时间才能收到该请求消息1的响应消息(即响应消息4)。因此,在上述处理流程中,业务服务器121将与请求消息1相关的数据保存在一个会话。上述请求消息1、请求消息2、响应消息3和响应消息4属于同一业务请求中不同的链路。通过上述手段实现异步通信。
73.以业务服务器122为例,当业务服务器122收到来自业务服务器121的请求消息1后,由于业务服务器122不能立刻拥有结果直接回应给业务服务器121,业务服务器122还需要向业务服务器123请求另一个结果,因此业务服务器122也需要进入一个等待的过程,业务服务器122需要启动对应的协程。该协程所对应的会话属于业务服务器122,每个协程对应一个会话任务进行数据的处理。在这个过程中,业务服务器122从会话池中为该会话任务分配合适的内存资源,业务服务器122从内存资源池中为该协程分配合适的内存资源。例如图2的示意,图2为本技术实施例中涉及的会话池和协程池示意图。会话池包括一个或多个内存资源块,该内存资源块作为会话池中的内存资源,计算机将会话池所包括的内存资源块分配给对应的会话使用。类似的,协程池括一个或多个内存资源块,该内存资源块作为协程池中的内存资源,计算机将协程池所包括的内存资源块分配给对应的协程使用。会话池和协程池共同组成本技术实施例中的内存资源池。
74.目前通常的做法是为该会话任务分配固定的内存资源,为对应的协程分配固定的内存资源。当业务服务器处理大量任务请求的过程中,上述做法会占用大量系统资源,造成
业务的拥塞,难以适应系统动态负载情况。
75.基于此,本技术实施例提出一种协程管理方法,业务服务器创建协程后运行该协程,在运行协程时确定该协程实际占用内存资源的资源量。然后,根据协程实际占用内存资源的资源量,将与该协程对应的会话中的初始资源量更新为目标资源量,使得后续获取新的任务请求后,基于目标资源量确定该协程实际占用内存资源的资源量。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
76.具体的,请参阅图3,图3为本技术实施例提出的一种协程管理方法的实施例示意图。本技术实施例提出的一种协程管理方法,包括:
77.301、业务服务器获取第一任务请求,第一任务请求用于请求创建第一会话和第一协程。
78.本实施例中,业务服务器接收来自其它设备的第一任务请求,该其它设备可以是其它的业务服务器或者终端设备,本技术实施例对此不作限制。
79.具体的,业务服务器获取第一任务请求后,业务服务器分配一些资源用于处理该第一任务请求。其中,业务服务器所分配的资源包括第一协程以及承载该第一任务请求的上下文数据的第一会话,第一会话携带针对第一协程的初始资源量。第一会话与第一协程一一对应。本技术实施例中,将业务服务器为协程或者会话预留的内存资源称为内存资源池(即协程池或者会话池),该内存资源池中包括的内存资源为该内存资源池包括的一个或多个协程所占用的内存资源块(或者资源节点)。
80.在一种可能的实现方式中,业务服务器在起始阶段(例如业务服务器上电后),预先创建内存资源池。当业务服务器获取第一任务请求后,业务服务器根据第一任务请求所请求创建的会话的大小,从内存资源池中寻找合适的会话,该会话称为第一会话。会话的大小可以理解为该会话所占用内存资源(例如:内存资源块)的大小值。业务服务器根据该第一会话对应的协程栈的大小,在内存资源池中确定合适的协程(即第一协程)。业务服务器在内存资源池中所确定的第一协程,该第一协程所占用的内存资源的大小大于或等于第一会话对应的协程栈的大小。该协程栈的大小可以理解为该协程栈所占用的内存资源(例如:内存资源块)的大小值。
81.在另一种可能的实现方式中,业务服务器在获取第一任务请求后,创建第一会话和第一协程。具体的,业务服务器在内存资源池中确定第一会话所占用的内存资源,该第一会话所占用的内存资源被归类至会话池。业务服务器在内存资源池中确定第一协程所占用的内存资源,该第一协程所占用的内存资源被归类至协程池。
82.当业务服务器确定第一会话和第一协程后,将第一协程的指引信息保存至第一会话中,使得第一会话与第一协程关联。
83.302、业务服务器响应于第一任务请求,根据第一会话所携带的初始资源量确定第一内存资源。
84.本实施例中,业务服务器创建第一协程和第一会话后,根据第一会话所携带的初始资源量,确定运行第一协程的内存资源,该内存资源称为第一内存资源。
85.示例性的,第一会话中所携带的初始资源量的大小为100千字节(kilobyte,kb)。则确定第一内存资源,该第一内存资源大于或等于100kb。
86.303、当使用第一内存资源运行第一协程时,业务服务器确定第一协程实际占用内
存资源的资源量。
87.本实施例中,业务服务器基于第一内存资源实际运行第一协程。然后,业务服务器确定第一协程实际占用内存资源的资源量。
88.例如,业务服务器确定第一协程实际占用内存资源的资源量为60kb。
89.304、业务服务器根据第一协程实际占用内存资源的资源量,确定目标资源量。
90.本实施例中,业务服务器确定第一协程实际占用内存资源的资源量后,根据第一协程实际占用内存资源的资源量更新第一会话。具体的,目标资源量大于或等于第一协程实际占用内存资源的资源量。
91.示例性的,业务服务器确定第一协程实际占用内存资源的资源量为60kb后,业务服务器确定目标资源量,目标资源量大于或等于第一协程实际占用内存资源的资源量,目标资源量与第一协程实际占用内存资源的资源量相匹配。该目标资源量可以是64kb、100kb,或者128kb。
92.305、业务服务器将第一会话中的初始资源量更新为目标资源量。
93.本实施例中,业务服务器确定目标资源量后,对第一会话进行更新处理。具体的,将第一会话中初始资源量更新为目标资源量。例如:将第一会话中指示第一协程占用内存资源的字段的数值,从初始资源量的数值更新为目标资源量的数值。
94.可选的,当第一协程实际占用内存资源的资源量与第一会话携带针对第一协程的初始资源量的大小近似时,业务服务器不调整第一会话中的初始资源量。
95.业务服务器更新第一会话后,当业务服务器接收新的任务请求,且该新的任务请求与第一任务请求的类型相同。则业务服务器响应于该新的任务请求,创建第一会话和第一协程。该第一协程所占用的内存资源的资源量为目标资源量。
96.本技术实施例提出一种协程管理方法,根据第一协程实际占用内存资源的资源量,更新第一会话,更新后的第一会话指示第一协程占用的内存资源的资源量为目标资源量,目标资源量大于或等于第一协程实际占用内存资源的资源量。通过上述方法,业务服务器创建协程后运行该协程,在运行协程时确定该协程实际占用内存资源的资源量。然后,根据协程实际占用内存资源的资源量,将与该协程对应的会话中的初始资源量更新为目标资源量,使得后续获取新的任务请求后,基于目标资源量确定该协程实际占用内存资源的资源量。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
97.内存资源池集合中用于会话的内存资源池(又称为会话池)和用于协程的内存资源池(又称为会话池)可以任意组合复用,因为具体业务的会话对应的协程大小并不是固定的。通过解耦这两部分的资源大小,可以提高资源复用率。比如业务服务器接收任务请求a,任务请求a请求创建的会话a的会话大小为128kb,任务请求a请求创建的协程a的协程大小为64kb,共192kb。业务服务器接收任务请求b,任务请求b请求创建的会话b的会话大小为256kb,任务请求b请求创建的协程b的协程大小为64kb,共320kb。通过本技术提出的方法,业务服务器在根据任务请求b创建协程时,可以使用协程a共享内存资源池中的空闲内存资源。
98.结合上述图3示意的实施例,本技术提出的又一种实施例中,根据第一协程实际占用内存资源的资源量,确定目标资源量,包括:
99.业务服务器根据第一协程实际占用内存资源的资源量,从内存资源池集合中确定
第一内存资源池,其中,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;将第一内存资源池中内存资源块所对应的资源量作为目标资源量。
100.具体的,业务服务器中可以管理多个内存资源池。示例性的,请参阅图4,图4为本技术实施例中内存资源池的一种示意图。以业务服务器管理n个内存资源池为例,n为正整数。业务服务器中管理的内存资源池包括:内存资源池a、内存资源池b、内存资源池c~内存资源池n一共合计n个内存资源池。其中,内存资源池a中包括的内存资源块的资源大小为4kb,换言之,内存资源池a中包括的内存资源块的粒度为4kb。内存资源池b中包括的内存资源块的资源大小为8kb,换言之,内存资源池b中包括的内存资源块的粒度为8kb。内存资源池c中包括的内存资源块的资源大小为16kb,换言之,内存资源池c中包括的内存资源块的粒度为16kb。内存资源池n中包括的内存资源块的资源大小为512kb,换言之,内存资源池n中包括的内存资源块的粒度为512kb。
101.示例性的,业务服务器确定第一协程实际占用内存资源的资源量为15kb,则业务服务器从上述n个内存资源池(即内存资源池集合)中,确定内存资源池b作为第一内存资源池。然后,将内存资源池b中的内存资源块提供的资源量作为目标资源量。
102.为了便于理解,针对每个内存资源池,请参阅图5,图5为本技术实施例中内存资源池的又一种示意图。每个内存资源池中包括一个或多个内存资源块,换言之,每个内存资源池中的内存资源可以视为内存资源块。例如图5所示:内存资源池a中包括的内存资源为多个大小是4kb的内存资源块。内存资源池b中包括的内存资源为多个大小是8kb的内存资源块。内存资源池c中包括的内存资源为多个大小是16kb的内存资源块。
103.本技术实施例中,业务服务器确定第一协程实际占用内存资源的资源量后,可以在已有多个内存资源池选择合适大小的内存资源池,然后第二内存资源池中内存资源块所对应的资源量作为目标资源量。通过上述方法,可以有效节省业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。
104.结合上述实施例,本技术提出的又一种实施例中:根据第一协程实际占用内存资源的资源量,确定目标资源量,包括:
105.业务服务器根据第一协程实际占用内存资源的资源量,确定第一内存资源池,其中,第一内存资源池中包括的一个或多个内存资源块的资源大小与第一协程实际占用内存资源的资源量相匹配,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;业务服务器当第一内存资源池中的内存资源块处于非空闲状态时,从内存资源池集合中确定第二内存资源池,第二内存资源池中每个内存资源块提供的资源量大于或等于第一内存资源池中每个内存资源块提供的资源量;将第二内存资源池中内存资源块所对应的资源量作为目标资源量。
106.具体的,业务服务器确定第一协程实际占用内存资源的资源量后,从业务服务器管理的内存资源池集合(包括多个内存资源池)中确定第一内存资源池。然后,业务服务器检测第一内存资源池中可用的内存资源块(或者称为可用的内存资源)是否小于或等于第一阈值,例如1。当第一内存资源池中可用的内存资源块小于或等于第一阈值时,可以认为第一内存资源池中可用的内存资源块的数量不足,第一内存资源池中内存资源块处于非空闲状态。则业务服务器从管理的内存资源池集合中选择相较于第一内存资源池更高阶的内
存资源池,所选择的内存资源池称为第二内存资源池。这里的“更高阶”可以理解为:第二内存资源池中每个内存资源块提供的资源量大于或等于第一内存资源池中每个内存资源块提供的资源量。
107.示例性的,业务服务器管理内存资源池a(4kb)、内存资源池b(8kb)、内存资源池c(16kb)、和内存资源池d(32kb)。当业务服务器确定第一协程实际占用7kb后,业务服务器从上述三个内存资源池中选取内存资源池b作为第一内存资源池。然后,业务服务器检测第一内存资源池(内存资源池b)中可用的内存资源块是否小于或等于第一阈值。以第一阈值为1个内存资源块为例,当第一内存资源池(内存资源池b)中可用的内存资源块小于1时,则认为第一内存资源池中可用的内存资源块的数量不足。由于内存资源池c中内存资源块的资源大小(16kb)大于内存资源池b中内存资源块的资源大小,因此内存资源池c相较于内存资源池b属于更高阶的内存资源池。业务服务器选取内存资源池c作为第二内存资源池。然后,业务服务器将第二内存资源池中内存资源块所对应的资源量作为目标资源量。
108.在另一种可能的实现方式中,第一阈值还可以是第一内存资源池中可用内存空间大小,例如:第一阈值为8kb。
109.可选的,业务服务器可以进一步检测内存资源池c中可用的内存资源块是否小于或等于第一阈值。当内存资源池c中可用的内存资源块的小于或等于第一阈值,则业务服务器选取相较于内存资源池c更高阶的内存资源池d作为第二内存资源池。
110.通过上述方法,可以保证第一协程的顺利运行,进而确保第一会话的顺利运行,确保业务服务器对第一任务请求可以顺利处理,提升业务服务器的可靠性。
111.结合上述实施例,本技术提出的又一种实施例中:根据第一协程实际占用内存资源的资源量,确定目标资源量,包括:
112.当内存资源池集合中提供可用的内存资源块的内存资源池的数量为0时,创建第三内存资源池,第三内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;业务服务器从第三内存资源池中内存资源块所对应的资源量作为目标资源量。
113.具体的,业务服务器检测内存资源池集合中可用的内存资源池的数量是否为0。若为0,则业务服务器从系统内存中申请一部分空闲的内存资源,然后使用该空闲的内存资源创建新的内存资源池,该新的内存资源池称为第三内存资源池。业务服务器从系统内存中申请一部分空闲的内存资源,指的是业务服务器获取这部分空闲的内存资源的地址。为了便于理解,请参阅图6,图6为本技术实施例中内存资源池的又一种示意图。初始阶段,业务服务器中已创建的内存资源池为n个(内存资源池a~内存资源池n)。当业务服务器响应于第一任务请求后,检测当前可用的内存资源池数量为0,则业务服务器创建新的内存资源池,例如图6中的内存资源池aa~内存资源池nn,内存资源池aaa~内存资源池nnn等。
114.在另一种可能的实现方式中,业务服务器新创建的第三内存资源池,可以与原有的内存资源池合并,以实现对原有内存资源池的扩容。以图6为例,业务服务器中原有的内存资源池包括:内存资源池a。业务服务器创建新的内存资源池aa(内存资源池aa视为第三内存资源池)后,将内存资源池a和内存资源池aa合并作为新的内存资源池a。即新的内存资源池a包括原内存资源池a和内存资源池aa。
115.业务服务器可以创建x个粒度相同的内存资源池,x为正整数,例如:业务服务器创
建内存资源池aa和内存资源池aaa。业务服务器也可以创建y个粒度不同的内存资源池,y为正整数,例如:业务服务器创建内存资源池aa、内存资源池bb~内存资源池nn。本技术实施例对此不作限制。
116.进一步的,为了便于管理,业务服务器可以将粒度相同的多个内存资源池合并为一个内存资源池以便于管理。例如:业务服务器将内存资源池a、内存资源池aa和内存资源池aaa合并为内存资源池a’,该内存资源池a’中包括的内存资源与内存资源池a、内存资源池aa和内存资源池aaa三个内存资源池包括的内存资源相同。
117.通过上述方法,当业务服务器发现可用的内存资源池的数量不足时,业务服务器可以及时拓展内存资源池的数量,以保证业务的顺利执行,提升业务服务器的可靠性。
118.可选的,当第三内存资源池中包括的一个或多个内存资源块未被使用时,业务服务器释放第三内存资源池,第三内存资源池中包括的一个或多个内存资源块处于可用状态。以图6示意的多个内存资源池为例,当内存资源池aaa中所有的内存资源块未被占用时,业务服务器将内存资源池aaa所使用的内存资源释放,即解散该内存资源池aaa。该内存资源池aaa所使用的内存资源处于可用状态。
119.具体的,业务服务器检测当前第三内存资源池中可用内存资源块(即未被占用的内存资源块)的数量是否大于某一阈值,若大于则可以释放该第三内存资源池。即,将第三内存资源池中的内存资源块释放。换言之,将这些可用内存资源块还给操作系统,不再占用这些可用内存资源块。
120.在另一种可能的实现方式中,第三内存资源池与原有的内存资源池合并(即创建第三内存资源池对原有的内存资源池进行扩容),得到新的内存资源池。当业务服务器确定扩容后的内存资源池中可用内存资源块的数量大于某一阈值,则业务服务器可以将扩容后的内存资源池中可用内存资源块释放。换言之,将这些可用内存资源块还给操作系统,不再占用这些可用内存资源块。
121.通过上述方法,在保证业务的顺利执行前提下,业务服务器可以释放空闲的内存资源池所占用的内存资源。以提升业务服务器中系统内存的可用率。
122.结合上述实施例,本技术提出的又一种实施例中:在业务服务器上电后,业务服务器创建多个内存资源池,这些多个内存资源池共同组成内存资源池集合。内存资源池集合中同一个内存资源池所包括的内存资源块提供的资源量相同;内存资源池集合中不同内存资源池所包括的内存资源块提供的资源量呈梯度排列。内存资源池集合中不同内存资源池所包括的内存资源块提供的资源量呈梯度排列,因此,业务服务器可以在较短的时间内确定与协程匹配的内存资源池,提升内存资源池与协程的匹配程度,减少内存资源的浪费。
123.可以理解的是,业务服务器也可以根据指令创建一个或多个内存资源池,本技术对此不作限制。
124.又或者,业务服务器可以创建一个或多个相同大小的内存资源池;或者,业务服务器可以创建一个或多个不同大小的内存资源池,本技术对此不作限制。
125.结合上述实施例,请参阅图7,图7为本技术实施例中协程管理方法的又一种实施例示意图。本技术实施例提出的协程管理方法,还包括:
126.701、业务服务器获取第二任务请求,第二任务请求用于请求创建第二会话。
127.本实施例中,在获取第一任务请求后,业务服务器获取第二任务请求。与第一任务
请求类似,业务服务器接收来自其它设备的第二任务请求,该其它设备可以是其它的业务服务器或者终端设备,本技术实施例对此不作限制。
128.该第二任务请求用于请求创建第二会话和第二协程。业务服务器获取第二任务请求后,业务服务器为第二任务请求分配一些资源用于处理该第二任务请求。其中,业务服务器所分配的资源包括第二协程以及承载该第二任务请求的上下文数据的第二会话。第二会话与第二协程一一对应。
129.702、业务服务器根据第一会话和第二会话,确定第一会话和第二会话共有的第一函数。
130.本实施例中,由于协程存在对应的入口函数,且该入口函数与协程所对应的会话一一对应,因此,业务服务器可以根据多个会话和/或协程确定多个会话共有的函数。
131.示例性的,业务服务器根据第一会话(或者第一协程)确定第一会话的函数a。业务服务器根据第二会话(或者第二协程)确定第二会话的函数b。若函数a和函数b相同,则业务服务器确定函数a(或者函数b)作为第一会话和第二会话共有的第一函数。
132.可以理解的是,业务服务器可以确定多个会话的共有函数,例如:业务服务器根据会话a、会话b、会话c和会话d确定共有的函数q。该函数q作为会话a、会话b、会话c和会话d共有的第一函数。
133.可以理解的是,第一函数可以包括一个函数也可以包括多个函数,本技术实施例对此不作限制。
134.703、业务服务器创建基类会话,该基类会话包括第一函数。
135.本实施例中,当业务服务器确定第一会话和第二会话共有的第一函数后,业务服务器基于该第一函数抽象得到一个基类会话(sessionbase)。该基类会话中保存有第一函数(或者第一函数的上下文信息)。换言之,业务服务器根据第一任务请求和第二任务请求确定共有的上下文信息,然后业务服务器将该共有的上下文信息保存在一个基类会话中。该基类会话的地址作为第一会话和第二会话的入口函数的参数。当业务服务器执行第一会话和/或第二会话时,复用该基类会话中的第一函数。
136.为了便于理解,请参阅图8,图8为本技术实施例中基类会话的示意图。业务服务器获取第一任务请求后,创建第一会话,该第一会话中包括run()函数。业务服务器获取第二任务请求后,创建第二会话,该第二会话中包括run()函数。因此,业务服务器确定第一会话和第二会话共有的第一函数为run()函数。然后,业务服务器根据该第一函数,创建基类会话,该基类会话中包括第一函数。当业务服务器执行第一会话和/或第二会话时,复用基类会话中包括的第一函数(run()函数)。该基类会话的地址作为第一协程和第二协程的入口函数的参数。
137.本实施例中,业务服务器可以根据多个会话共有的第一函数,创建基类会话。该基类会话中包括第一函数,因此多个会话可以复用该第一函数。通过上述方法,可以有效节省业务服务器的系统资源占用率。
138.结合上述实施例,请参阅图9,图9为本技术实施例中协程管理方法的又一种实施例示意图。本技术实施例提出的协程管理方法,还包括:
139.901、第一业务服务器获取第一任务请求,第一任务请求携带第一会话对应的序列号。
140.本实施例中,第一业务服务器(例如业务服务器a)接收来自第二业务服务器(例如业务服务器b)的第一任务请求,该第一任务请求携带第一会话对应的序列号。
141.具体的,业务服务器b中为会话分配唯一的序列号。该序列号可以是其它唯一指示会话的标识信息,例如字符串,本技术实施例对此不作限制。
142.为了便于理解,结合图1进行说明。示例性的,业务服务器122接收来自业务服务器121的请求消息1后,业务服务器122向业务服务器123发送请求消息2。请求消息1和请求消息2属于同一会话(即第一会话),因此请求消息1和请求消息2中分别携带第一会话对应的序列号。该序列号例如是:“0003”。
143.同样是结合图1,业务服务器122向业务服务器123(或者其它业务服务器)发送多条请求消息,业务服务器122通过在请求消息中携带不同的序列号以区分这些请求消息所对应的会话。同一会话的请求消息中携带相同的序列号。
144.类似的,业务服务器122向业务服务器121发送的回复消息中同样携带指示会话的序列号,同一会话的请求消息和回复消息所携带的序列号一致。例如:业务服务器122向业务服务器121发送的回复消息4与业务服务器122接收来自业务服务器121的请求消息1属于同一会话,则回复消息4和请求消息1中携带相同的序列号。
145.902、第一业务服务器向第二业务服务器发送响应消息,该响应消息携带序列号。
146.本实施例中,响应于第一任务请求,第一业务服务器(例如业务服务器a)向第二业务服务器(例如业务服务器b)发送响应消息,该响应消息中携带第一会话对应的序列号。
147.可以理解的是,当业务服务器b接收的响应消息中不携带第一会话对应的序列号时,业务服务器b认为该响应消息与第一任务请求无关。业务服务器b对该不携带第一会话对应的序列号的响应消息执行处理。
148.业务服务器b将接收的响应消息中携带的序列号,与业务服务器b保存的与会话相关联的序列号进行比对。当业务服务器b接收的响应消息中携带的序列号与第一会话对应的序列号一致时,则业务服务器b确定该响应消息为第一会话的响应消息,该响应消息为第一任务请求的响应。
149.通过上述方法,业务服务器在任务请求和响应消息中携带与该会话关联的序列号。业务服务器通过检查任务请求和响应消息中的序列号是否一致,进而确保响应消息与任务请求相互关联,保证了会话处理时不会使用其它会话的数据。
150.可选的,在业务服务器中使用哈希(hash)表的方式记录每个会话(和/或协程)的超时时间,以便节约系统资源。为了便于理解,请参阅图10,图10为本技术实施例涉及的一种哈希表示意图。业务服务器接收某个会话的任务请求时,业务服务器可以记录创建该会话的时刻。业务服务器可以为每个会话设置超时时刻,以避免长时间无响应的会话占用系统资源。例如图10所示,业务服务器创建会话1和会话3后,设置会话1和会话3的超时时刻为时刻标记1。业务服务器创建会话2、会话5和会话8后,设置会话2、会话5和会话8的超时时刻为时刻标记2。
151.业务服务器中可以设置不同会话的超时时间,上述超时时刻等于创建会话的时刻加上该会话的超时时间。例如:时刻标记1为10:30:05,会话1的超时时间为5秒,会话1的创建时刻为10:30:00。
152.在前述实施例的基础上,请参阅图11,图11为本技术实施例中一种应用场景示意
图。本技术提出的一种应用场景包括:
153.s1、业务服务器接收任务请求a,该任务请求a用于请求创建会话a和协程a。
154.s2、业务服务器为会话a分配合适的内存资源块。
155.步骤s2中,业务服务器从一个或多个会话池中为会话a选择合适的内存资源块。当业务服务器中无合适的会话池时,业务服务器还可以创建会话池,并从新创建的会话池中为会话a分配合适的内存资源块。
156.s3、业务服务器为协程a分配合适的内存资源块。
157.步骤s3中,业务服务器从一个或多个内存资源池中为协程a选择合适的内存资源块。当业务服务器中无合适的内存资源池时,业务服务器还可以创建内存资源池,并从新创建的内存资源池中为协程a分配合适的内存资源块。
158.s4、业务服务器关联会话a和协程a。
159.步骤s4中,业务服务器将协程a的指引信息保存至会话a中,使得会话a和协程a关联。
160.s5、业务服务器激活协程a。
161.步骤s5中,业务服务器首先先备份当前系统运行栈上下文环境,然后将当前运行栈和寄存器等信息替换为指定的协程a入口函数和其参数以及用户栈地址。业务服务器继续执行程序,则跳转到协程a的入口函数。实现激活该协程a。
162.s6、业务服务器执行协程异步数据处理。步骤s6后执行步骤s7。
163.s7、业务服务器检测会话a是否超时。
164.步骤s7中,业务服务器为会话a设置超时时间,业务服务器检测该会话a是否超时,若超时则进入步骤s9;若未超时,则进入步骤s8。
165.s8、业务服务器检测会话a是否处理完成。
166.步骤s8中,业务服务器检测会话a是否处理完成,若处理完成则进入步骤s9;若未处理完成,则进入步骤s6。
167.s9、业务服务器结束协程a。
168.s10、业务服务器结束任务请求a。
169.下面对本技术中的协程管理装置进行详细描述,该协程管理装置用于执行前述实施例中的业务服务器执行的相关处理。请参阅图12,图12为本技术实施例中一种协程管理装置示意图。本技术实施例中一种协程管理装置1200,包括:
170.收发模块1201,用于获取第一任务请求,其中,第一任务请求用于请求创建第一会话和第一协程,第一会话与第一协程对应,第一会话携带针对第一协程的初始资源量;
171.处理模块1202,用于响应于第一任务请求,根据第一会话所携带的初始资源量确定第一内存资源;
172.处理模块1202,还用于当使用第一内存资源运行第一协程时,确定第一协程实际占用内存资源的资源量;
173.处理模块1202,还用于根据第一协程实际占用内存资源的资源量,确定目标资源量,其中,目标资源量大于或等于第一协程实际占用内存资源的资源量;
174.处理模块1202,还用于将第一会话中的初始资源量更新为目标资源量。
175.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
176.处理模块1202,还用于根据第一协程实际占用内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
177.处理模块1202,还用于将第一内存资源池中内存资源块所对应的资源量作为目标资源量。
178.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
179.处理模块1202,还用于根据第一协程实际占用的内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,第一内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
180.处理模块1202,还用于当第一内存资源池中的内存资源块处于非空闲状态时,从内存资源池集合中确定第二内存资源池,第二内存资源池中每个内存资源块提供的资源量大于或等于第一内存资源池中每个内存资源块提供的资源量;
181.处理模块1202,还用于将第二内存资源池中内存资源块所对应的资源量作为目标资源量。
182.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
183.处理模块1202,还用于当内存资源池集合中提供可用的内存资源块的内存资源池的数量为0时,创建第三内存资源池,第三内存资源池中每个内存资源块提供的资源量大于或等于第一协程实际占用内存资源的资源量;
184.处理模块1202,还用于从第三内存资源池中内存资源块所对应的资源量作为目标资源量。
185.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
186.处理模块1202,还用于当第三内存资源池中内存资源块未被使用时,释放第三内存资源池。
187.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
188.内存资源池集合包括一个或多个内存资源池;
189.内存资源池集合中同一个内存资源池所包括的内存资源块提供的资源量相同;
190.内存资源池集合中不同内存资源池所包括的内存资源块提供的资源量呈梯度排列。
191.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
192.收发模块1201,还用于获取第二任务请求,其中,第二任务请求用于请求创建第二会话;
193.处理模块1202,还用于根据第一会话和第二会话,确定第一会话和第二会话共有的第一函数;
194.处理模块1202,还用于创建基类会话,基类会话包括第一函数,使得第一会话和第二会话复用基类会话。
195.在一种可能的设计中,在本技术实施例的另一方面的另一种实现方式中,
196.收发模块1201,还用于获取来自第二业务服务器的第一任务请求;
197.处理模块1202,还用于根据第一任务请求,向第二业务服务器发送响应消息,响应消息中携带的序列号与第一会话对应的序列号一致。
198.图13是本技术实施例提供的一种服务器结构示意图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,cpu)722(例如,一个或一个以上处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在服务器700上执行存储介质730中的一系列指令操作。
199.服务器700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,和/或,一个或一个以上操作系统741,例如windows server
tm
,mac os x
tm
,unix
tm
,linux
tm
,freebsd
tm
等等。
200.上述实施例中由业务服务器所执行的步骤可以基于该图13所示的服务器结构。
201.图14是本技术实施例提供的一种终端设备结构示意图,如图14所示,为了便于说明,仅示出了与本技术实施例相关的部分,具体技术细节未揭示的,请参照本技术实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(personal digital assistant,pda)、销售终端设备(point of sales,pos)、车载电脑等任意终端设备,以终端设备为手机为例:
202.图14示出的是与本技术实施例提供的终端设备相关的手机的部分结构的框图。参考图14,手机包括:射频(radio frequency,rf)电路810、存储器820、输入单元830、显示单元840、传感器850、音频电路860、无线保真(wireless fidelity,wifi)模块870、处理器880、以及电源890等部件。本领域技术人员可以理解,图14中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
203.下面结合图14对手机的各个构成部件进行具体的介绍:
204.rf电路810可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器880处理;另外,将设计上行的数据发送给基站。通常,rf电路810包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,lna)、双工器等。此外,rf电路810还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(global system of mobile communication,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma)、长期演进(long term evolution,lte)、电子邮件、短消息服务(short messaging service,sms)等。
205.存储器820可用于存储软件程序以及模块,处理器880通过运行存储在存储器820的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器820可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器820可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
206.输入单元830可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元830可包括触控面板831以及其他输入设备832。触控面板831,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板831上或在触控面板831附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板831可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器880,并能接收处理器880发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板831。除了触控面板831,输入单元830还可以包括其他输入设备832。具体地,其他输入设备832可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
207.显示单元840可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元840可包括显示面板841,可选的,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板841。进一步的,触控面板831可覆盖显示面板841,当触控面板831检测到在其上或附近的触摸操作后,传送给处理器880以确定触摸事件的类型,随后处理器880根据触摸事件的类型在显示面板841上提供相应的视觉输出。虽然在图14中,触控面板831与显示面板841是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板831与显示面板841集成而实现手机的输入和输出功能。
208.手机还可包括至少一种传感器850,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板841的亮度,接近传感器可在手机移动到耳边时,关闭显示面板841和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
209.音频电路860、扬声器861,传声器862可提供用户与手机之间的音频接口。音频电路860可将接收到的音频数据转换后的电信号,传输到扬声器861,由扬声器861转换为声音信号输出;另一方面,传声器862将收集的声音信号转换为电信号,由音频电路860接收后转换为音频数据,再将音频数据输出处理器880处理后,经rf电路810以发送给比如另一手机,或者将音频数据输出至存储器820以便进一步处理。
210.wifi属于短距离无线传输技术,手机通过wifi模块870可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图14示出了wifi模块870,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
211.处理器880是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器820内的软件程序和/或模块,以及调用存储在存储器820内的数据,执行手机的各种功能和处理数据,从而对手机进行整体检测。可选的,处理器880可包括一个或多个处理单元;可选的,处理器880可集成应用处理器和调制解调处理器,其中,应
用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器880中。
212.手机还包括给各个部件供电的电源890(比如电池),可选的,电源可以通过电源管理系统与处理器880逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
213.尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
214.上述实施例中由终端设备所执行的步骤可以基于该图14所示的终端设备结构。
215.本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如前述各个实施例描述的方法。
216.本技术实施例中还提供一种包括程序的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例描述的方法。
217.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
218.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
219.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
220.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
221.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
222.以上,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种协程管理方法,其特征在于,包括:获取第一任务请求,其中,所述第一任务请求用于请求创建第一会话和第一协程,所述第一会话与所述第一协程对应,所述第一会话携带针对所述第一协程的初始资源量;响应于所述第一任务请求,根据所述第一会话所携带的所述初始资源量确定第一内存资源;当使用所述第一内存资源运行所述第一协程时,确定所述第一协程实际占用内存资源的资源量;根据所述第一协程实际占用内存资源的资源量,确定目标资源量,其中,所述目标资源量大于或等于所述第一协程实际占用内存资源的资源量;将所述第一会话中的所述初始资源量更新为所述目标资源量。2.根据权利要求1所述的方法,其特征在于,所述根据所述第一协程实际占用内存资源的资源量,确定目标资源量,包括:根据所述第一协程实际占用内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,所述第一内存资源池中每个内存资源块提供的资源量大于或等于所述第一协程实际占用内存资源的资源量;将所述第一内存资源池中所述内存资源块所对应的资源量作为所述目标资源量。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一协程实际占用内存资源的资源量,确定目标资源量,包括:根据所述第一协程实际占用的内存资源的资源量,从内存资源池集合中确定第一内存资源池,其中,所述第一内存资源池中每个内存资源块提供的资源量大于或等于所述第一协程实际占用内存资源的资源量;当所述第一内存资源池中的内存资源块处于非空闲状态时,从所述内存资源池集合中确定第二内存资源池,所述第二内存资源池中每个内存资源块提供的资源量大于或等于所述第一内存资源池中每个内存资源块提供的资源量;将所述第二内存资源池中所述内存资源块所对应的资源量作为所述目标资源量。4.根据权利要求1所述的方法,其特征在于,所述根据所述第一协程实际占用内存资源的资源量,确定目标资源量,包括:当内存资源池集合中提供可用的内存资源块的内存资源池的数量为0时,创建第三内存资源池,所述第三内存资源池中每个内存资源块提供的资源量大于或等于所述第一协程实际占用内存资源的资源量;从所述第三内存资源池中所述内存资源块所对应的资源量作为所述目标资源量。5.根据权利要求4所述的方法,其特征在于,所述将所述第一会话中的所述初始资源量更新为所述目标资源量之后,所述方法还包括:当所述第三内存资源池中所述内存资源块未被使用时,释放所述第三内存资源池。6.根据权利要求2-5中任一项所述的方法,其特征在于,所述内存资源池集合包括一个或多个内存资源池;所述内存资源池集合中同一个内存资源池所包括的内存资源块提供的资源量相同;所述内存资源池集合中不同内存资源池所包括的内存资源块提供的资源量呈梯度排列。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取第二任务请求,其中,所述第二任务请求用于请求创建第二会话;根据所述第一会话和所述第二会话,确定所述第一会话和所述第二会话共有的第一函数;创建基类会话,所述基类会话包括所述第一函数,使得所述第一会话和所述第二会话复用所述基类会话。8.根据权利要求1所述的方法,其特征在于,所述第一任务请求携带所述第一会话对应的序列号;所述第一任务请求的接收端为第一业务服务器,所述第一任务请求的发起端为第二业务服务器;所述获取所述第一任务请求,包括:所述第一业务服务器获取来自所述第二业务服务器的所述第一任务请求;所述第一业务服务器根据所述第一任务请求,向所述第二业务服务器发送响应消息,所述响应消息中携带的序列号与所述第一会话对应的序列号一致。9.一种协程管理装置,其特征在于,包括:收发模块,用于获取第一任务请求,其中,所述第一任务请求用于请求创建第一会话和第一协程,所述第一会话与所述第一协程对应,所述第一会话携带针对所述第一协程的初始资源量;处理模块,用于响应于所述第一任务请求,根据所述第一会话所携带的所述初始资源量确定第一内存资源;所述处理模块,还用于当使用所述第一内存资源运行所述第一协程时,确定所述第一协程实际占用内存资源的资源量;所述处理模块,还用于根据所述第一协程实际占用内存资源的资源量,确定目标资源量,其中,所述目标资源量大于或等于所述第一协程实际占用内存资源的资源量;所述处理模块,还用于将所述第一会话中的所述初始资源量更新为所述目标资源量。10.一种计算机设备,其特征在于,包括:存储器、处理器以及总线系统;其中,所述存储器用于存储程序;所述处理器用于执行所述存储器中的程序,所述处理器用于根据程序代码中的指令执行权利要求1至8中任一项所述的方法;所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。11.一种计算机可读存储介质,其特征在于,包括指令,当其在计算机上运行时,使得所述计算机执行如权利要求1至8中任一项所述的方法。12.一种计算机程序产品,包括计算机程序和指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1至8中任一项所述的方法。

技术总结
本申请公开了一种协程管理方法,方法包括:获取第一任务请求,第一任务请求用于请求创建第一会话和第一协程,第一会话携带针对第一协程的初始资源量;响应于第一任务请求,根据第一会话所携带的初始资源量确定第一内存资源并运行第一协程,确定第一协程实际占用内存资源的资源量;根据第一协程实际占用内存资源的资源量,确定目标资源量;将第一会话中的初始资源量更新为目标资源量。业务服务器后续接收相同类型的任务请求时,使用调整后的内存资源大小来运行第一协程。以节约业务服务器的内存资源,提高业务服务器的并发能力,适应系统动态负载。统动态负载。统动态负载。


技术研发人员:聂晓冬
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.02.28
技术公布日:2023/9/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐