CN106775984B - 一种管理线程池的方法和装置 - Google Patents

一种管理线程池的方法和装置 Download PDF

Info

Publication number
CN106775984B
CN106775984B CN201611219265.6A CN201611219265A CN106775984B CN 106775984 B CN106775984 B CN 106775984B CN 201611219265 A CN201611219265 A CN 201611219265A CN 106775984 B CN106775984 B CN 106775984B
Authority
CN
China
Prior art keywords
thread pool
task
connection relation
thread
exclusive
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
Application number
CN201611219265.6A
Other languages
English (en)
Other versions
CN106775984A (zh
Inventor
林建华
许永峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruijie Networks Co Ltd
Original Assignee
Ruijie Networks Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ruijie Networks Co Ltd filed Critical Ruijie Networks Co Ltd
Priority to CN201611219265.6A priority Critical patent/CN106775984B/zh
Publication of CN106775984A publication Critical patent/CN106775984A/zh
Application granted granted Critical
Publication of CN106775984B publication Critical patent/CN106775984B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种管理线程池的方法和装置,涉及通信技术领域领域,用以解决现有技术南向插件与网元设备的交互过程中因突发社会事件等使报文激增而导致的网络堵塞问题。该方法包括:线程池管理装置将第一南向插件与一网元设备建立的连接关系绑定到第一南向插件的一个专属线程池,并将连接关系的第一任务***到专属线程池;获取连接关系的第一流量参数,并当连接关系的第一流量参数满足使用共享线程池条件时,将连接关系绑定到一个共享线程池,以便将连接关系的第二任务***到共享线程池;在专属线程池上连接关系的第一任务执行完后,解除连接关系与专属线程池的绑定关系,并唤醒共享线程池的工作线程来执行共享线程池上连接关系的第二任务。

Description

一种管理线程池的方法和装置
技术领域
本发明涉及通信技术领域,尤其涉及一种管理线程池的方法和装置。
背景技术
软件定义网络(Sofeware Defined Networking,简称SDN)是一种新兴的基于软件的网络架构及技术,其最大的特点在于具有耦合的控制平面与数据平面、支持集中化的网络状态控制、实现底层网络设施对上层应用的透明。正如SDN的名字所言,它具有灵活的软件编程能力,使得网络的自动化管理和控制能力获得了空前的提升,能够有效地解决当前网络***所要面临的资源规模扩展受限、组网灵活性差、难以快速满足业务需求等问题。
SDN包括:控制器、物理层、应用层、南向插件(也叫南向接口)、北向插件(也叫北向接口)。其中,控制器集中管理网络中所有设备,虚拟整个网络为资源池,根据用户不同的需求以及全局网络拓扑,灵活动态的分配资源。SDN控制器具有网络的全局视图,负责管理整个网络:对下层,通过标准的协议与基础网络进行通信;对上层,通过开放接口向应用层提供对网络资源的控制能力。物理层是硬件设备层,专注于单纯的数据、业务物理转发,关注的是与控制层的安全通信,其处理性能一定要高,以实现高速数据转发。SDN应用层通过控制层提供的编程接口对底层设备进行编程,把网络的控制权开放给用户,基于开发各种业务应用,实现丰富多彩的业务创新。南向插件是物理设备与控制器信号传输的通道,相关的设备状态、数据流表项和控制指令都需要经由SDN的南向接口传达,实现对设备管控。北向插件是通过控制器向上层业务应用开放的接口,目的是使得业务应用能够便利地调用底层的网络资源和能力,其直接为业务应用服务的,其设计需要密切联系业务应用需求,具有多样化的特征。
在SDN网络中,SDN控制器通过南向插件与网元设备的交互,实现控制器对网元设备的配置和管理,以及对网元设备报文转发行为的控制。网络总是***的,一个突发社会事件,一次网络攻击,都会使南向插件和网元设备的交互报文数量激增,流量突然增大,从而导致网络堵塞,影响网络效率。
发明内容
本发明的实施例提供一种管理线程池的方法和装置,用以解决现有技术南向插件与网元设备的交互过程中因突发社会事件等使报文激增而导致的网络堵塞问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种管理线程池的方法,包括:
线程池管理装置将第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池,并将所述连接关系的第一任务***到所述专属线程池,以便所述专属线程池的工作线程执行所述连接关系的第一任务,所述第一南向插件的专属线程池为仅供所述第一南向插件使用的线程池;
获取所述连接关系的第一流量参数,并当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,以便将所述连接关系的第二任务***到所述共享线程池,所述共享线程池为至少供所述第一南向插件使用的线程池,该第二任务为在所述连接关系绑定到所述共享线程池之后到来的任务;
在所述专属线程池上所述连接关系的第一任务执行完后,解除所述连接关系与所述专属线程池的绑定关系,并唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务。
第二方面,本发明实施例提供了一种管理线程池的装置,该装置包括:
绑定模块,用于将第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池;
***模块,用于将所述连接关系的第一任务***到所述绑定模块绑定的所述专属线程池,以便所述专属线程池的工作线程执行所述连接关系的第一任务,所述第一南向插件的专属线程池为仅供所述第一南向插件使用的线程池;
获取模块,用于获取所述连接关系的第一流量参数;
所述绑定模块,还用于当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,以便将所述连接关系的第二任务***到所述共享线程池,所述共享线程池为至少供所述第一南向插件使用的线程池,该第二任务为在所述连接关系绑定到所述共享线程池之后到来的任务;
解除模块,用于在所述专属线程池上所述连接关系的第一任务执行完后,解除所述连接关系与所述专属线程池的绑定关系;
唤醒模块,用于唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务。
本发明实施例提供了一种管理线程池的方法和装置,将第一南向插件与一网元设备的连接关系绑定到一个专属线程池,一个专属线程池上绑定了第一南向插件的多个连接关系,并获取该连接关系的第一流量参数,根据第一流量参数判断是否需要将该连接关系绑定到一共享线程池上。一个专属线程池上绑定了第一南向插件的多个连接关系,而一个共享线程池上只绑定一个连接关系,与连接关系是一一对应的关系。当一连接关系的报文量大时,如果仍使用专属线程池处理该链接的任务,可能会导致网络都塞问题,而将该连接关系从专属线程池绑定到共享线程池上,共享线程池可以集中处理该连接关系的任务,提高网络效率。从而解决在南向插件与网元设备的交互过程中因突发社会事件等使报文激增而导致的网络堵塞问题。
第三方面,本发明实施例提供了一种***任务的方法,所述方法包括:
线程池管理装置获取线程池待执行的任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
若所述待执行的任务是不携带报文的任务,则将所述待执行的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述待执行的任务;
若所述待执行的任务是携带报文的任务,则将所述待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述待执行的任务。
第四方面,本发明实施例提供了一种线程池管理装置,所述装置包括:
获取模块,用于获取线程池待执行的任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
***模块,用于若所述获取模块获取的所述待执行的任务是不携带报文的任务,则将所述待执行的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述待执行的任务;还用于若所述获取模块获取的所述待执行的任务是携带报文的任务,则将所述待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述待执行的任务。
本发明实施例提供了一种***任务的方法和装置,线程池管理装置根据获取的待执行任务的类型,将待执行的任务***线程池的队列组中,即采用任务队列和报文队列双队列的方法存储任务,保证了即使待执行的任务执行失败,报文也不会丢失。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
第五方面,本发明实施例提供了一种执行任务的方法,所述方法包括:
线程池的一工作线程拷贝所述线程池的一任务队列的首任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
若所述首任务是不携带报文的任务,则执行所述首任务;
若所述首任务是指示有报文要执行的任务,则按照所述报文队列首报文的操作标识执行所述报文队列中首报文,若执行成功,则删除所述报文队列中的首报文,否则不删除。
第六方面,本发明实施例提供了一种执行任务的装置,所述装置包括:
拷贝模块,用于拷贝线程池的一任务队列的首任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
执行模块,用于若所述拷贝模块拷贝的所述首任务是不携带报文的任务,则执行所述首任务;还用于,若所述拷贝模块拷贝的所述首任务是指示有报文要执行的任务,则按照所述报文队列首报文的操作标识执行所述报文队列中首报文;
删除模块,用于若所述执行模块执行的所述报文队列中首报文执行成功,则删除所述报文队列中的首报文,否则不删除。
本发明实施例提供了一种执行任务的和装置,由于采用任务队列和报文队列双队列的方法存储任务,工作线程在执行任务时,当携带报文的任务执行失败后,不丢弃报文。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的管理线程池的方法的流程图之一;
图2为本发明实施例提供的现有技术中的一种多线程时序错乱的示意图;
图3为本发明实施例提供的一种线程池结构示意图;
图4为本发明实施例提供的一种连接关系绑定线程池的示意图;
图5为本发明实施例提供的管理线程池的方法的流程图之二;
图6为本发明实施例提供的一种***任务的方法的流程图;
图7为本发明实施例提供的一种任务队列的示意图;
图8为本发明实施例提供的一种报文队列的示意图;
图9为本发明实施例提供的一种执行任务的方法的流程图;
图10为本发明实施例提供的一种管理线程池的装置的框图;
图11为本发明实施例提供的一种***任务的装置的框图;
图12为本发明实施例提供的一种执行任务的装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本发明实施例中字符“/”,一般表示前后关联对象是一种“或”的关系。
为了便于清楚描述本发明实施例的技术方案,在本发明的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上;“大于或等于”的含义包括大于或大于等于两种情况。
本发明实施例的工作原理在于,线程池管理装置获取专属线程池上连接关系的第一流量参数,并当该连接关系的第一流量参数满足使用共享线程池条件时,该连接关系绑定到一个共享线程池,以便将该连接关系的新任务***到共享线程池,在专属线程池上该连接关系的任务执行完后,解除该连接关系与专属线程池的绑定关系,并唤醒共享线程池的工作线程来执行共享线程池上该连接关系的任务。这样当连接关系由于某种原因导致流量大,进而导致网络都塞,影响网络效率的时候,将该连接关系绑定到一个共享线程池上,使在共享线程池上可集中执行该连接关系的任务,加快处理速度,从而解决引起的网络都塞问题,提高网络效率。
下面,将详细描述本发明实施例提供的一种管理线程池的方法和装置。
实施例一
本发明实施例提供了一种管理线程池的方法,参考图1所示,该方法各步骤的执行主体是线程池管理装置。该管理线程池的方法包括:
S101(可选的)、管理员为各南向插件配置线程池个数。
OpenFLow、Netconf等南向插件在不同部署场景中活跃度是不同,例如,当前OpenFLow流表管理正当红,支持OpenFLow协议的新兴网络设备较多,基于OpenFLow的解决方案较多,在实际应用中显然OpenFLow相较其它南向插件更活跃。
不同客户业务侧重点不同。例如,某些公司的数据中心项目,购物季一旦到来会频繁的扩容和调整网络,此时Netconf报文量和连接关系数会激增。
随着时间推移,南向插件种类将越来越丰富,网络解决方案将助推不同的南向插件在不同的应用场景扮演不同的角色。
因此,分配线程池资源时,相比一视同仁,平均分配的方法会适成资源浪费和低效,可配权重的线程资源分配方法是更合理高效的。
即在本发明实施例中,根据部署场景的不同、客户业务侧重点的不同等,由管理员设定南向插件可申请的线程池个数。
***初始化时,管理员根据实际部署场景、客户业务侧重点等,预先为各南向插件配置可申请的线程池个数。
示例的,管理员预先为第一南向插件配置可申请的线程池个数,记为M0
S102(可选的)、线程池管理装置为各南向插件分配线程池。
***初始化时,各南向插件向线程池管理装置申请线程池资源,得到指向属于各自的线程池资源的句柄,也可以是指针等,各南向插件初始化完成。
示例的,第一南向插件向线程池管理装置申请M个线程池资源,得到指向属于第一南向插件的线程池的句柄A1,第一南向插件初始化完成。
S103(可选的)、第一南向插件与一网元设备建立连接关系。
可以是第一南向插件主动与一网元设备建立连接关系,也可以是一网元设备主动与第一南向插件建立连接关系,具体的根据实际情况而定。
S104、线程池管理装置将第一南向插件与一网元设备建立的连接关系绑定到第一南向插件的一个专属线程池。
第一南向插件的专属线程池为仅供第一南向插件使用的线程池;
在本发明实施例中,一连接关系绑定一线程池的含义是:线程池管理装置为该连接关系选定一个线程池,标记二者的相关性,在代码实现上就是在连接关系的结构体中记录一个指针、句柄或地址等。
具体的,连接关系建立成功,第一南向插件就通过句柄A1向线程池管理装置请求将该连接关系绑定一个线程池,获得该连接关系绑定的线程池句柄B1,句柄B1将被记录到连接关系结构体。
句柄A1指向第一南向插件在步骤S102为自己申请的专属线程池资源,新建立的连接关系将被绑定到专属线程池资源的某个线程池,连接关系的整个生命周期内产生的任务都将被这个线程池内的工作线程处理,直至连接关系关闭。
由于一个线程池可以绑定多个连接关系,因此将该连接关系绑定到一个专属线程池时,要依据绑定最少连接关系优先原则,选定一个专属线程池,将该连接关系绑定选定的线程池。
绑定最少连接关系优先原则具体指的是:将该连接关系绑定到第一南向插件的专属线程池中已绑定的连接关系最少的专属线程池。也就是说,每当有新连接关系需要绑定专属线程池时,从属于第一南向插件的所有专属线程池中选择一个已绑定连接关系最少的专属线程池与该新连接关系绑定,这样可以适当提高网络效率。
S105、将该连接关系的第一任务***到专属线程池,以便专属线程池的工作线程执行该连接关系的任务。
此处的第一任务指的是该连接关系建立,且绑定一个专属线程池之后到来的任务。
需要说明的是:在本发明实施例中提到的线程池可以是专属线程池,也可以是步骤S107中的共享线程池;在本发明实施例中提到的该连接关系的任务,若无特殊指明,则泛指该连接关系的任一个任务,可以是第一任务,也可以是第二任务,也可以是第三任务等。
每个线程池对应有固定个数的队列组,或每个线程池上的队列组与线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列。绑定到一线程池上的连接关系的任务只能***该线程池对应的队列组中。
优选的,每个线程池上仅有一个队列组,所有绑定到该线程池上的连接关系的任务都要***该队列组的队列中。由于所有连接关系的任务都***了该队列组中,因此任务执行的时候,根据先入先出的规则,哪个连接关系的任务在前面,就先执行哪个连接关系的任务。
可选的,每个线程池上固定有Q个队列组,Q>1,所有绑定到该线程池上的连接关系的任务都要***这Q个队列组的队列中。但优选的,对于同一个连接关系的任务都***其中一个队列组的队列中,这样可以保证同一连接关系的任务不会出现时序问题。因此,可能出现一个队列组中只***了一个连接关系的任务,或者一个队列组中***了多个连接关系的任务。但对于每个队列组的来说,在任务执行的时候,也根据先入先出的规则,哪个连接关系的任务在前面,就先执行哪个连接关系的任务。
优选的,每个线程池上的队列组与线程池上绑定的连接关系是一一对应的。此时线程池上的队列组的个数是动态变化的,且始终与线程池上绑定的连接关系个数相同。即当线程池上绑定一个新连接关系,则线程池上生成一个与该连接关系对应的队列组,用于将该连接关系的任务***该队列组中;当线程池上绑定的连接关系关闭时,所述连接关系绑定的队列组也关闭。
该连接关系的任务包括不携带报文的任务和携带报文的任务,因此在将该连接关系的任务***到线程池,即***到线程池的队列组中时,包括以下两种情况。
若该连接关系的任务是不携带报文的任务,则将该连接关系的任务***到线程池的一个任务队列中,以便工作线程执行连接关系的任务。需要说明的是:因为该任务是不携带报文的任务,因此只需在任务队列中***该任务,不需在对应的报文队列***报文。
若该连接关系的任务是携带报文的任务,则将该连接关系的任务分成一个指示有报文要执行的任务和携带操作标识的报文,并将指示有报文要执行的任务和携带动作的报文分别***到线程池的同一个队列组的任务队列和报文队列中,以便工作线程执行连接关系的任务。
又一个线程池至少包含一个工作线程,例如包含P个工作线程,P大于或等于1,且每个线程池的个数可以相同,也可以不相同。当P=1时,每个线程池只含有一个工作线程,即线程池中只可以有一个工作线程处于工作状态;当P>1时,每个线程池含有多个工作线程,即线程池中可以同时有多个工作线程处于工作状态。
当P>1时,可以将该连接关系绑定到该专属线程池的多个工作线程上,使该连接关系的任务可以分配到多个工作线程上,多个工作线程同时执行该连接关系的任务,加快该连接关系任务的处理速度。
优选的,无论P=1或P>1,都将一个连接关系绑定到一个线程池的一个工作线程上。即将该连接关系的所有任务都绑定到线程池的一个工作线程上,并在该工作线程上执行该连接关系的所有任务,这样相比将该连接关系的任务绑定到线程池的多个工作线程上,可以避免执行任务过程中的时序问题。
现有技术中对于同一连接关系的任务,多线程同时执行,可能导致时序问题。参考图2所示,可以看出,添加行为与删除行为是有先后顺序的,但是在多线程执行中,删除行为却可能先于添加行为完成,导致了执行结果与预期结果的不一致。
在本发明实施例中,线程池的结构包括以下几种:一个线程池对应固定的Q个队列组,且一个线程池内包含P个工作线程,Q≥1,P≥1,Q≥P,也就是一个工作线程至少对应一个队列组;一个线程池上的队列组与线程池上绑定的连接关系是一一对应的,且一个线程池内包含P个工作线程,P≥1。
示例的,若第一南向插件申请到M个线程池资源,每个线程池内只含一个工作线程且线程池对应有一个任务队列和一个报文队列。则第一南向插件申请到的线程池结构,如图3所示。
基于图3所示的线程池结构,连接关系绑定线程池的示意图如图4所示,当一连接关系绑定一个线程池,那么该连接关系的任务则***该线程池的队列组中,将该队列组提交给工作线程,工作线程执行该队列组中的任务,获得执行结果队列。
示例的,若第一南向插件申请到M个线程池资源,每个线程池内只含一个工作线程,同时,线程池上的队列组与绑定的连接关系是一一对应的。那么不同连接关系的任务分别***与之对应的队列组中,所有队列组的任务最终都提交给这同一个工作线程处理,但该工作线程在同一时间只能处理一个连接关系的队列组中的任务。
S106、获取该连接关系的第一流量参数。
第一流量参数具体的可以是由连接关系传输的报文的总个数、平均值,或由连接关系传输的报文的总流量值,或由连接关系传输的某些特殊类型的报文的个数或流量值。当然第一流量参数也可以是其他本领域技术人员容易想到的合理量,在此不再一一列举。
S107、当该连接关系的第一流量参数满足使用共享线程池条件时,将该连接关系绑定到一个共享线程池,以便将该连接关系的第二任务***到共享线程池。
此处的第二任务指的是当第一流量参数满足使用共享线程池条件时,将该连接关系绑定到一个共享线程池之后到来的新任务。
其中,共享线程池为至少供第一南向插件使用的线程池,该新任务为在连接关系绑定到共享线程池之后到来的任务。第一流量参数满足使用共享线程池条件,则意味着该连接关系此时的任务量比较大,若仍绑定在原专属线程池,可能会导致网络堵塞的问题,因此需要将该连接关系绑定到一个共享线程池上,以使该连接关系与该共享线程池形成一一对应的关系,则该共享线程池可以集中只处理该连接关系的任务,提高网络效率。
当然,若第一流量参数不满足使用共享线程池的条件,则说明该连接关系的任务量合适,可以继续使用原专属线程池,将该连接关系的新任务***到原专属线程池。并且继续获取该连接关系的第一流量参数。
具体的,实时统计每时间间隔由连接关系传输的报文量x1,并统计连续出现x1大于或等于第一阈值的次数y1;若y1大于或等于第二阈值,则将连接关系绑定到一个共享线程池。
其中,每时间间隔是可以设置的,例如,可以是一分钟、两分钟,或根据实际情况设定的其他合理的时间间隔。报文量可以是指报文个数或报文大小。第一阈值是可以设置的,例如,若实时统计每时间间隔由连接关系传输的报文个数x1,则第一阈值可以是1000个、2000个,或根据实际情况设定的其他合理的报文个数;若实时统计每时间间隔由连接关系传输的报文大小x1,报文大小x1指的是由该连接关系传输的报文的总的流量值,则第一阈值可以是1000M、2000M,或根据实际情况设定的其他合理的报文流量值,单位可以是M,也可以是其他的。第二阈值是可以设置的,例如可以是3、5,或根据实际情况设定的其他合理的次数。
需要说明的是:在本发明实施例中,是统计每时间间隔由连接关系传输的报文量x1,也就是连续统计,例如每分钟统计一次,获得x1,实际上也可以不连续统计,可以间隔的统计,例如隔一分钟统计一分钟,获得x1,或以某种规则统计,只要是合理的统计规则都可以。
示例的,假设每时间间隔是一分钟,第一阈值是1000个,第二阈值是3次。当将一个连接关系绑定到一个专属线程池时,开始实时统计每分钟由连接关系传输的报文个数x1,并统计连续出现x1大于或等于1000个的次数y1;若y1大于或等于3次,则将连接关系绑定到一个共享线程池。
对该连接关系的统计结果如表1所示:则可知在第6至第8分钟,连续3次出现了报文个数x1大于1000,此时,该连接关系的第一流量参数满足使用共享线程池条件,将该连接关系绑定到一个共享线程池,以便将该连接关系的新任务***到共享线程池。
表1
同时,当第一流量参数满足使用共享线程池条件时,线程池管理装置还会通知告警装置告警,用于提醒管理员注意。当管理员接收到该告警信号后,会根据实际情况分析是否需要为该连接关系所属的南向插件重新配置线程池个数,具体过程不再赘述。
将该连接关系绑定到共享线程池上,为了保证不出现时序问题,应该将该连接关系绑定到共享线程池的一个工作线程上,将该连接关系***该共享线程池的任务都由这一个工作线程执行完成。
S108、在专属线程池上该连接关系的第一任务执行完后,解除该连接关系与专属线程池的绑定关系。
需要说明的是:对于多个连接关系对应一个队列组,即多个连接关系的任务都***了同一个队列组的方案,可以在连接关系的结构体中设置任务计数器,来一个该连接关系的任务,任务计数器加1,执行一个该连接关系的任务,任务计数器减1,当任务计数器为0时,说明该连接关系的任务执行完。对于连接关系与队列组一一对应的方案,当一连接关系对应的队列组中的队列为空时,说明该连接关系的任务执行完,当然也可以在该连接关系的结构体中设置任务计数器。
在步骤S107中线程池管理装置已经将该连接关系绑定在一个共享线程池上,当该连接关系有新任务到来的时候,新任务将被***共享线程池,不会再***原专属线程池。但原专属线程池中还有未完成的该连接关系的任务,因此为了保证不出现时序问题,需要在专属线程池上该连接关系的任务执行完后,解除该连接关系与该专属线程池的绑定关系。然后在唤醒该连接关系绑定的共享线程池的工作线程来执行该连接关系的任务,具体如步骤S109所述。
S109、唤醒共享线程池的工作线程来执行共享线程池上连接关系的第二任务。
唤醒工作线程执行任务,指的是把该连接关系所对应的队列组的任务提交给绑定的工作线程处理,如果工作线程当前空闲,没有正在执行的任务,则会被唤醒执行该连接关系的任务;如果工作线程当前忙,有正在执行的任务,则会自动排队等待合适时机,即等前面其他连接关系的任务都执行完后,将该连接关系的任务提交给工作线程来处理。
在上述步骤S109以后,该管理线程池的方法还包括:
S110(可选的)、获取该连接关系的第二流量参数。
第二流量参数具体的可以是由连接关系传输的报文的总个数、平均值,或由连接关系传输的报文的总流量值,或由连接关系传输的某些特殊类型的报文的个数或流量值。当然第二流量参数也可以是其他本领域技术人员容易想到的合理量,在此不再一一列举。
S111(可选的)、当该连接关系的第二流量参数满足使用专属线程池条件时,将该连接关系绑定到一个专属线程池,以便将该连接关系的第三任务***到专属线程池。
此处的第三任务指的是当第二流量参数满足使用专属线程池条件时,将该连接关系绑定到一个专属线程池之后到来的新任务。
其中,该新任务为在该连接关系绑定到一个专属线程池之后到来的任务。第二流量参数满足使用专属线程池条件,则意味着该连接关系此时的任务量比较小,不需继续绑定在该共享线程池上。连接关系与共享线程池是一一对应的关系,假若现在有其他连接关系需要绑定共享线程池,但该连接关系仍绑定在该共享线程池,则可能会浪费线程池资源。因此需要根据绑定最少连接关系优先原则将该连接关系绑定到一个第一南向插件的专属线程池上,这样可以提高线程池的利用率。
当然,若第二流量参数不满足使用专属线程池的条件,则说明该连接关系的任务量仍然很大,可以继续使用该共享线程池,将该连接关系的新任务***到该共享线程池。并且继续获取该连接关系的第二流量参数。
具体的,每隔一段时间,统计z次由所述连接关系传输的x2;并统计出现x2大于或等于第三阈值的次数y2。若y2小于第四阈值,则将所述连接关系绑定到一个所述专属线程池,所述第四阈值小于或等于z。
其中,每隔一段时间具体的间隔时间是可以设置的,可以是几分钟,几小时等根据实际情况设置的合理时间,例如15分钟。报文量可以是报文个数或报文大小。统计出现x2大于或等于第三阈值的次数y2,可以是统计连续出现x2大于或等于第三阈值的次数y2,也可以是统计所有出现x2大于或等于第三阈值的总次数y2。每次统计的时间间隔是可以设置的,例如,可以是一分钟、两分钟,或根据实际情况设定的其他合理的时间间隔。第三阈值、第四阈值都是可以设置的,具体的可以参考步骤S107的配置。需要说明的是第三阈值与第一阈值可以是相同的,也可以不同的;第四阈值与第二阈值可以是相同的,也可以不同的。
示例的,每隔15分钟,统计5次每分钟由所述连接关系传输的报文大小x2;并统计出现x2大于或等于1000M的总次数y2。若y2小于3次,则将所述连接关系绑定到一个所述专属线程池。
对该连接关系第1分钟至第5分钟第一次统计,隔15分钟,第21分钟至第25分钟第二次统计,统计结果如表2所示:则可知第一次统计x2大于1000M的总次数y2是4次,大于第四阈值,该连接关系需要继续绑定共享线程池;第二次统计x2大于1000M的总次数y2是2次,小于第四阈值,该连接关系需要绑定专属线程池。此时该连接关系的第二流量参数满足使用专属线程池条件,将该连接关系绑定到一个专属线程池,以便将该连接关系的新任务***到专属线程池。
表2
统计时间(分钟) 1 2 3 4 5
报文个数(M) 1020 1200 1350 1055 902
统计时间(分钟) 21 22 23 24 25
报文个数(M) 850 890 1155 960 1064
同时,当第二流量参数满足使用专属线程池条件时,线程池管理装置还会通知告警装置告警,用于提醒管理员注意。当管理员接收到该告警信号后,会根据实际情况分析是否需要为该连接关系所属的南向插件重新配置线程池个数,具体过程不再赘述。
将该连接关系绑定到专属线程池上,为了保证不出现时序问题,应该将该连接关系绑定到专属线程池的一个工作线程上,将该连接关系***该专属线程池的任务都由这一个工作线程执行完成。
S112(可选的)、在共享线程池上该连接关系的第二任务执行完后,解除该连接关系与共享线程池的绑定关系。
在步骤S111中线程池管理装置已经将该连接关系绑定在一个专属线程池上,当该连接关系有新任务到来的时候,新任务将被***专属线程池,不会再***原共享线程池。但原共享线程池中还有未完成的该连接关系的任务,因此为了保证不出现时序问题,需要在共享线程池上该连接关系的任务执行完后,解除该连接关系与该共享线程池的绑定关系。然后在唤醒该连接关系绑定的专属线程池的工作线程来执行该连接关系的任务,具体如步骤S109所述。
S113(可选的)、唤醒专属线程池的工作线程来执行专属线程池上该连接关系的第三任务。
第二流量参数具体的可以是由连接关系传输的报文的总个数、平均值,或由连接关系传输的报文的总流量值,或由连接关系传输的某些特殊类型的报文的个数或流量值。当然第二流量参数也可以是其他本领域技术人员容易想到的合理量,在此不再一一列举。
上述步骤S106-S109和步骤S110(可选的)-S113(可选的)的顺序可以调换,当一连接关系建立成功后,上述两组步骤就开始交替进行。
示例的,在一连接关系建立成功之后(参考步骤S103),步骤S104将其绑定到一个专属线程池上(参考步骤S104),唤醒专属线程池上的工作线程来执行该连接关系的任务(参考步骤S105),获取该连接关系的第一流量参数,当满足绑定共享线程池的条件时,将该连接关系绑定到一个共享线程池,并唤醒共享线程池上的工作线程来执行该连接关系的任务(参考步骤S106-S109);获取该连接关系的第二流量参数当满足绑定专属线程池的条件时,将该连接关系绑定到一个专属线程池,并唤醒专属线程池上的工作线程来执行该连接关系的任务(参考步骤S110(可选的)-S113(可选的));此时该连接关系又绑定了专属线程池,需要获取该连接关系的第一流量参数,当满足绑定共享线程池的条件时,将该连接关系绑定到一个共享线程池,并唤醒共享线程池上的工作线程来执行该连接关系的任务(参考步骤S106-S109);此时该连接关系又绑定了专属线程池,该连接关系又绑定了共享线程池,获取该连接关系的第二流量参数,当满足绑定专属线程池的条件时,将该连接关系绑定到一个专属线程池,并唤醒专属线程池上的工作线程来执行该连接关系的任务(参考步骤
S110(可选的)-S113(可选的));总之,在该连接关系未关闭之前,当该连接关系绑定专属线程池时,就获取该连接关系的第一流量参数,看是否满足绑定到共享线程池的条件,若满足绑定到共享线程池,若不满足继续在原专属线程池上;当连接关系绑定共享线程池时,就获取该连接关系的第二流量参数,看是否满足绑定到专属线程池的条件,若满足绑定到一个专属线程池,若不满足继续在原共享线程池上,具体过程参考上述步骤S106-S113(可选的),此处不再赘述。
上述步骤S101(可选的)仅描述了***初始化时管理员为各南向插件配置线程池的过程,在实际***运行过程中,管理员也可能根据实际部署场景的变化,客户业务侧重点的变化等,为各南向插件配置可申请的线程池个数。
上述步骤S102(可选的)仅描述了***初始化时线程池管理装置为各南向插件分配线程池的过程,而在实际***运行过程中,由于实际部署场景的变化,客户业务侧重点的变化,南向插件越来越丰富等原因,线程池管理装置也需要不断的调整为各南向插件分配的线程池个数。上述步骤S103-S113中的任一步骤的过程中都可能同时发生了线程池管理装置为各南向插件分配线程池。参考图5所示,线程池管理装置为各南向插件分配线程池的具体过程,包括以下步骤:
S201、获取当前次为第一南向插件配置的可用专属线程池个数M,以及上一次为第一南向插件配置的可用专属线程池个数N,M大于或等于1,N大于或等于0;
其中,当前次即为最近的、最新的一次,若当前次是第一次***初始化时管理员为第一南向插件最新配置的专属线程池个数M,那么上一次管理员为第一南向插件配置的可用专属线程池个数N等于0。若当前次是第5次管理员为第一南向插件最新配置的专属线程池个数M,那么上一次就是第4次管理员为第一南向插件最新配置的专属线程池个数N。
S202(可选的)、判断M是否大于N。
线程池管理装置根据M和N的大小关系确定如何管理线程池,使第一南向插件最终分配到M个专属线程池。
若M>N,执行步骤S202;若M<N,执行步骤S203-S209。
S203、线程池管理装置为第一南向插件分配M-N个专属线程池。
M>N,说明管理员为第一南向插件新配置的专属线程池个数大于第一南向插件现有的专属线程池个数,此时,线程池管理装置需要为第一南向插件再分配M-N个专属线程池,使第一南向插件的专属线程池个数达到M个。
此时第一南向插件有M-N个新的,没有绑定连接关系的专属线程池,若有第一南向插件与网元设备建立的新连接关系需要绑定第一南向插件的专属线程池,则根据绑定最少连接关系优先原则,将该新连接关系绑定到第一南向插件的新分配所得的M-N个专属线程池之一上。
S204、线程池管理装置从第一南向插件的N个专属线程池中确定N-M个绑定的连接关系最少的专属线程池。
M<N,说明说明管理员为第一南向插件新配置的专属线程池个数小于于第一南向插件现有的专属线程池个数,此时线程池管理装置需要回收第一南向插件的N-M个专属线程池,使第一南向插件的专属线程池个数达到M个。
从第一南向插件的N个现有的专属线程池中,确定N-M个绑定的连接关系最少的专属线程池,作为即将被线程池管理装置回收的专属线程池。选择回收绑定连接关系最少的专属线程池,在后续的操作中会比较方便。
S205、向第一南向插件分配一个待用专属线程池,将N-M个专属线程池上的连接关系绑定到待用专属线程池,以便将N-M个专属线程池上的连接关系的新任务***到待用专属线程池。
其中,该新任务为在将N-M个专属线程池上的连接关系绑定到待用专属线程池之后到来的任务。
线程池管理装置在回收N-M个专属线程池的过程中,会向第一南向插件分配一个待用线程池,用于绑定N-M个专属线程池上的连接关系,并将N-M个专属线程池上的连接关系的新任务***该代用专属线程池。
S206、当N-M个专属线程池上的任务执行完后,回收N-M个专属线程池。
虽然将该N-M个专属线程池上的连接关系绑定到了待用专属线程池上,但该N-M个专属线程池上仍有其绑定的连接关系未执行的任务,因此当该N-M个专属线程池上的任务都执行完后,回收该N-M个专属线程池。
S207、唤醒待用专属线程池的工作线程来执行待用专属线程池上连接关系的任务。
为了保证各连接关系的任务不出现时序问题,当步骤S205中该N-M个专属线程池上的任务都执行完后,将待用线程池的队列组中的任务提交给工作线程,以便工作线程执行待用线程池上连接关系的任务。
S208、当待用专属线程池上的一连接关系在预设时间段内没有到来任务,则将该连接关系绑定到第一南向插件剩余的M个专属线程池之一。
其中,预设时间段内即定时时间内。当待用专属线程池上一连接关系的任务执行完后,设置定时时间,在定时时间内若该连接关系始终没有新人物到来,则根据绑定最少连接关系优先原则,将该连接关系绑定到第一南向插件剩余的M个专属线程池之一。
S209、当待用专属线程池上所有连接关系的任务都执行完后,回收待用专属线程池。
当待用线程池上所有连接关系的任务都执行完后,且所有连接关系都绑定到第一南向插件剩余的M个专属线程池之后,回收该待用专属线程池,此时线程池管理装置成功回收了第一南向插件的N-M个专属线程池,并使第一南向插件的专属线程池个数达到M个。
在本发明实施例中,在回收第一南向插件的该N-M个专属线程池的过程中,用一个待用专属线程池作为过渡,将该N-M个专属线程池上的连接关系先绑定到待用专属线程池上,等满足一定条件时,再将连接关系绑定到第一南向插件剩余的M个专属线程池,回收该待用线程池。而不是直接将该N-M个专属线程池的连接关系绑定到第一南向插件剩余的M个专属线程池。这样可以保证同一连接关系的任务不会出现时序问题。
例如,对于多个连接关系对应一个队列组的方案,假设该N-M个专属线程池之一为线程池A,剩余的M个线程池之一为线程池B,如果直接将线程池A的一连接关系绑定到线程池B,由于线程池B中的队列组的任务都在运行,那么该连接关系的新任务也可能会被线程池B马上执行,同时线程池A上该连接关系的旧任务也在执行,从而可能会导致同一连接关系的不同任务同时在不同的线程池上执行,引起时序问题。
对于连接关系与队列组一一对应的方案,上述方案也可以避免出现时序问题。但也可以直接将该N-M个专属线程池的连接关系绑定到第一南向插件剩余的M个专属线程池。同样假设该N-M个专属线程池之一为线程池A,剩余的M个线程池之一为线程池B,现在直接将线程池A的一连接关系绑定到线程池B,这时为了保证不出现时序问题,只需控制线程池B上该连接关系对应的队列组中的任务不提交给工作线程处理,当线程池A上该连接关系的任务执行完后,在将线程池B上该连接关系对应的队列组中的任务提交工作线程处理。
本发明实施例提供了一种管理线程池的方法,将第一南向插件与一网元设备的连接关系绑定到一个专属线程池,并获取该连接关系的第一流量参数,根据第一流量参数判断是否需要将该连接关系绑定到一共享线程池上,从而解决在南向插件与网元设备的交互过程中因突发社会事件等使报文激增而导致的网络堵塞问题。
实施例二
本发明实施例提供了一种***任务的方法,参考图6所示,该方法各步骤的执行主体是线程池管理装置,该方法包括:
S301、线程池管理装置获取线程池待执行的任务。
其中线程池待执行的任务是线程池绑定的一连接关系的待执行任务,线程池管理装置需要将该待执行的任务***到线程池的队列组中。线程池对应有固定个数的队列组,或每个线程池上的队列组与线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列。具体的参考实施例一的步骤S105中对线程池队列组的描述,在此不再赘述。
示例的,待执行的任务可以是SDN控制器通过第一南向插件向一网元设备下发配置信息。
S302(可选的)、判断待执行的任务是不是携带报文的任务。
需要说明的是:不携带报文的任务,任务结构体定义了需要执行的动作。携带报文的任务,任务结构体不负责定义执行动作,执行动作的语义由所携带的报文负责定义。
若待执行的任务是不携带报文的任务,则执行步骤S303-S304;若待执行的任务是携带报文的任务,则执行步骤S305-S306。
S303、将待执行的任务***到线程池的一个任务队列中,以便工作线程执行待执行的任务。
将待执行的任务***到线程池的一个任务队列中,是指将该待执行的任务***与其所属的连接关系对应的任务队列中。
示例的,若线程池上只有一个队列组,则所有连接关系对应着一个队列组,将该待执行的任务***到该队列组的任务队列中。
示例的,若线程池上的队列组与绑定的连接关系是一一对应的,则将该待执行的任务***与其所属的连接关系对应的队列组的任务队列中。
具体的,线程池管理装置通过待执行的任务找到其所属的连接关系,通过连接关系获得所属线程池对应的句柄B1,将任务***对应的任务队列。
S304、当待执行的任务执行成功后,在任务队列的末尾***一个特殊任务,特殊任务为指示有报文要执行的任务,以便当工作线程执行该特殊任务时,执行报文队列中的首报文。
在本发明实施例中,每当一个不携带报文的任务执行成功之后,都会在任务队列的末尾***一个特殊任务,该特殊任务指示有报文要执行,但在任务队列***该特殊任务的时候,未在与任务队列对应的报文队列中***相应的报文。
当工作线程执行到该特殊任务时,会去对应的报文队列中执行首报文,若此时报文队列中有报文,则执行报文队列的首报文;若此时报文队列的中已没有报文,则无需执行,直接跳到任务队列的下一个任务,或工作线程可以休眠等待被唤醒。
***特殊任务可以保证将报文队列中的报文处理完,且将任务队列中的任务处理完后,工作线程才进入休眠等待被唤醒。避免了报文队列中有报文未被执行的情况。
S305、将待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并将指示有报文要执行的任务和携带动作的报文分别***到线程池的同一个队列组的任务队列和报文队列中,以便工作线程执行待执行的任务。
当工作线程从任务队列获取了一个指示有报文要执行的任务时,工作线程就会去对应的报文队列中获取首报文,然后按照首报文中携带的操作标识执行该报文。
具体的,若待执行的任务携带了报文,线程池管理装置通过待执行的任务找到所属连接关系,通过连接关系获得所属线程池句柄B1,将指示有报文要执行的任务和携带操作标识的报文分别***所属连接关系对应的任务队列和报文队列中。
S306、当待执行的任务执行成功后,或当待执行的任务未执行成功后,在任务队列的末尾***一个特殊任务,特殊任务为指示有报文要执行的任务,以便当工作线程执行特殊任务时,执行报文队列中的首报文。
当待执行的任务未执行成功,删除任务队列的首任务,但不删除报文队列的首报文,当工作线程执行下一个指示有报文要执行的任务时,继续执行报文队列的上述首报文。
需要说明的是:在本发明实施例中,携带报文的待执行的任务未执行成功,不代表该待执行的任务会一直执行失败。因为在将该携带报文的任务***线程池之前,已经对该携带报文的任务的报文进行了合法性检测,例如已检测符合本发明实施例应用场景对应的协议要求等。因此该待执行的任务是可以执行成功的,即指按照该报文携带的操作标识执行成功,如下发成功等,但并不保证报文到达设备端后的执行成功。
同时,在本发明实施例中,该待执行的任务会一直执行失败的情况是:连接关系被关闭或路由不通,连接关系相关的请求将被处理,如连接关系断开,丢弃等,这时由于无法执行任务,因此返回任务执行失败。
在本步骤中***的特殊报文具体的可以参考步骤S304中***的特殊报文,在此不再赘述。
示例的,参考图7所示,在任务队列中***任务就是任务入队,执行任务队列中的任务就是任务出队,任务队列中的任务的具体内容包括:任务标识(Type)、连接关系标识(Device IP),还可以包括其他内容,在此不再赘述。其中Type和Device IP的具体含义可以参照表3所示。其中Type可扩展,表示了该任务是何种任务,及执行该任务的下一步是什么;Device IP指示了该任务属于哪一个连接关系。
表3
Figure BDA0001192449430000231
示例的,参考图8所示,在报文队列中***报文就是报文入队,执行任务队列中的报文就是报文出队,报文队列中的报文的具体内容包括:操作标识(Flag)、连接关系标识(Device IP)和报文内容(Flow),还可以包括其他内容,在此不再赘述。其中Flag和DeviceIP的具体含义可以参照表4所示。其中操作标识可扩展,表示了对该报文内容的具体操作动作;连接关系标识指示了该任务属于哪一个连接关系;报文内容指的是该报文的具体内容,可以参考现有技术中的报文。
表4
Figure BDA0001192449430000232
本发明实施例提供了一种***任务的方法,线程池管理装置根据获取的待执行任务的类型,将待执行的任务***线程池的队列组中,一个队列组包括任务队列和报文队列,当待执行的任务为不携带报文的任务时,将待执行的任务***任务队列;当待执行的任务为携带报文的任务时,将待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并分别***到线程池的同一个队列组的任务队列和报文队列中,以便工作线程执行待执行的任务。在现有技术中是将不携带报文的任务和携带报文的任务都***任务队列中,且当任务执行失败时,将该任务丢弃。这样针对携带报文的任务,现有技术当任务执行失败时,就会将报文一同丢弃,而本发明实施例中由于将待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并分别***到线程池的同一个队列组的任务队列和报文队列中,因此当任务执行失败时,只是丢弃任务队列中的指示有报文要执行的任务,而不会丢弃报文队列中的携带操作标识的报文。从而采用任务队列和报文队列双队列的方法存储任务,保证了即使待执行的任务执行失败,报文也不会丢失。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
实施例三
本发明实施例提供了一种执行任务的方法,参考图9所示,该方法各步骤的执行主体是工作线程,该方法包括:
S401、线程池的一工作线程拷贝线程池的一任务队列的首任务。
线程池对应有固定个数的队列组,或每个线程池上的队列组与线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列。具体的参考实施例一的步骤S105中对线程池队列组的描述,在此不再赘述。
每当有任务***了任务队列,提交给工作线程处理,工作线程被唤醒。工作线程从任务队列中拷贝首任务。
若首任务是不携带报文的任务,则执行步骤S402;若首任务是指示有报文要执行的任务,则执行步骤S403;若任务队列没有可执行的首任务,则执行步骤S404。
S402、若首任务是不携带报文的任务,执行首任务。
不携带报文的任务内定义了执行动作的语义。
S403(可选的)、若首任务是指示有报文要执行的任务,判断报文队列是否有首报文需要执行。
需要说明的是,若首任务是特殊任务,则对应的报文队列中可能不存在首报文。特殊任务的描述参照实施例二步骤S304。
若报文队列没有首报文需要执行,则执行步骤S401。
若报文队列有首报文需要执行,则执行步骤S404。
S404、按照报文队列首报文的操作标识执行报文队列中首报文。
具体的,工作线程拷贝报文队列的首报文,处理该首报文。
需要说明的是:所谓拷贝首报文,在工程实现上无需复制一份内容,只需一个指针足矣,报文并未被摘取。操作标识即为报文内定义的执行动作的语义。
S405(可选的)、判断报文队列的首报文是否执行成功。
若执行成功,则执行步骤S406;否则,执行步骤S407。
S406、删除报文队列中的首报文。
将删除的报文队列中的首报文丢弃。执行步骤S401。
S407、不删除除报文队列中的首报文。
执行报文失败,并未将报文从报文队列中删除,报文等待被继续执行。由于是时序敏感业务,失败只能再次执行,不能丢弃。执行步骤S401。
S408(可选的)、任务队列执行完,工作线程进入休眠状态,等待被唤醒。
实施例二的步骤S304和S306指出,当任务执行成功,或带报文的任务执行失败时,线程池管理装置都会在任务队列的末尾***特殊任务,可知若报文队列中的报文未执行完,任务队列中一定有指示有报文要执行的任务,且任务队列中指示有报文要执行的任务个数多于报文队列中的报文的个数;再有在本发明实施例中带报文的任务是不会一直执行失败的,因此可以确定当任务队列中的任务执行完时,报文队列中的报文一定执行完,此时工作线程可以进入休眠状态,等待被唤醒。
本发明实施例提供了一种执行任务的方法,由于采用任务队列和报文队列双队列的方法存储任务,工作线程在执行任务时,当携带报文的任务执行失败后,不丢弃报文。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
实施例四
本发明实施例提供了一种管理线程池的装置,该装置可以是线程池管理装置,也可以是其他的管理线程池的装置。其中各个功能模块的实现可以参考上述实施例一,在此不再赘述。如图10所示,该装置包括:
绑定模块11,用于将第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池;
***模块12,用于将所述连接关系的第一任务***到所述绑定模块11绑定的所述专属线程池,以便所述专属线程池的工作线程执行所述连接关系的任务,所述第一南向插件的专属线程池为仅供所述第一南向插件使用的线程池;
获取模块13,用于获取所述连接关系的第一流量参数;
所述绑定模块11,还用于当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,以便将所述连接关系的第二任务***到所述共享线程池,所述共享线程池为至少供所述第一南向插件使用的线程池,该第二任务为在所述连接关系绑定到所述共享线程池之后到来的任务;
解除模块14,用于在所述专属线程池上所述连接关系的第一任务执行完后,解除所述连接关系与所述专属线程池的绑定关系;
唤醒模块15,用于唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务。
可选的,所述获取模块13,具体用于实时统计每时间间隔由所述连接关系传输的报文量x1,并统计连续出现x1大于或等于第一阈值的次数y1
所述绑定模块11,还用于若y1大于或等于第二阈值,则将所述连接关系绑定到一个共享线程池。
可选的,在所述唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务之后,所述获取模块13,还用于获取所述连接关系的第二流量参数;
所述绑定模块11,还用于当所述连接关系的第二流量参数满足使用专属线程池条件时,将所述连接关系绑定到一个所述专属线程池,以便将所述连接关系的第三任务***到所述专属线程池,该第三任务为在所述连接关系绑定到一个专属线程池之后到来的任务;
所述解除模块14,还用于在所述共享线程池上所述连接关系的第二任务执行完后,解除所述连接关系与所述共享线程池的绑定关系;
所述唤醒模块15,还用于唤醒所述专属线程池的工作线程来执行所述专属线程池上所述连接关系的第三任务。
可选的,所述获取模块13,还具体用于每隔一段时间,统计z次由所述连接关系传输的报文量x2;并统计出现x2大于或等于第三阈值的次数y2
所述绑定模块11,还用于若y2小于第四阈值,则将所述连接关系绑定到一个所述专属线程池,所述第四阈值小于或等于z。
可选的,在所述将所述第一南向插件与一网元设备建立的连接关系绑定到一个所述第一南向插件的专属线程池之前,
所述获取模块13,还用于获取当前次为第一南向插件配置的可用专属线程池个数M,以及上一次为第一南向插件配置的可用专属线程池个数N,所述M大于或等于1,所述N大于或等于0;
所述装置还包括,分配模块16,用于若M>N,则为所述第一南向插件分配M-N个专属线程池;
确定模块17,用于若M<N,则所述线程池管理装置从所述第一南向插件的N个专属线程池中确定N-M个绑定的连接关系最少的专属线程池;
所述分配模块16,还用于向所述第一南向插件分配一个待用专属线程池;
所述绑定模块11,还用于将所述N-M个专属线程池上的连接关系绑定到所述待用专属线程池,以便将所述N-M个专属线程池上的连接关系的新任务***到所述待用专属线程池,该新任务为在将所述N-M个专属线程池上的连接关系绑定到所述待用专属线程池之后到来的任务,
回收模块18,用于当所述N-M个专属线程池上的任务执行完后,回收N-M个专属线程池;
所述唤醒模块15,还用于唤醒所述待用专属线程池的工作线程来执行所述待用专属线程池上连接关系的任务;
所述绑定模块11,还用于当所述待用专属线程池上的一连接关系在预设时间段内没有到来任务,则将该连接关系绑定到所述第一南向插件剩余的M个专属线程池之一;
所述回收模块18,还用于当所述待用专属线程池上所有连接关系的任务都执行完后,回收所述待用专属线程池。
可选的,所述绑定模块,具体用于将所述连接关系绑定到所述第一南向插件的专属线程池中已绑定的连接关系最少的专属线程池。
可选的,一个所述线程池包含P个工作线程,所述P大于或等于1;
所述绑定模块11,具体用于将所述连接关系绑定到所述线程池的一个工作线程上。
可选的,每个线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
所述***模块12,还用于若所述连接关系的任务是不携带报文的任务,则将所述连接关系的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述连接关系的任务;
还用于若所述连接关系的任务是携带报文的任务,则将所述连接关系的任务分成一个指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述连接关系的任务。
需要说明的是,本实施例中获取模块13可以为管理线程池的装置上具备接收功能的接口电路与处理器配合完成的,例如:可以通过接口电路得到报文个数\报文大小,处理器统计报文个数\报文大小,最终获得第一或第二流量参数;当然也可以是硬件电路通过统计报文个数\报文大小,获得第一或第二流量参数。示例的,接口电路可以是接收机或信息接收接口。这些模块也可以为单独设立的处理器,也可以集成在具备路由功能的装置的某一个处理器中实现,此外,也可以以程序代码的形式存储于具备路由功能的装置的存储器中,由具备路由功能的装置的某一个处理器调用并执行以上各个模块的功能。这里所述的处理器可以是一个中央处理器(英文全称:Central Processing Unit,英文简称:CPU),或者是特定集成电路(英文全称:Application Specific Integrated Circuit,英文简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
本发明实施例提供了一种管理线程池的装置,将第一南向插件与一网元设备的连接关系绑定到一个专属线程池,并获取该连接关系的第一流量参数,根据第一流量参数判断是否需要将该连接关系绑定到一共享线程池上,从而解决在南向插件与网元设备的交互过程中因突发社会事件等使报文激增而导致的网络堵塞问题。
实施例五
本发明实施例提供了一种***任务的装置,该装置可以是线程池管理装置,也可以是其他的可以***任务的装置。其中各个功能模块的实现可以参考上述实施例二,在此不再赘述。如图11所示,所述装置包括:
获取模块21,用于获取线程池待执行的任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
***模块22,用于若所述获取模块21获取的所述待执行的任务是不携带报文的任务,则将所述待执行的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述待执行的任务;还用于若所述获取模块21获取的所述待执行的任务是携带报文的任务,则将所述待执行的任务分成指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述待执行的任务。
可选的,当所述待执行的任务执行成功后,或当所述待执行的任务是携带报文的任务,且未执行成功后,所述***模块22,还用于在所述任务队列的末尾***一个特殊任务,所述特殊任务为指示有报文要执行的任务,以便当所述工作线程执行所述特殊任务时,执行所述报文队列中的首报文。
需要说明的是,这些模块可以为单独设立的处理器,也可以集成在具备路由功能的装置的某一个处理器中实现,此外,也可以以程序代码的形式存储于具备路由功能的装置的存储器中,由具备路由功能的装置的某一个处理器调用并执行以上各个模块的功能。这里所述的处理器与实施例四相同。
本发明实施例提供了一种***任务的装置,线程池管理装置根据获取的待执行任务的类型,将待执行的任务***线程池的队列组中,即采用任务队列和报文队列双队列的方法存储任务,保证了即使待执行的任务执行失败,报文也不会丢失。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
实施例六
本发明实施例提供了一种执行任务的装置,该装置可以是工作线程,也可以是其他的执行任务的装置。其中各个功能模块的实现可以参考上述实施例三,在此不再赘述。如图12所示,所述装置包括:
拷贝模块31,用于拷贝线程池的一任务队列的首任务,所述线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
执行模块32,用于若所述拷贝模块31拷贝的所述首任务是不携带报文的任务,则执行所述首任务;还用于,若所述拷贝模块31拷贝的所述首任务是指示有报文要执行的任务,则按照所述报文队列首报文的操作标识执行所述报文队列中首报文;
删除模块33,用于若执行成功所述执行模块32的所述报文队列中首报文,则删除所述报文队列中的首报文,否则不删除。
需要说明的是,这些模块可以为单独设立的处理器,也可以集成在具备路由功能的装置的某一个处理器中实现,此外,也可以以程序代码的形式存储于具备路由功能的装置的存储器中,由具备路由功能的装置的某一个处理器调用并执行以上各个模块的功能。这里所述的处理器与实施例四相同。
本发明实施例提供了一种执行任务的装置,由于采用任务队列和报文队列双队列的方法存储任务,工作线程在执行任务时,当携带报文的任务执行失败后,不丢弃报文。从而解决了现有技术的方案中当任务执行失败后报文丢失的问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接关系可以是通过一些接口,装置或单元的间接耦合或通信连接关系,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种管理线程池的方法,其特征在于,所述方法包括:
将第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池,将所述连接关系的第一任务***到所述专属线程池,以便所述专属线程池的工作线程执行所述第一任务,所述专属线程池为仅供所述第一南向插件使用的线程池;
获取所述连接关系的第一流量参数,并当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,以便将所述连接关系的第二任务***到所述共享线程池,所述共享线程池为至少供所述第一南向插件使用的线程池,所述第二任务为在所述连接绑定到所述共享线程池之后到来的任务;
在所述专属线程池上所述第一任务执行完后,解除所述连接关系与所述专属线程池的绑定,并唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务。
2.根据权利要求1所述的方法,其特征在于,所述获取所述连接关系的第一流量参数,并当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,包括:
实时统计每时间间隔由所述连接关系传输的报文量x1,并统计连续出现x1大于或等于第一阈值的次数y1
若y1大于或等于第二阈值,则将所述连接关系绑定到一个共享线程池。
3.根据权利要求1所述的方法,其特征在于,在所述唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务之后,还包括:
获取所述连接关系的第二流量参数,并当所述连接关系的第二流量参数满足使用专属线程池条件时,将所述连接关系绑定到一个所述专属线程池,以便将所述连接关系的第三任务***到所述专属线程池,所述第三任务为在所述连接关系绑定到一个专属线程池之后到来的任务;
在所述共享线程池上所述连接关系的第二任务执行完后,解除所述连接关系与所述共享线程池的绑定关系,并唤醒所述专属线程池的工作线程来执行所述专属线程池上所述连接关系的第三任务。
4.根据权利要求3所述的方法,其特征在于,所述获取所述连接关系的第二流量参数,并当所述连接关系的第二流量参数满足使用专属线程池条件时,将所述连接关系绑定到一个所述专属线程池,包括:
每隔一段时间,统计z次由所述连接关系传输的报文量x2;并统计出现x2大于或等于第三阈值的次数y2
若y2小于第四阈值,则将所述连接关系绑定到一个所述专属线程池,所述第四阈值小于或等于z。
5.根据权利要求1-4任一项所述的方法,其特征在于,在所述将所述第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池之前,还包括:
获取当前次为第一南向插件配置的可用专属线程池个数M,以及上一次为第一南向插件配置的可用专属线程池个数N,所述M大于或等于1,所述N大于或等于0;
若M>N,则所述线程池管理装置为所述第一南向插件分配M-N个专属线程池;
若M<N,则所述线程池管理装置从所述第一南向插件的N个专属线程池中确定N-M个绑定的连接关系最少的专属线程池,向所述第一南向插件分配一个待用专属线程池,将所述N-M个专属线程池上的连接关系绑定到所述待用专属线程池,以便将所述N-M个专属线程池上的连接关系的新任务***到所述待用专属线程池,该新任务为在将所述N-M个专属线程池上的连接关系绑定到所述待用专属线程池之后到来的任务,当所述N-M个专属线程池上的任务执行完后,回收N-M个专属线程池,并唤醒所述待用专属线程池的工作线程来执行所述待用专属线程池上连接关系的任务,当所述待用专属线程池上的一连接关系在预设时间段内没有到来任务,则将该连接关系绑定到所述第一南向插件剩余的M个专属线程池之一,当所述待用专属线程池上所有连接关系的任务都执行完后,回收所述待用专属线程池。
6.根据权利要求1所述的方法,其特征在于,一个所述线程池至少包含一个工作线程;
将所述连接关系绑定到一个专属线程池,或将所述连接关系绑定到一个共享线程池,包括:
将所述连接关系绑定到所述线程池的一个工作线程上。
7.根据权利要求1所述的方法,其特征在于,每个线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
将所述连接关系的第一任务***到所述专属线程池,或将所述连接关系的第二任务***到所述共享线程池,包括:
若所述连接关系的任务是不携带报文的任务,则将所述连接关系的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述连接关系的任务;
若所述连接关系的任务是携带报文的任务,则将所述连接关系的任务分成一个指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述连接关系的任务。
8.一种管理线程池的装置,其特征在于,该装置包括:
绑定模块,用于将第一南向插件与一网元设备建立的连接关系绑定到所述第一南向插件的一个专属线程池;
***模块,用于将所述连接关系的第一任务***到所述绑定模块绑定的所述专属线程池,以便所述专属线程池的工作线程执行所述连接关系的第一任务,所述第一南向插件的专属线程池为仅供所述第一南向插件使用的线程池;
获取模块,用于获取所述连接关系的第一流量参数;
所述绑定模块,还用于当所述连接关系的第一流量参数满足使用共享线程池条件时,将所述连接关系绑定到一个共享线程池,以便将所述连接关系的第二任务***到所述共享线程池,所述共享线程池为至少供所述第一南向插件使用的线程池,所述第二任务为在所述连接关系绑定到所述共享线程池之后到来的任务;
解除模块,用于在所述专属线程池上所述连接关系的第一任务执行完后,解除所述连接关系与所述专属线程池的绑定关系;
唤醒模块,用于唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务。
9.根据权利要求8所述的装置,其特征在于,在所述唤醒所述共享线程池的工作线程来执行所述共享线程池上所述连接关系的第二任务之后,还包括:
所述获取模块,还用于获取所述连接关系的第二流量参数;
所述绑定模块,还用于当所述连接关系的第二流量参数满足使用专属线程池条件时,将所述连接关系绑定到一个所述专属线程池,以便将所述连接关系的第三任务***到所述专属线程池,所述第三任务为在所述连接关系绑定到一个专属线程池之后到来的任务;
所述解除模块,还用于在所述共享线程池上所述连接关系的第二任务执行完后,解除所述连接关系与所述共享线程池的绑定关系;
所述唤醒模块,用于唤醒所述专属线程池的工作线程来执行所述专属线程池上所述连接关系的第三任务。
10.根据权利要求8所述的装置,其特征在于,每个线程池对应有固定个数的队列组,或每个线程池上的队列组与所述线程池上绑定的连接关系是一一对应的,每个队列组包括:一个任务队列和一个报文队列;
所述***模块,具体用于若所述连接关系的任务是不携带报文的任务,则将所述连接关系的任务***到所述线程池的一个任务队列中,以便所述工作线程执行所述连接关系的任务;若所述连接关系的任务是携带报文的任务,则将所述连接关系的任务分成一个指示有报文要执行的任务和携带操作标识的报文,并将所述指示有报文要执行的任务和携带动作的报文分别***到所述线程池的同一个队列组的任务队列和报文队列中,以便所述工作线程执行所述连接关系的任务。
CN201611219265.6A 2016-12-26 2016-12-26 一种管理线程池的方法和装置 Active CN106775984B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611219265.6A CN106775984B (zh) 2016-12-26 2016-12-26 一种管理线程池的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611219265.6A CN106775984B (zh) 2016-12-26 2016-12-26 一种管理线程池的方法和装置

Publications (2)

Publication Number Publication Date
CN106775984A CN106775984A (zh) 2017-05-31
CN106775984B true CN106775984B (zh) 2020-01-21

Family

ID=58926350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611219265.6A Active CN106775984B (zh) 2016-12-26 2016-12-26 一种管理线程池的方法和装置

Country Status (1)

Country Link
CN (1) CN106775984B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108846632A (zh) * 2018-05-28 2018-11-20 浙江口碑网络技术有限公司 线程处理方法及装置
CN108683570A (zh) * 2018-07-03 2018-10-19 烽火通信科技股份有限公司 软件定义传送网中控制器网元管理能力测试***及方法
CN113268330A (zh) * 2021-05-28 2021-08-17 中国银行股份有限公司 线程池参数调整方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599027A (zh) * 2009-06-30 2009-12-09 中兴通讯股份有限公司 一种线程池管理方法及其***
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN103744723A (zh) * 2014-01-24 2014-04-23 深圳联友科技有限公司 一种线程池的管理方法和管理***
CN104038439A (zh) * 2014-06-18 2014-09-10 中国工商银行股份有限公司 报文流量控制方法及***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101599027A (zh) * 2009-06-30 2009-12-09 中兴通讯股份有限公司 一种线程池管理方法及其***
CN102043675A (zh) * 2010-12-06 2011-05-04 北京华证普惠信息股份有限公司 一种基于任务处理请求任务量大小的线程池管理方法
CN103744723A (zh) * 2014-01-24 2014-04-23 深圳联友科技有限公司 一种线程池的管理方法和管理***
CN104038439A (zh) * 2014-06-18 2014-09-10 中国工商银行股份有限公司 报文流量控制方法及***

Also Published As

Publication number Publication date
CN106775984A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN107025205B (zh) 一种分布式***中的训练模型的方法及设备
US11805065B2 (en) Scalable traffic management using one or more processor cores for multiple levels of quality of service
US8270299B2 (en) Communicator-based token/buffer management for eager protocol support in collective communication operations
US8737417B2 (en) Lock-less and zero copy messaging scheme for telecommunication network applications
CN106775984B (zh) 一种管理线程池的方法和装置
US20130074091A1 (en) Techniques for ensuring resources achieve performance metrics in a multi-tenant storage controller
Rizk et al. Computable bounds in fork-join queueing systems
CN110532067A (zh) 事件处理方法、装置、设备及存储介质
EP2702730A2 (en) Effective circuits in packet-switched networks
CN109697122A (zh) 任务处理方法、设备及计算机存储介质
CN113992588B (zh) 数据传输方法、装置、电子设备及可读存储介质
Wang et al. Utopia: Near-optimal coflow scheduling with isolation guarantee
CN105022668B (zh) 一种作业调度方法及***
Aljoby et al. On SDN-enabled online and dynamic bandwidth allocation for stream analytics
CN101984414A (zh) Cpu资源的调度方法及装置
CN112817772A (zh) 一种数据通信方法、装置、设备及存储介质
CN107005489B (zh) 用于支持分组交换的***、方法、介质和设备
US9705698B1 (en) Apparatus and method for network traffic classification and policy enforcement
CN108471354B (zh) 多租户软件定义网络中虚拟网络流表弹性切割***及方法
Jajoo et al. Saath: Speeding up coflows by exploiting the spatial dimension
CN111597056A (zh) 一种分布式调度方法、***、存储介质和设备
CN113835611A (zh) 存储调度方法、设备和存储介质
Liu et al. Bottleneck-aware non-clairvoyant coflow scheduling with Fai
CN112272933B (zh) 队列控制方法、装置及存储介质
CN107005487B (zh) 用于支持联网设备中的高效虚拟输出队列(voq)资源利用的***和方法

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