用于生成线程池的配置信息的方法、任务处理方法和装置与流程

文档序号:31381525发布日期:2022-09-03 00:42阅读:76来源:国知局
用于生成线程池的配置信息的方法、任务处理方法和装置与流程

1.本说明书实施例通常涉及计算机技术领域,尤其涉及用于生成线程池的配置信息的方法、任务处理方法和装置。


背景技术:

2.线程池(thread pool)是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,通过重复利用已创建的线程降低线程创建和销毁造成的消耗,而且还可以提高响应速度和线程的可管理性。在实际业务场景中,往往是某个应用(application,app)的所有线程共用同一个线程池,即应用的多个接口均从同一个线程池中调用线程资源。因而当其中的某线程出现问题而无法执行完毕时,该线程池中其余的线程只能被动等待,从而造成整个线程池阻塞,引起线上故障。虽然现有技术可以通过线程的任务执行时间是否大于预定阈值来判定是否超时,但由于实际业务的复杂场景难以确定一个合理的阈值作为区分,因而,如何对线程池中的线程进行管理,以提高线程池的处理效率和保证线上业务的稳定性成为亟待解决的问题。


技术实现要素:

3.鉴于上述,本说明书实施例提供了一种用于生成线程池的配置信息的方法、任务处理方法和装置。利用该方法、装置,可以实现对线程池中的线程的管理,以提高线程池的处理效率和保证线上业务的稳定性。
4.根据本说明书的实施例的一个方面,提供一种用于生成线程池的配置信息的方法,包括:获取目标应用的接口集中各个接口的历史耗时数据;根据各个接口的历史耗时数据,确定各个接口的接口耗时阈值,各个接口的接口耗时阈值用于判定线程在被该接口调用时的超时风险;以及根据各个接口的接口耗时阈值,生成目标应用所对应的线程池的配置信息,线程池包括经由各个接口创建的线程,并且配置信息包括各个接口的标识及对应的接口耗时阈值。
5.根据本说明书的实施例的另一个方面,提供一种任务处理方法,包括:经由目标应用的目标接口接收待处理任务;从目标应用的线程池的与目标接口的线程优先级匹配的线程分区中调用经由目标接口创建的线程,线程池包括资源隔离的多个线程分区,每个线程分区具有指定线程优先级;利用所调用线程执行待处理任务;以及根据所调用线程的线程执行时间以及线程池的配置信息中的目标接口的接口耗时阈值,动态调整所调用线程的所在线程分区,线程池的配置信息包括各个接口的标识及对应的接口耗时阈值,各个接口的接口耗时阈值基于各个接口的历史耗时数据确定。
6.根据本说明书的实施例的又一个方面,提供一种用于生成线程池的配置信息的装置,包括:耗时数据获取单元,被配置为获取目标应用的接口集中各个接口的历史耗时数据;接口阈值确定单元,被配置为根据各个接口的历史耗时数据,确定各个接口的接口耗时阈值,各个接口的接口耗时阈值用于判定线程在被该接口调用时的超时风险;以及配置信
息生成单元,被配置为根据各个接口的接口耗时阈值,生成目标应用所对应的线程池的配置信息,线程池包括经由各个接口创建的线程,并且配置信息包括各个接口的标识及对应的接口耗时阈值。
7.根据本说明书的实施例的再一个方面,提供一种任务处理装置,包括:任务接收单元,被配置为经由目标应用的目标接口接收待处理任务;线程调用单元,被配置为从目标应用的线程池的与目标接口的线程优先级匹配的线程分区中调用经由目标接口创建的线程,线程池包括资源隔离的多个线程分区,每个线程分区具有指定线程优先级;任务执行单元,被配置为利用所调用线程执行待处理任务;线程调整单元,被配置为根据所调用线程的线程执行时间以及线程池的配置信息中的目标接口的接口耗时阈值,动态调整所调用线程的所在线程分区,线程池的配置信息包括各个接口的标识及对应的接口耗时阈值,各个接口的接口耗时阈值基于各个接口的历史耗时数据确定。
8.根据本说明书的实施例的另一方面,提供一种用于生成线程池的配置信息的装置,包括:至少一个处理器,以及与上述至少一个处理器耦合的存储器,以及存储在存储器上的计算机程序,上述至少一个处理器执行计算机程序来实现如上所述的用于生成线程池的配置信息的方法。
9.根据本说明书的实施例的另一方面,提供一种任务处理装置,包括:至少一个处理器,以及与上述至少一个处理器耦合的存储器,以及存储在存储器上的计算机程序,上述至少一个处理器执行上述计算机程序来实现如上所述的任务处理方法。
10.根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的用于生成线程池的配置信息的方法或任务处理方法。
11.根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,上述计算机程序被处理器执行来实现如上所述的用于生成线程池的配置信息的方法或任务处理方法。
附图说明
12.通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
13.图1示出了根据本说明书的实施例的用于生成线程池的配置信息的方法、任务处理方法和装置的示例性架构。
14.图2示出了根据本说明书的实施例的用于生成线程池的配置信息的方法的流程图。
15.图3示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程的一个示例的示意图。
16.图4a示出了根据本说明书的实施例的各个接口的耗时数据分布的确定过程的一个示例的示意图。
17.图4b示出了根据本说明书的实施例的某接口的时序耗时数据的峰值区间集的确定方式的一个示例的示意图。
18.图5示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程的又一
个示例的示意图。
19.图6示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程的再一个示例的示意图
20.图7示出了根据本说明书的实施例的任务处理方法的流程图。
21.图8示出了根据本说明书的实施例的任务处理方法的应用场景的一个示例的示意图。
22.图9示出了根据本说明书的实施例的用于生成线程池的配置信息的装置的一个示例的方框图。
23.图10示出了根据本说明书的实施例的用于生成线程池的配置信息的装置中接口阈值确定单元的一个示例的方框图。
24.图11示出了根据本说明书的实施例的用于生成线程池的配置信息的装置中接口阈值确定模块的一个示例的方框图。
25.图12示出了根据本说明书的实施例的任务处理装置的一个示例的方框图。
26.图13示出了本说明书的实施例的用于生成线程池的配置信息的装置的示意图。
27.图14示出了本说明书的实施例的任务处理装置的示意图。
具体实施方式
28.以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
29.如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
30.在本说明书中,术语“应用”可以指应用软件。一个“应用”通常可以包含多个接口(interface)。每个接口可以通过调用线程池中的线程来执行任务,以实现接口特定的功能。
31.在本说明书中,术语“分布”(distribution)可以用于描述数据中各个值出现的频繁程度。例如,可以使用直方图(histogram)来展示数据集中各个值出现的频数或频率。
32.在本说明书中,术语“核密度估计”(kernel density estimation,kde)是指概率论中用来估计未知的密度函数,属于非参数检验方法之一。相对于采用直方图进行估计,采用核密度估计能够得到平滑的分布,并且可以摆脱分组数量的影响,进而可以更好地界定分布形状。
33.在本说明书中,术语“置信水平”是指总体参数值落在样本统计值某一区间内的概率。从一种概率的陈述方法(即数理统计中的区间估计法)来讲,即估计值与总体参数在一
定允许的误差范围以内,其相应的概率有多大。术语“置信区间”是指在某一置信水平下,样本统计值与总体参数值间误差范围。术语“置信上限”和“置信下限”分别用于指示上述“置信区间”的两个端点。
34.下面将结合附图来详细描述根据本说明书实施例的用于生成线程池的配置信息的方法、任务处理方法和装置。
35.图1示出了根据本说明书实施例的用于生成线程池的配置信息的方法、任务处理方法和装置的示例性架构100。
36.在图1中,网络111、112、113被应用于在终端设备121、122、123、124和应用1服务器131、应用2服务器132以及配置服务器140之间进行互连。
37.网络111、112、113可以是能够对网络实体进行互连的任何类型的网络。网络111、112、113可以是单个网络或各种网络的组合。在覆盖范围方面,网络111、112、113可以是局域网(lan)、广域网(wan)等。在承载介质方面,网络111、112、113可以是有线网络、无线网络等。在数据交换技术方面,网络111、112、113可以是电路交换网络、分组交换网络等。
38.终端设备121、122可以是能够连接到网络111、访问网络111上的服务器或网站、处理数据或信号等的任何类型的电子计算设备。同理,终端设备123、124可以是能够连接到网络112、访问网络112上的服务器或网站、处理数据或信号等的任何类型的电子计算设备。例如,终端设备121、122、123、124可以是台式计算机、笔记本电脑、平板电脑、智能电话等。尽管在图1中仅示出了几个终端设备,但是应当理解,可以有不同数量的终端设备连接到网络111、112。
39.在一种实施方式中,终端设备121、122、123、124可以由用户使用。终端设备121、122、123、124可以包括可为用户提供各种服务的应用客户端(例如应用1客户端1211、应用1客户端1221、应用2客户端1232、应用2客户端1242)。在一些情况下,应用1客户端1211、1221可以与应用1服务器131进行交互。例如,应用1客户端1211、1221可以将用户输入的消息传送到应用1服务器131,并且从应用1服务器131接收与上述消息相关联的响应。同理,应用2客户端1232、1242可以将用户输入的消息传送到应用2服务器132,并且从应用2服务器132接收与上述消息相关联的响应。然而,应当理解,在其它情况下,应用1客户端1211、1221或应用2客户端1232、1242也可以在本地生成对用户输入的消息的响应,而不是与应用1服务器131或应用2服务器132进行交互。
40.在本说明书中,“消息”可以指任何输入信息,例如来自用户输入的查询语句等。上述“消息”可以经过上述应用1客户端1211、应用1客户端1221、应用2客户端1232、应用2客户端1242处理而生成相应的请求,并可以通过网络111、112经由相应接口1、接口2、接口3或接口4传送至应用1服务器131的接口1’、接口2’或应用2服务器132的接口3’、接口4’。应用1服务器131、应用2服务器132可以通过网络113连接到配置服务器140。配置服务器140可以用于支持应用1服务器131、应用2服务器132生成响应的信息,例如可以生成应用1或应用2对应的线程池1311、1321的配置信息141、142。
41.应当理解,图1中所示的所有网络实体都是示例性的,根据具体的应用需求,架构100中可以涉及任何其它网络实体。
42.图2示出了根据本说明书的实施例的用于生成线程池的配置信息的方法200的流程图。
43.如图2所示,在210,获取目标应用的接口集中各个接口的历史耗时数据。
44.在本实施例中,可以通过各种方式获取目标应用的接口集中各个接口的历史耗时数据。作为示例,可以从本地或通信连接的电子设备获取目标应用的接口集中各个接口的历史耗时数据。其中,目标应用可以是预先指定的任意应用,也可以是根据预设规则所确定的应用。上述历史耗时数据可以包括各种用于表征接口的历史响应时间(response time,rt)的数据。例如,上述历史耗时数据可以是某个接口在过去一段时间的平均耗时。再例如,上述历史耗时数据可以是某个接口在过去一段时间内每次响应所对应的响应时间所形成的数据集。
45.需要说明的是,目标应用通常可以包括多个接口。上述接口集可以包括上述目标应用的全部或部分接口,在此不作限定。可以理解,上述历史耗时数据通常对应着应用的标识、接口的标识,可选地还可以对应着接口所包含的函数或方法的标识,从而可以区分各个接口的历史耗时数据。
46.在220,根据各个接口的历史耗时数据,确定各个接口的接口耗时阈值。在本实施例中,各个接口的接口耗时阈值可以用于判定线程在被该接口调用时的超时风险。可以通过各种方法根据步骤210所获取的各个接口的历史耗时数据来确定各个接口的接口耗时阈值。作为示例,若上述接口的历史耗时数据为该接口在过去一段时间的平均耗时,可以将平均耗时乘以一个大于1的系数(例如1.5)所得到的结果确定为该接口的接口耗时阈值。作为又一示例,若上述接口的历史耗时数据为该接口在过去一段时间内每次响应所对应的响应时间所形成的数据集,可以将上述数据集中最大的前10%的响应时间所对应的区分值确定为该接口的接口耗时阈值。例如,若上述数据集中包含10个数据,则可以将该接口的接口耗时阈值确定为上述数据集中最大的数据和第二大的数据之间的一个值。再例如,若上述数据集中包含100个数据,则可以将该接口的接口耗时阈值确定为上述数据集中数值由大至小排列的第10个数据和第11个数据之间的一个值。
47.需要说明的是,可以理解,上述各个接口的历史耗时数据的数据量通常需要达到一定数目,以防止因数据不足而影响所确定的接口耗时阈值的准确性。
48.图3示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程300的一个示例的示意图。在图3的示例中,各个接口的历史耗时数据可以包括该接口在预设历史时段内的时序耗时数据。其中,上述预设历史时段可以根据实际应用场景而确定,例如过去24小时内,过去一周内等。上述时序耗时数据通常用于指每条历史耗时数据中的数值元素按照时间顺序排列。其中,上述数值元素可以用于表示每次响应的响应时间。
49.如图3所示,在310,根据各个接口的历史耗时数据,确定各个接口的耗时数据分布。在本实施例中,针对各个接口的历史耗时数据,可以根据该接口的历史耗时数据中各数值出现的次数,得到该接口的耗时数据分布。从而可以确定各个接口的耗时数据分布。
50.在320,对各个接口的耗时数据分布进行核密度估计处理,以生成各个接口的耗时数据所对应的概率密度分布。可以利用各种常用的核函数(例如高斯曲线、epanechnikov曲线等)对上述所确定的各个接口的耗时数据分布进行密度估计,从而得到各个接口的耗时数据所对应的概率密度分布。可以理解,此处所得到的概率密度分布为通过核密度估计所得到的概率密度函数。
51.在330,根据各个接口的概率密度分布中的与预设置信水平对应的置信上限,确定
各个接口的接口耗时阈值。在本实施例中,对于各个接口,可以确定步骤320所得到的该接口的概率密度分布中的与预设置信水平(例如可以是90%,95%等)对应的置信上限。进而,可以根据所确定的各个接口的置信上限,确定各个接口的接口耗时阈值。作为示例,可以直接将各个接口的置信上限确定为对应的接口耗时阈值。其中,上述预设置信水平可以根据实际需要而灵活设定,此处不作限定。
52.可见,如图3示出的实施例可以根据接口在预设历史时段内的时序耗时数据确定各个接口的耗时数据分布,再利用核密度估计生成对应的概率密度分布,而后根据概率密度分布中的与预设置信水平对应的置信上限来确定各个接口的接口耗时阈值。与现有技术中将接口的响应时间进行变化不明显、围绕中心值上下浮动的假设相比,更为客观地考虑到接口每次响应由于内、外部资源情况不同、所执行的任务的参数不同等所引起的同一接口的每次响应时间会存在一定跨度的情况,从基于核密度估计来确定接口粒度的接口耗时阈值的方法,使得接口耗时阈值的确定更加合理,进而有助于保证线上系统的稳定性。
53.在本实施例的一些可选的实现方式中,上述预设兜底阈值可以根据实际应用场景而预先设定,也可以根据过去一段时间所确定的接口耗时阈值的数值水平(例如平均值)而确定,此处不做限定。针对各个接口,可以将该接口所对应的概率密度分布中的与预设置信水平对应的置信上限与预设兜底阈值的较大值确定为该接口的接口耗时阈值。
54.需要说明的是,上述预设兜底阈值可以是针对所有接口采用同一个值,也可以针对不同接口采用不同值,此处亦不做限定。
55.可见,上述实现方式提供了设置兜底阈值来确定接口耗时阈值的策略,可以有效降低因数据量不足或计算方法的精度有限而导致的估计偏差所带来的不利影响。
56.图4a示出了根据本说明书的实施例的各个接口的耗时数据分布的确定过程400的一个示例的示意图。
57.如图4a所示,在410,确定各个接口的时序耗时数据中的峰值区间集。在本实施例中,可以通过各种峰值区间检测方法确定各个接口的时序耗时数据中的峰值区间集。作为示例,图4b示出了根据本说明书的实施例的某接口的时序耗时数据的峰值区间集的确定方式的一个示例的示意图。例如,可以利用预设的分位数(例如75%)来确定上述时序耗时数据的峰值区间集。可以理解,针对各个接口,该接口的峰值区间集中的耗时数据可以理解为从该接口的时序耗时数据中筛选出的耗时数据的局部较大值。
58.在420,对各个接口的峰值区间集中的各个峰值区间内的耗时数据进行重采样。在本实施例中,可以通过各种采样方式(例如随机采样、分层采样、权重采样等)对上述步骤410所确定的各个接口的峰值区间集中的各个峰值区间内的耗时数据进行重采样。
59.在430,根据重采样后的各个接口的耗时数据,确定各个接口的耗时数据分布。在本实施例中,可以通过各种方式根据步骤420所得到的重采样后的各个接口的耗时数据,确定各个接口的耗时数据分布。
60.可见,图4a示出的实施例可以通过对各个接口的耗时数据的峰值区间集中的各个峰值区间内的耗时数据进行重采样,进而确定各个接口的耗时数据分布。这更加体现了“接口耗时阈值”作为超时判定的依据时理应对于正常响应耗时中的较大值给予更多考量的思想,以避免将本应耗时较长的任务误判为超时,从而为提高所确定的接口耗时阈值的合理性提供技术基础。
61.特别地,在实际场景中由于大量用户的各种操作之间存在相互影响,不符合高斯分布的独立性假设。因而现有技术中针对所有接口的平均耗时数据进行统计所呈现的结果往往与高斯分布存在较大偏差。而发明人发现,类比于中心极限定理,当采用随机采样方式对上述峰值区间内的耗时数据进行重采样时,针对各个接口,所得到的该接口的耗时数据分布恰恰近似于正态分布,因而在此基础上采用高斯核进行核密度估计处理,相比于上述现有技术的方法,更符合实际情况,因而具有更高的准确性。
62.图5示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程500的又一个示例的示意图。
63.如图5所示,在510,根据各个接口的概率密度分布中的与预设置信水平对应的置信上限,确定各个接口在预设历史时段内的时段耗时阈值。在本实施例中,对于各个接口,可以确定该接口的概率密度分布中的与预设置信水平(例如可以是90%,95%等)对应的置信上限。进而,可以根据所确定的各个接口的置信上限,确定各个接口在预设历史时段内的时段耗时阈值。其中,上述时段耗时阈值用于表征针对上述预设历史时段所计算的接口耗时阈值。
64.在520,从预先存储的各个接口的时段耗时阈值中选取对应的预设时间区间与预设历史时段相关联的目标数目个时段耗时阈值。在本实施例中,可以预先存储有各个接口在多个预设历史时段的时段耗时阈值。作为示例,当预设历史时段为近24小时内,上述与预设历史时段相关联的预设时间区间例如可以为近一周内、近一个月内。可见,预设时间区间与预设历史时段相关联的目标数目个时段耗时阈值可以是近一周内、近一个月内每日的时段耗时阈值。可选地,还可以将上述步骤510所确定的各个接口在上述预设历史时段内分别对应的时段耗时阈值进行存储,相应地,可以同时存储对应的接口标识和预设历史时段,以供后续随时间推移进行时段耗时阈值的选取。上述“与预设历史时段相关联”可以根据实际应用场景而确定,例如与上述预设历史时段接续、与上述预设历史时段属于相同时段(比如都属于10:00~12:00)等。
65.在530,针对各个接口,根据所选取的目标数目个时段耗时阈值和所确定的时段耗时阈值,确定该接口的接口耗时阈值。在本实施例中,针对各个接口,可以通过各种方式根据上述步骤520所选取的目标数目个时段耗时阈值和所确定的时段耗时阈值,确定该接口的接口耗时阈值。作为示例,可以采用加权求和、时间序列预测等方式确定各个接口的接口耗时阈值。
66.可见,图5示出的实施例可以综合与预设历史时段相关联的多个时段耗时阈值确定各个接口的接口耗时阈值,从而进一步提升所确定的接口耗时阈值的合理性,进而为增强整个系统的鲁棒性提供技术基础。
67.在本实施例的一些可选的实现方式中,图6示出了根据本说明书的实施例的各个接口的接口耗时阈值的确定过程600的再一个示例的示意图。
68.如图6所示,在610,针对各个接口,根据预设降噪条件对所选取的目标数目个时段耗时阈值和所确定的时段耗时阈值进行降噪处理,生成该接口的降噪后的时段耗时阈值集。其中,上述降噪处理可以包括各种对所选取的目标数目个时段耗时阈值进行进一步筛除的处理方式。作为示例,上述预设降噪条件可以包括但不限于以下至少一项:子时段筛除条件,异常值筛除条件。其中,上述子时段筛除条件例如可以是所选取的时段耗时阈值对应
的时段属于预设筛除时间区间(例如“6.18”、“11.11”等大促期间)。上述异常值筛除条件例如可以是时段耗时阈值在预设常规区间之外(即出现特别大或特别小的值)。
69.在620,针对各个接口,根据降噪后的时段耗时阈值集,确定该接口的接口耗时阈值。作为示例,可以采用加权求和、时间序列预测等方式确定各个接口的接口耗时阈值。
70.可见,图6示出的实施例提供了在对所选取的时段耗时阈值进行降噪处理的基础上确定各个接口的接口耗时阈值的方法,减小了异常值对所确定的最终结果的不利影响,从而进一步提升了所确定的接口耗时阈值的准确性。
71.回到图2,在230处,根据各个接口的接口耗时阈值,生成目标应用所对应的线程池的配置信息。其中,上述线程池可以包括经由各个接口创建的线程。并且上述配置信息可以包括各个接口的标识及对应的接口耗时阈值。作为示例,上述目标应用可以包括6个接口。上述线程池的配置信息可以包括上述6个接口的标识:facade1,facade2,facade3,facade4,facade5,facade6。相应地,对应的接口耗时阈值可以分别为:35ms,105ms,77ms,31ms,264ms,231ms。可选地,上述线程池的配置信息还可以包括但不限于以下至少一项:接口所属的应用的标识(例如上述目标应用的名称),接口所实现的功能(例如函数名、java中的方法名),接口所能创建的最大线程数。
72.在本实施例的一些可选的实现方式中,上述线程池可以包括资源隔离的多个线程分区。上述每个线程分区可以具有指定线程优先级,并且每个线程分区中的线程可供具有对应线程优先级的接口调用。作为示例,上述线程池可以包括第一线程分区和第二线程分区。上述第一线程分区中的线程的优先级通常高于上述第二线程分区中的线程的优先级。并且,上述目标应用所包括的6个接口例如可以包括具有较高优先级的接口facade1,接口facade2,接口facade3和具有较低优先级的接口facade4,接口facade5,接口facade6。从而,上述第一线程分区中的线程可供接口facade1,接口facade2,接口facade3调用;上述第二线程分区中的线程可供接口facade4,接口facade5,接口facade6调用。需要说明的是,上述接口的优先级例如可以根据接口所对应的业务类型(例如支付业务等要求高可靠性的业务类型和普通业务类型等)而确定,也可以根据接口的历史耗时水平而确定,此处不作具体限定。可选地,上述线程池的配置信息还可以包括接口与线程分区之间的对应关系。
73.在这些实现方式中,还可以继续执行步骤240:将所生成的线程池的配置信息发送至目标应用,以使目标应用在经由接口调用线程池中的线程执行任务时,根据所调用线程的线程执行时间和配置信息中的该接口的接口耗时阈值动态调整所调用线程的所在线程分区。其中,上述目标应用可以经由接口调用上述线程池中的线程以执行相应的任务。通常,上述目标应用可以根据所调用线程的线程执行时间和配置信息中的该接口的接口耗时阈值动态调整所调用线程的所在线程分区。作为示例,可以将所调用线程的线程执行时间大于该接口的接口耗时阈值的线程调整至指定线程优先级更低的其他线程分区。
74.可见,上述可选的实现方式提供了将所生成的线程池的配置信息发送至目标应用,以使目标应用根据所调用线程的线程执行时间和配置信息中的该接口的接口耗时阈值动态调整所调用线程的所在线程分区的方案,从而避免了由于某个线程出现故障而导致整个线程池的线程堵塞,因而提升了线上服务系统的稳定性。
75.可选地,在一些实施例中,在根据所调用线程的线程执行时间和配置信息中的该接口的接口耗时阈值动态调整所调用线程的所在线程分区时,可以根据所调用线程的线程
执行时间、配置信息中的该接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区。上述线程分区的分区参考阈值可以用于划分线程池的相邻线程分区。例如,线程池可以包括第一分区和第二分区。分区参考阈值可以用于区分上述第一分区和第二分区。再例如,线程池可以包括第一分区、第二分区和第三分区。从而可以有用于区分上述第一分区和第二分区的上分区参考阈值和用于区分上述第二分区和第三分区的下分区参考阈值。上述线程分区的分区参考阈值可以通过各种方式确定。例如,上述线程分区的分区参考阈值可以根据上述目标应用的接口集中各个接口的接口耗时阈值和预设分位数而确定。再例如,上述线程分区的分区参考阈值可以是预先设置的。
76.在这些实施例中,作为示例,可以在确定所调用线程(例如上述第一分区中的线程)的线程执行时间大于配置信息中的该接口的接口耗时阈值后,进一步确定所调用线程的线程执行时间是否大于线程分区的分区参考阈值(例如上述上分区参考阈值),当大于线程分区的分区参考阈值时将所调用线程调整至相应分区参考阈值所划分的线程优先级较低的线程分区(例如上述第二分区)。
77.可见,上述可选的实现方式提供了将所生成的线程池的配置信息发送至目标应用,以使目标应用根据所调用线程的线程执行时间、配置信息中的该接口的接口耗时阈值以及线程分区的分区参考阈值动态调整所调用线程的所在线程分区的方案,从而在尽量保证任务执行完毕的前提下,避免因某个线程耗时过长而引起线程堵塞,丰富了动态调整所调用线程的所在线程分区的方式,并且能够兼顾任务完成率和系统稳定性。
78.在本实施例的一些可选的实现方式中,上述多个线程分区可以包括线程优先级依次降低的快速响应区、常规响应区和异常处理区。上述配置信息还可以包括用于划分快速响应区和常规响应区的第一分区参考阈值,用于划分常规响应区和异常处理区的第二分区参考阈值以及异常处理超时阈值。上述第一分区参考阈值可以基于各个接口的接口耗时阈值和分区线程占比确定。其中,上述分区线程占比可以为上述快速响应区和上述常规响应区的线程数目之间的比值。作为示例,当上述占比为3:7时,上述第一分区参考阈值可以为上述各个接口的接口耗时阈值由小至大排列的前30%中最后一个(例如共有50个接口,第15个)接口耗时阈值。上述第二分区参考阈值和异常处理超时阈值(例如2000ms)可以根据上述目标应用的接口集中各个接口的接口耗时阈值而确定(例如可以是最大的接口耗时阈值),也可以由技术人员预先设置的。需要说明的是,上述第一分区参考阈值、第二分区参考阈值和异常处理超时阈值通常是接口无关的(即针对各个接口都是相同的值),从而通过上述接口无关的值和接口粒度的接口耗时阈值之间的配合,形成更加灵活、合理的线程动态调整方案。
79.可见,利用上述可选的实现方式,提供了将线程池具体划分为线程优先级依次降低的快速响应区、常规响应区和异常处理区的方案,以及配置信息还包括用于划分快速响应区和常规响应区的第一分区参考阈值,用于划分常规响应区和异常处理区的第二分区参考阈值以及异常处理超时阈值,第一分区参考阈值基于各个接口的接口耗时阈值和分区线程占比确定。从而提供了一种完整的、更加灵活、合理的线程动态调整方案。
80.利用图1-图6中公开的用于生成线程池的配置信息的方法,可以通过所获取的目标应用的接口集中各个接口的历史耗时数据,确定用于判定线程在被该接口调用时的超时风险的各个接口的接口耗时阈值,生成包含接口粒度的接口耗时阈值的线程池的配置信
息。与传统的针对整个应用所对应的线程池使用统一的超时判定阈值相比,通过将判断线程超时的阈值从应用层面下钻到接口层面,对每个接口单独进行分析,采用接口粒度的接口耗时阈值可以有效区分实际应用场景中不同接口之间的耗时差异,有效减少因“一刀切”而引起的误判,从而提高线上服务系统的稳定性。
81.图7示出了根据本说明书的实施例的任务处理方法700的流程图。
82.如图7所示,在710,经由目标应用的目标接口接收待处理任务。其中,上述目标接口可以是预先指定的任意接口(例如接口3、接口5),也可以是根据预设规则所确定的接口(例如接收到某一类型的待处理任务的接口)。上述待处理任务可以包括各种能够由上述目标应用的目标接口所完成的任务,例如支付业务中的查询任务、修改任务等。
83.在720,从目标应用的线程池的与目标接口的线程优先级匹配的线程分区中调用经由目标接口创建的线程。其中,上述线程池可以包括资源隔离的多个线程分区。每个线程分区可以具有指定线程优先级。上述线程池的相关内容可以参考如图2所述的实施例中步骤230的可选的实现方式中的相应描述,此处不再赘述。可以理解,当上述线程池中不存在空闲线程且线程数量允许继续创建线程时,上述目标接口可以在与目标接口的线程优先级匹配的线程分区中创建线程。当上述线程池中存在由上述目标接口所创建的空闲线程时,上述目标接口可以直接调用经由目标接口创建的线程。
84.在730,利用所调用线程执行待处理任务。
85.在740,根据所调用线程的线程执行时间以及线程池的配置信息中的目标接口的接口耗时阈值,动态调整所调用线程的所在线程分区。其中,上述线程池的配置信息可以包括各个接口的标识及对应的接口耗时阈值。上述各个接口的接口耗时阈值可以基于各个接口的历史耗时数据确定。上述内容可以参考如图2所述的实施例的可选的实现方式步骤240中的相应描述,此处不再赘述。具体地,可以通过设置监听程序来监听线程执行时间是否超过目标接口的接口耗时阈值。
86.在本实施例的一些可选的实现方式中,还可以根据所调用线程的线程执行时间、线程池的配置信息中的目标接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区。上述内容可以参考如图2所述的实施例的可选的实现方式步骤240的可选的实现方式中的相应描述,此处不再赘述。
87.可见,利用上述可选的实现方式,提供了根据所调用线程的线程执行时间、线程池的配置信息中的目标接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区的方案,从而在尽量保证任务执行完毕的前提下,避免因某个线程耗时过长而引起线程堵塞,丰富了动态调整所调用线程的所在线程分区的方式,并且能够兼顾任务完成率和系统稳定性。
88.在本实施例的一些可选的实现方式中,上述多个线程分区可以包括线程优先级依次降低的快速响应区、常规响应区和异常处理区。上述线程池的配置信息还可以包括用于划分快速响应区和常规响应区的第一分区参考阈值,用于划分常规响应区和异常处理区的第二分区参考阈值以及异常处理超时阈值。上述第一分区参考阈值可以基于各个接口的接口耗时阈值和分区线程占比确定。上述内容可以参考如图2所述的实施例的可选的实现方式步骤240的可选的实现方式中的相应描述,此处不再赘述。通常,当所调用线程的线程执行时间大于上述异常处理超时阈值时,可以销毁该线程。
89.可选地,上述第一分区参考阈值、第二分区参考阈值中的至少一项可以应用于上述根据所调用线程的线程执行时间、线程池的配置信息中的目标接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区的步骤740的可选的实现方式,从而通过上述接口无关的第一分区参考阈值、第二分区参考阈值和接口粒度的接口耗时阈值之间的配合,形成更加灵活、合理的线程动态调整方案。
90.在本实施例的一些可选的实现方式中,上述配置信息可以根据如图2-图6中公开的用于生成线程池的配置信息的方法而生成。
91.图8示出了根据本说明书的实施例的任务处理方法的应用场景800的一个示例的示意图。
92.如图8所示,用户可以通过终端设备810在应用1客户端811上进行点击操作,以生成各种相应的请求。网络820可以将应用1客户端811所生成的请求发送至应用1(例如可以是云端微服务应用)服务器830。应用1的一个或多个接口(例如,属于i类接口的接口facade1,facade2,facade3,属于ii类接口的接口facade4,facade5,facade6中的一个或多个)可以接收与上述请求相对应的待处理任务。上述应用1的线程池831可以包括资源隔离的多个线程分区(例如第1分区、第2分区、第3分区)。上述第1分区、第2分区、第3分区中的线程优先级例如可以依次降低。上述线程池831的配置信息可以包括i类接口阈值配置表832和ii类接口阈值配置表833。
93.作为示例,当i类接口(例如接口facade2)接收到待处理任务时,可以从上述线程池831的第1分区中调用经由该接口(例如接口facade2)创建的线程。而后,该接口可以利用所调用线程执行上述待处理任务。当监听程序发现该接口所调用线程的线程执行时间超过配置信息中该接口的接口耗时阈值(例如105ms)且待处理任务仍未执行完毕,可以将该线程标记为超时。之后,应用1可以通过各种方式将上述标记为超时的线程降级至上述第2分区。例如,应用1可以直接将上述标记为超时的线程降级至上述第2分区。再例如,应用1可以将上述标记为超时的线程的线程执行时间与用于划分第1分区和第2分区的分区参考阈值进行比较,在上述线程执行时间超过上述分区参考阈值时将上述标记为超时的线程降级至第2分区。
94.作为又一示例,当ii类接口(例如接口facade5)接收到待处理任务时,可以从上述线程池831的第2分区中调用经由该接口(例如接口facade5)创建的线程。而后,该接口可以利用所调用线程执行上述待处理任务。当监听程序发现该接口所调用线程的线程执行时间超过配置信息中该接口的接口耗时阈值(例如264ms)且待处理任务仍未执行完毕,可以将该线程标记为超时。之后,应用1可以通过各种方式将上述标记为超时的线程降级至上述第3分区。例如,应用1可以直接将上述标记为超时的线程降级至上述第3分区。
95.利用图7-图8中公开的任务处理方法,可以通过从目标应用的线程池的与接收到待处理任务的接口的线程优先级匹配的线程分区中调用经由该接口创建的线程,并且根据所调用线程的线程执行时间以及包括各个接口的标识及对应的接口耗时阈值的线程池的配置信息中的该接口的接口耗时阈值,动态调整所调用线程的所在线程分区。与传统的针对整个应用所对应的线程池使用统一的超时判定阈值相比,采用接口粒度的接口耗时阈值可以有效区分实际应用场景中不同接口之间的耗时差异,有效减少因“一刀切”而引起的误判,从而提高线上服务系统的稳定性。
96.并且,通过将线程池划分为多个资源隔离的线程分区,且每个线程分区具有指定线程优先级,可以将相应的接口接入匹配的线程分区以调用相应的线程,从而可以在提高任务处理效率的基础上保证线上服务系统的稳定性。
97.图9示出了根据本说明书的实施例的用于生成线程池的配置信息的装置900的一个示例的方框图。该装置实施例可以与图2-图6所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
98.如图9所示,用于生成线程池的配置信息的装置900可以包括耗时数据获取单元910、接口阈值确定单元920和配置信息生成单元930。
99.耗时数据获取单元910被配置为获取目标应用的接口集中各个接口的历史耗时数据。耗时数据获取单元910的操作可以参考上面参照图2描述的210的操作。
100.接口阈值确定单元920被配置为根据各个接口的历史耗时数据,确定各个接口的接口耗时阈值。其中,各个接口的接口耗时阈值可以用于判定线程在被该接口调用时的超时风险。接口阈值确定单元920的操作可以参考上面参照图2描述的220的操作。
101.在一个示例中,各个接口的历史耗时数据可以包括该接口在预设历史时段内的时序耗时数据。图10示出了根据本说明书的实施例的用于生成线程池的配置信息的装置900中接口阈值确定单元920的一个示例的方框图。接口阈值确定单元920可以包括:数据分布确定模块1010被配置为根据各个接口的历史耗时数据,确定各个接口的耗时数据分布;核密度估计模块1020被配置为对各个接口的耗时数据分布进行核密度估计处理,以生成各个接口的耗时数据所对应的概率密度分布;接口阈值确定模块1030被配置为根据各个接口的概率密度分布中的与预设置信水平对应的置信上限,确定各个接口的接口耗时阈值。接口阈值确定单元920的操作可以参考上面参照图3描述的各个接口的接口耗时阈值的确定过程300的操作。
102.在一个示例中,数据分布确定模块1010可以按照下述方式确定各个接口的耗时数据分布:确定各个接口的时序耗时数据中的峰值区间集;对各个接口的峰值区间集中的各个峰值区间内的耗时数据进行重采样;以及根据重采样后的各个接口的耗时数据,确定各个接口的耗时数据分布。数据分布确定模块1010的操作可以参考上面参照图4a描述的各个接口的耗时数据分布的确定过程400的操作。
103.在一个示例中,图11示出了根据本说明书实施例的用于生成线程池的配置信息的装置900中接口阈值确定模块1030的一个示例的方框图。接口阈值确定模块1030可以包括:时段阈值确定子模块1110被配置为根据各个接口的概率密度分布中的与预设置信水平对应的置信上限,确定各个接口在预设历史时段内的时段耗时阈值;时段阈值选取子模块1120被配置为从预先存储的各个接口的时段耗时阈值中选取对应的预设时间区间与预设历史时段相关联的目标数目个时段耗时阈值;接口阈值确定子模块1130被配置为针对各个接口,根据所选取的目标数目个时段耗时阈值和所确定的时段耗时阈值,确定该接口的接口耗时阈值。接口阈值确定模块1030的操作可以参考上面参照图5描述的各个接口的接口耗时阈值的确定过程500的操作。
104.在一个示例中,接口阈值确定子模块1130可以按照下述方式确定各个接口的接口耗时阈值:针对各个接口,根据预设降噪条件对所选取的目标数目个时段耗时阈值和所确定的时段耗时阈值进行降噪处理,生成该接口的降噪后的时段耗时阈值集;针对各个接口,
根据降噪后的时段耗时阈值集,确定该接口的接口耗时阈值。接口阈值确定子模块1130的操作可以参考上面参照图6描述的各个接口的接口耗时阈值的确定过程600的操作。
105.在一个示例中,接口阈值确定模块1030可以按照下述方式确定各个接口的接口耗时阈值:针对各个接口,将该接口所对应的概率密度分布中的与预设置信水平对应的置信上限与预设兜底阈值的较大值确定为该接口的接口耗时阈值。接口阈值确定模块1030的操作可以参考上面参照图3描述的各个接口的接口耗时阈值的确定过程300中可选的实现方式中的操作。
106.回到图9,配置信息生成单元930可以被配置为根据各个接口的接口耗时阈值,生成目标应用所对应的线程池的配置信息。其中,上述线程池可以包括经由各个接口创建的线程。并且上述配置信息可以包括各个接口的标识及对应的接口耗时阈值。配置信息生成单元930的操作可以参考上面参照图2描述的步骤230的操作。
107.在一个示例中,上述线程池可以包括资源隔离的多个线程分区。每个线程分区可以具有指定线程优先级,并且每个线程分区中的线程可供具有对应线程优先级的接口调用。该用于生成线程池的配置信息的装置900还可以包括:配置信息发送单元(图中未示出),被配置为将所生成的线程池的配置信息发送至上述目标应用,以使目标应用在经由接口调用线程池中的线程执行任务时,根据所调用线程的线程执行时间和配置信息中的该接口的接口耗时阈值动态调整所调用线程的所在线程分区。配置信息发送单元的操作可以参考上面参照图2描述的步骤240的操作。
108.在一个示例中,上述配置信息发送单元可以进一步被配置为:将所生成的线程池的配置信息发送至目标应用,以使目标应用在经由接口调用线程池中的线程执行任务时,根据所调用线程的线程执行时间、配置信息中的该接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区。配置信息发送单元的操作可以参考上面参照图2描述的步骤240的可选的实现方式的相应操作。
109.在一个示例中,上述多个线程分区可以包括线程优先级依次降低的快速响应区、常规响应区和异常处理区。配置信息还可以包括用于划分快速响应区和常规响应区的第一分区参考阈值,用于划分常规响应区和异常处理区的第二分区参考阈值以及异常处理超时阈值。上述第一分区参考阈值可以基于各个接口的接口耗时阈值和分区线程占比确定。上述示例中的具体描述可以参考上面参照图2描述的步骤240的可选的实现方式中的相应描述。
110.图12示出了根据本说明书的实施例的任务处理装置1200的一个示例的方框图。该装置实施例可以与图7-图8所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
111.如图12所示,任务处理装置1200包括任务接收单元1210、线程调用单元1220、任务执行单元1230和线程调整单元1240。
112.任务接收单元1210被配置为经由目标应用的目标接口接收待处理任务。任务接收单元1210的操作可以参考上面参照图7描述的710的操作。
113.线程调用单元1220被配置为从目标应用的线程池的与目标接口的线程优先级匹配的线程分区中调用经由目标接口创建的线程。其中,上述线程池可以包括资源隔离的多个线程分区。每个线程分区可以具有指定线程优先级。线程调用单元1220的操作可以参考
上面参照图7描述的720的操作。
114.任务执行单元1230被配置为利用所调用线程执行待处理任务。任务执行单元1230的操作可以参考上面参照图7描述的730的操作。
115.线程调整单元1240被配置为根据所调用线程的线程执行时间以及线程池的配置信息中的目标接口的接口耗时阈值,动态调整所调用线程的所在线程分区。其中,上述线程池的配置信息可以包括各个接口的标识及对应的接口耗时阈值。各个接口的接口耗时阈值可以基于各个接口的历史耗时数据确定。线程调整单元1240的操作可以参考上面参照图7描述的740的操作。
116.在一个示例中,上述线程调整单元1240可以按照下述方式动态调整所调用线程的所在线程分区:根据所调用线程的线程执行时间、线程池的配置信息中的目标接口的接口耗时阈值以及线程分区的分区参考阈值,动态调整所调用线程的所在线程分区。线程调整单元1240的操作可以参考上面参照图7描述的所调用线程的所在线程分区的动态调整过程740中可选的实现方式的操作。
117.在一个示例中,上述多个线程分区可以包括线程优先级依次降低的快速响应区、常规响应区和异常处理区。配置信息还可以包括用于划分快速响应区和常规响应区的第一分区参考阈值,用于划分常规响应区和异常处理区的第二分区参考阈值以及异常处理超时阈值。上述第一分区参考阈值可以基于各个接口的接口耗时阈值和分区线程占比确定。上述示例中的具体描述可以参考上面参照图2描述的步骤240的可选的实现方式中的相应描述。
118.在一个示例中,上述配置信息根据如图2-图6中公开的用于生成线程池的配置信息的方法而生成。
119.以上参照图1到图12,对根据本说明书实施例的用于生成线程池的配置信息的方法和装置、以及任务处理方法和装置的实施例进行了描述。
120.本说明书实施例的用于生成线程池的配置信息的装置和任务处理装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于生成线程池的配置信息的装置和任务处理装置例如可以利用电子设备实现。
121.图13示出了本说明书的实施例的用于生成线程池的配置信息的装置1300的示意图。
122.如图13所示,用于生成线程池的配置信息的装置1300可以包括至少一个处理器1310、存储器(例如,非易失性存储器)1320、内存1330和通信接口1340,并且至少一个处理器1310、存储器1320、内存1330和通信接口1340经由总线1350连接在一起。至少一个处理器1310执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
123.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1310:获取目标应用的接口集中各个接口的历史耗时数据;根据各个接口的历史耗时数据,确定各个接口的接口耗时阈值,各个接口的接口耗时阈值用于判定线程在被该接口调用时的超时风险;以及根据各个接口的接口耗时阈值,生成目标应用所对应的线程池
的配置信息,线程池包括经由各个接口创建的线程,并且配置信息包括各个接口的标识及对应的接口耗时阈值。
124.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1310进行本说明书的各个实施例中以上结合图2-图6描述的各种操作和功能。
125.根据一个实施例,提供了一种例如计算机可读介质的程序产品。计算机可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被计算机执行时,使得计算机执行本说明书的各个实施例中以上结合图2-图6描述的各种操作和功能。
126.图14示出了本说明书的实施例的任务处理装置1400的示意图。
127.如图14所示,任务处理装置1400可以包括至少一个处理器1410、存储器(例如,非易失性存储器)1420、内存1430和通信接口1440,并且至少一个处理器1410、存储器1420、内存1430和通信接口1440经由总线1450连接在一起。至少一个处理器1410执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
128.在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1410:经由目标应用的目标接口接收待处理任务;从目标应用的线程池的与目标接口的线程优先级匹配的线程分区中调用经由目标接口创建的线程,线程池包括资源隔离的多个线程分区,每个线程分区具有指定线程优先级;利用所调用线程执行待处理任务;以及根据所调用线程的线程执行时间以及线程池的配置信息中的目标接口的接口耗时阈值,动态调整所调用线程的所在线程分区,线程池的配置信息包括各个接口的标识及对应的接口耗时阈值,各个接口的接口耗时阈值基于各个接口的历史耗时数据确定。
129.应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1410进行本说明书的各个实施例中以上结合图7-图8描述的各种操作和功能。
130.根据一个实施例,提供了一种例如计算机可读介质的程序产品。计算机可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被计算机执行时,使得计算机执行本说明书的各个实施例中以上结合图7-图8描述的各种操作和功能。
131.具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
132.在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
133.本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如java、scala、smalltalk、eiffel、jade、emerald、c++、c#、vb、net以及python等,常规程序化编程语言如c语言、visual basic 2003、perl、cobol 2002、php以及abap,动态编程语言如python、ruby和groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(lan)或广域网(wan),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(saas)。
134.可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
135.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
136.上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
137.在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
138.以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
139.本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1