CN110727500A - ***中的功能模块的集成方法、***、设备及介质 - Google Patents

***中的功能模块的集成方法、***、设备及介质 Download PDF

Info

Publication number
CN110727500A
CN110727500A CN201910921689.4A CN201910921689A CN110727500A CN 110727500 A CN110727500 A CN 110727500A CN 201910921689 A CN201910921689 A CN 201910921689A CN 110727500 A CN110727500 A CN 110727500A
Authority
CN
China
Prior art keywords
container
configuration file
containers
module
functional modules
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.)
Granted
Application number
CN201910921689.4A
Other languages
English (en)
Other versions
CN110727500B (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.)
Shanghai Is According To Figure Network Technology Co Ltd
Original Assignee
Shanghai Is According To Figure Network Technology 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 Shanghai Is According To Figure Network Technology Co Ltd filed Critical Shanghai Is According To Figure Network Technology Co Ltd
Priority to CN201910921689.4A priority Critical patent/CN110727500B/zh
Publication of CN110727500A publication Critical patent/CN110727500A/zh
Application granted granted Critical
Publication of CN110727500B publication Critical patent/CN110727500B/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种***中的功能模块的集成方法、***、设备及介质。本申请的集成方法可以包括,在***中建立多个容器,容器与***强耦合,用于保障***中的功能模块的正常运行;为每个容器设置配置文件,配置文件包括:容器的***资源占用率以及容器与功能模块的对应关系;根据配置文件连接功能模块与容器,其中,每个功能模块连接一个容器,且功能模块与容器弱耦合。本申请通过设置容器来与功能模块弱耦合,方便对***中的功能模块进行灵活管理和资源的灵活调配。

Description

***中的功能模块的集成方法、***、设备及介质
技术领域
本申请涉及一种***中的功能模块的集成方法、***、设备及介质。
背景技术
进程作为***进行资源分配和调度的基本单位,通常通过与线程之间的强耦合来确保模块集成,在需要修改线程与进程的对应关系的时候,通常直接通过停止***来进行,这不利于模块的灵活运用。对于某进程子模块被别的进程使用的时候,在使用结束之前,该进程都不可以被释放,需要始终占用***资源,直到该模块被完全使用结束才可以被释放。在只启动某个进程的子模块的时候,也需要占用进程的所有资源,不利于资源的灵活使用。
发明内容
本申请的第一方面提供了一种***中的功能模块的集成方法,该方法可以包括,
在***中建立多个容器,容器与***强耦合,用于保障***中的功能模块的正常运行;为每个容器设置配置文件,配置文件包括:容器的***资源占用率以及容器与功能模块的对应关系;根据配置文件连接功能模块与容器,其中,每个功能模块连接一个容器,且功能模块与容器弱耦合。
本申请通过设置容器来与功能模块弱耦合,方便对***中的功能模块进行灵活管理和资源的灵活调配。
进一步,配置文件可以根据***中的功能模块的性质来设置,每个容器连接同一性质的一个或多个功能模块。其中,功能模块的性质可以包括功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和资源分配优先级等其他常见工程属性中的至少一种。
进一步,该方法还可以包括,容器以预设的轮询周期轮询与自己连接的功能模块,并在功能模块运行异常时,重启功能模块。其中,不同的容器的轮询周期可以不同,从而保证各个功能模块正常运行的同时,节约***的总运算资源。
进一步,该方法还可以包括,更新容器的配置文件,并根据更新的配置文件,重新连接功能模块与容器。
进一步,根据配置文件连接功能模块与容器可以包括,判断配置文件是否正确,在配置文件有误的情况下,输出错误信息并周期性地检查配置文件,直到检查到正确的配置文件后,根据所述正确的配置文件连接所述功能模块与所述容器。
本申请的第二方面提供了一种***,该***可以包括,多个功能模块,用于实现***的各项功能,和多个容器,用于保障***中的功能模块的正常运行,容器与***强耦合,并且容器与功能模块弱耦合;其中,容器被配置为,根据容器的配置文件来连接功能模块,且每个功能模块连接一个容器,其中,配置文件包括容器的***资源占用率以及容器与功能模块的对应关系。
进一步,配置文件可以根据***中的功能模块的性质来设置,每个容器连接同一性质的一个或多个功能模块。其中,功能模块的性质可以包括功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和资源分配优先级等其他常见工程属性中的至少一种。
进一步,容器可以进一步被配置为,以预设的轮询周期轮询与自己连接的功能模块,并在功能模块运行异常时,重启功能模块。其中,不同的容器的轮询周期可以不同。
进一步,容器可以进一步被配置为,根据更新的配置文件,重新连接功能模块。
进一步,容器可以进一步被配置为,在与功能模块连接时判断配置文件是否正确,在配置文件有误的情况下,输出错误信息并周期性地所述检查配置文件,直到检查到正确的配置文件后,根据所述正确的配置文件连接所述功能模块与所述容器。
本申请的第三方面提供了一种设备,该设备包括处理器和存储器,存储器中存储有指令,处理器用于读取存储器中的指令,以执行前述第一方面或第一方面的任一实现方式提供的方法。
本申请的第四方面提供了一种机器可读介质,该机器可读介质中存储有指令,指令被机器运行时,该机器执行前述第一方面或第一方面的任一实现方式提供的方法。
本申请通过在***中设置容器,并使容器与功能模块之间弱耦合,可以在***运行过程中通过更新配置文件来改变容器与功能模块之间的关系,利用这种弱耦合的关系可以保证模块集成,同时使***具有较好的健壮性和易修改性,有利于资源的灵活应用。
附图说明
图1是根据本申请的实施例的模块集成***的结构示意图。
图2是根据本申请的实施例的***中的功能模块的集成方法的流程图。
图3是根据本申请的实施例的改变或更新***中的容器与功能模块之间的关系的方法的流程图。
具体实施方式
下面结合具体实施例和附图对本申请做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本申请,而非对本申请的限定。此外,为了便于描述,附图中仅示出了与本申请相关的部分而非全部的结构或过程。
本公开的说明性实施例包括但不限于***中的功能模块的集成方法、***、设备及介质。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本申请的说明性实施例模糊不清。
此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
说明书中对“一个实施例”,“实施例”,“说明性实施例”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A/B”表示“A或B”。短语“A和/或B”表示“(A)、(B)或(A和B)”。
如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括专用集成电路(ASIC)、电子电路、处理器(共享,专用或组)和/或存储器(共享,专用或组)。用于执行一个或多个软件或固件程序,组合逻辑电路和/或提供所述功能的其他合适组件。
在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
图1示出了根据本申请的一些实施例的模块集成***的结构示意图。在图1和其余附图中,参考数字后面的字母,例如“200a”表示对具有该特定参考数字的元素的引用。文本中没有后续字母的参考数字,例如“200”,表示对带有该参考数字的元素的实施方式的一般引用。
根据本申请的一些实施例,如图1所示,***10的主程序100下可以耦合有多个容器200(例如,图中示出的三个容器:容器I 200a、容器II 200b和容器III 200c);容器200中的每个可以与一个或多个功能模块300耦合,例如,如图1所示,容器I200a连接功能模块300a和300b,容器II 200b连接功能模块300c、300d和300e,容器III 200c连接功能模块300f。需要注意的是,图1中示出了三个容器和六个功能模块仅作为示例说明***10的结构,并不是对本申请的限制,根据本申请的一些实施例,***10中可以包括更多或更少的容器200,每个容器200也可以连接任意一个或多个功能模块300。
根据本申请的一些实施例,容器200作为一种与***10强耦合的模块结构,可以用于保障与之连接的功能模块300的正常运行,同时起到对功能模块300的调度和协调的作用。而功能模块300a,…,300f分别与容器200a、200b和200c弱耦合,每个功能模块分别用于单独执行某种特定的程序动作或者代码行为。同一个容器200下的不同功能模块300共享容器200的资源,并且依赖容器200确保自身的正常运行。
参见图1,对于***10中的每个容器200,都被配置相应的配置文件,每个容器200根据自己的配置文件来连接对应的功能模块300,并保障对应的功能模块300的正常运行。根据本申请的一些实施例,配置文件可以包括,但不限于:该容器的***资源占用率、该容器与功能模块的对应关系、用户数据、功能模型等等中的任意一项或多项。
根据本申请的一些实施例,***中容器的配置文件可以根据***中的功能模块的性质来进行设置,功能模块的性质可以包括,但不限于,该功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和/或资源分配优先级等。每个容器可以连接同一性质的一个或多个功能模块,例如,根据本申请的一些实施例,可以为故障率较高的功能模块和故障率较低的功能模块分别设置两个不同的容器,将故障率较高的各个功能模块耦合到一个容器中,而故障率较低的功能模块耦合到另一个容器中,避免高故障率的功能模块影响低故障率的功能模块的正常运行。
根据本申请的一些实施例,容器可以以预设的轮询周期轮询与自己连接的功能模块,并处理功能模块的异常情况。例如,参见图1,容器II 200b可以以预设的轮询周期轮询与自己连接的功能模块300c,300d,300e,在功能模块300c,300d,300e中的某一个运行有异常(例如,不正常休眠或关闭)时,容器II 200b可以重启运行异常的功能模块。
根据本申请的一些实施例,在***中包含多个容器的情况下,不同的容器可以以不同的轮询周期进行轮询。例如,在图1所示的***10中,假设容器I 200a连接的功能模块300a和300b十分容易出现运行异常,而容器II 200b连接的功能模块300c、300d和300e则相对运行稳定,那么,容器II 200b对功能模块300c,300d,300e进行轮询的轮询周期可以相对于容器I 200a来说设置得更长,从而保证各个功能模块正常运行的同时,节约***的总运算资源。
以人脸识别***来举例,在人脸识别***中,实现类似于抓拍人脸的这种功能的功能模块(例如,摄像头模块),在人流量巨大时,由于需要不停的抓拍并处理数据,可能非常容易出故障,那么,类似的多个模块就可以耦合到容器I中,并将容器I配置为以一个较短的轮询周期(例如,1分钟)来轮询与其连接的这些功能模块。而对于一些不易出故障的模块,例如,主***模块,若同样以1分钟的轮询周期来进行轮询,则完全没有必要且十分浪费资源,那么,类似这种不易出故障的模块,则可以将他们都耦合到容器II中,并将容器II配置为以一个较长的轮询周期(例如,10天)来轮询与其连接的功能模块。
根据本申请的一些实施例,在***10中,可以根据不同功能模块的不同要求,分别为各个容器分配不同量的资源,以防止各个功能模块之间的恶性竞争,例如,可以为容器I200a分配200G资源,为容器II 200b分配500G资源,为容器III 200c分配300G资源。那么,容器I 200a下的功能模块300a和300b就共享容器I 200a的200G资源,而容器II 200b下的功能模块300c、300d和300e就共享容器II 200b的500G资源,容器III 200c下的功能模块300f则独享容器I 200a的300G资源。这样,对于一些需要保证流畅运行的重要功能模块,可以防止其他模块与其竞争计算资源导致其无法流畅运行。
例如,根据本申请的一些实施例,***中可能会存在一些必须保证运行正常的功能模块,例如,安全模块,在这种情况下,可以单独为安全模块设置一个容器,这样,无论***中的其他功能模块如何竞争资源,都能够保证安全模块的正常运行。
举例来说,在图像处理***中,可以包括多个功能模块,例如:特征抽取模块、视频处理模块、数据库调用模块、分布式存储模块、检索模块、场景图转存模块等。在***资源不是足够充分的情况下,为了防止功能模块间的恶性竞争,可以在***中设置几个容器,例如,三个容器。随后,将各个功能模块分别耦合到对应的容器中,例如,将GPU资源需求较高的特征抽取模块、视频处理模块耦合到第一容器中,并为第一容器分配较多的GPU资源和较少的CPU资源,而CPU资源需求较高的数据库调用模块、分布式存储模块、检索模块耦合到第二容器中,并为第二容器分配较少的GPU资源和较多的CPU资源,而对于剩余的场景图转存模块,由于其需要较高的I/O(输入/输出)资源,可以将其耦合到第三容器,并为其分配较高的I/O资源,***可以分别为第一容器、第二容器和第三容器分别配置40%,50%,10%的CPU资源,100%,0%,0%的GPU资源,以及10%,30%,60%的I/O资源。那么,第一容器中的特征抽取模块、视频处理模块便共享40%的CPU资源、100%的GPU资源和10%的I/O资源,第二容器中的数据库调用模块、分布式存储模块、检索模块便共享50%的CPU资源、0%的GPU资源和30%的I/O资源,而场景图转存模块则独享10%的CPU资源、0%的GPU资源和60%的I/O资源。
以上图像处理***仅仅是作为示例说明本申请的方案,根据本申请的各种实施例,本申请提供的方案可以应用于包含多个功能模块的各种***,尤其是需要时常修改线程与进程间的关系或者需要调配资源的***。
在本申请所提供的***中,由于功能模块与容器之间是弱耦合关系,因此,可以十分方便地启动、杀除容器下的功能模块以及修改功能模块与容器之间的对应关系,只需要修改容器的配置文件,并根据修改后的配置文件,重新调整功能模块与容器的连接关系即可。
例如,根据本申请的一些实施例,在图1所示的***10中,假设要把功能模块300a从容器I 200a转移到容器II 200b,那么,可以更新容器I 200a的配置文件,将容器I 200a所对应的功能模块从功能模块300a和功能模块300b更新为只有功能模块300a,并更新容器II 200b的配置文件,将容器II 200b所对应的功能模块从功能模块300c、功能模块300d和功能模块300e更新为:功能模块300b、功能模块300c、功能模块300d和功能模块300e。相应的配置文件更新后,容器I和容器II分别轮询相应的功能模块,容器I轮询后将配置文件中没有的功能模块300b解耦,而容器II则根据配置文件与原先未连接的功能模块300b建立连接。
根据本申请的另一些实施例,假设要把***10中的功能模块300a杀除,同样可以更新容器I 200a的配置文件,将容器I 200a所对应的功能模块从功能模块300a和功能模块300b更新为只有功能模块300a。相应的配置文件更新后,容器I轮询后将配置文件中没有的功能模块300b解耦。
根据本申请的一些实施例,更新配置文件或者根据配置文件连接功能模块与容器时,可以进行配置文件是否正确的判断,并在配置文件有误的情况下,输出错误信息并周期性地检查配置文件,直到检查到正确的配置文件后,根据正确的配置文件连接所述功能模块与所述容器,例如,可以在输出错误信息后更新容器的配置文件,并再次判断更新后的配置文件是否正确,在更新后的配置文件是正确的情况下,根据更新后的配置文件,重新连接功能模块与容器。例如,在一些情况下,可能由于误配导致容器无法找到配置文件中所指示的功能模块,此时,可以返回检查配置文件,并进行修改或更新后,重新连接功能模块。
图2示出了根据本申请的一些实施例的模块集成方法的示意图。根据本申请的一些实施例,该集成方法可以包括以下操作:
步骤S101,在***中建立多个容器(例如,图1中的容器I 200a、容器II 200b和容器III 200c),多个容器与***强耦合。
步骤S102,根据***中的功能模块的性质,为每个容器设置配置文件,其中,配置文件可以包括,但不限于:该容器的***资源占用率、该容器与功能模块的对应关系、用户数据、功能模型等等中的任意一项或多项。
随后,步骤S103,根据每个容器的配置文件来连接对应的容器与功能模块,其中,每个功能模块连接一个容器,且功能模块与容器弱耦合。例如,如图1所示,容器200中的每个可以与一个或多个功能模块300耦合,例如,如图1所示,容器I 200a连接功能模块300a和300b,容器II 200b连接功能模块300c、300d和300e,容器III 200c连接功能模块300f。
根据本申请的一些实施例,容器200作为一种与***10强耦合的模块结构,可以用于保障与之连接的功能模块300的正常运行,同时起到对功能模块300的调度和协调的作用。而功能模块300a,…,300f分别与容器200a、200b和200c弱耦合,每个功能模块分别用于单独执行某种特定的程序动作或者代码行为。同一个容器200下的不同功能模块300共享容器200的资源,并且依赖容器200确保自身的正常运行。
根据本申请的一些实施例,***中容器的配置文件可以根据***中的功能模块的性质来进行设置,功能模块的性质可以包括,但不限于,该功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和/或资源分配优先级等。每个容器可以连接同一性质的一个或多个功能模块,例如,根据本申请的一些实施例,可以为故障率较高的功能模块和故障率较低的功能模块分别设置两个不同的容器,将故障率较高的各个功能模块耦合到一个容器中,而故障率较低的功能模块耦合到另一个容器中,避免高故障率的功能模块影响低故障率的功能模块的正常运行。
连接完成后,步骤S104,容器可以以预设的轮询周期轮询与自己连接的功能模块,并处理功能模块的异常情况,以保障功能模块的正常运行。例如,参见图1,容器II200b可以以预设的轮询周期轮询与自己连接的功能模块300c,300d,300e,在功能模块300c,300d,300e中的某一个运行有异常(例如,不正常休眠或关闭)时,容器II 200b可以重启运行异常的功能模块。
根据本申请的一些实施例,在***中包含多个容器的情况下,不同的容器可以以不同的轮询周期进行轮询。例如,在图1所示的***10中,假设容器I 200a连接的功能模块300a和300b十分容易出现运行异常,而容器II 200b连接的功能模块300c、300d和300e则相对运行稳定,那么,容器II 200b对功能模块300c,300d,300e进行轮询的轮询周期可以相对于容器I 200a来说设置得更长,从而保证各个功能模块正常运行的同时,节约***的总运算资源。
以人脸识别***来举例,在人脸识别***中,实现类似于抓拍人脸的这种功能的功能模块(例如,摄像头模块),在人流量巨大时,由于需要不停的抓拍并处理数据,可能非常容易出故障,那么,类似的多个模块就可以耦合到容器I中,并将容器I配置为以一个较短的轮询周期(例如,1分钟)来轮询与其连接的这些功能模块。而对于一些不易出故障的模块,例如,主***模块,若同样以1分钟的轮询周期来进行轮询,则完全没有必要且十分浪费资源,那么,类似这种不易出故障的模块,则可以将他们都耦合到容器II中,并将容器II配置为以一个较长的轮询周期(例如,10天)来轮询与其连接的功能模块。
根据本申请的一些实施例,在设置容器的配置文件的操作S102中,可以根据不同功能模块的不同要求,分别为各个容器配置不同的资源占用量,以防止各个功能模块之间的恶性竞争,例如,可以为容器I 200a分配200G资源,为容器II 200b分配500G资源,为容器III 200c分配300G资源。那么,容器I 200a下的功能模块300a和300b就共享容器I 200a的200G资源,而容器II 200b下的功能模块300c、300d和300e就共享容器II 200b的500G资源,容器III 200c下的功能模块300f则独享容器I 200a的300G资源。这样,对于一些需要保证流畅运行的重要功能模块,可以防止其他模块与其竞争计算资源导致其无法流畅运行。
例如,根据本申请的一些实施例,***中可能会存在一些必须保证运行正常的功能模块,例如,安全模块,在这种情况下,可以单独为安全模块设置一个容器,这样,无论***中的其他功能模块如何竞争资源,都能够保证安全模块的正常运行。
举例来说,在图像处理***中,可以包括多个功能模块,例如:特征抽取模块、视频处理模块、数据库调用模块、分布式存储模块、检索模块、场景图转存模块等。在***资源不是足够充分的情况下,为了防止功能模块间的恶性竞争,可以在***中设置几个容器,例如,三个容器。随后,将各个功能模块分别耦合到对应的容器中,例如,将GPU资源需求较高的特征抽取模块、视频处理模块耦合到第一容器中,并为第一容器分配较多的GPU资源和较少的CPU资源,而CPU资源需求较高的数据库调用模块、分布式存储模块、检索模块耦合到第二容器中,并为第二容器分配较少的GPU资源和较多的CPU资源,而对于剩余的场景图转存模块,由于其需要较高的I/O(输入/输出)资源,可以将其耦合到第三容器,并为其分配较高的I/O资源,***可以分别为第一容器、第二容器和第三容器分别配置40%,50%,10%的CPU资源,100%,0%,0%的GPU资源,以及10%,30%,60%的I/O资源。那么,第一容器中的特征抽取模块、视频处理模块便共享40%的CPU资源、100%的GPU资源和10%的I/O资源,第二容器中的数据库调用模块、分布式存储模块、检索模块便共享50%的CPU资源、0%的GPU资源和30%的I/O资源,而场景图转存模块则独享10%的CPU资源、0%的GPU资源和60%的I/O资源。
以上图像处理***仅仅是作为示例说明本申请的方案,根据本申请的各种实施例,本申请提供的方案可以应用于包含多个功能模块的各种***,尤其是需要时常修改线程与进程间的关系或者需要调配资源的***。
在本申请所提供的***中,由于功能模块与容器之间是弱耦合关系,因此,可以十分方便地启动、杀除容器下的功能模块以及修改功能模块与容器之间的对应关系,只需要修改容器的配置文件,并根据修改后的配置文件,重新调整功能模块与容器的连接关系即可。
图3示出了根据本申请的实施例的改变或更新***中的容器与功能模块之间的关系的方法的流程图。如图3所示,根据本申请的一些实施例,该方法可以包括以下操作:
步骤S201,获取当前***中的容器的列表。
步骤S202,根据需求更新容器的配置文件。
以图1所示的***10为例,根据本申请的一些实施例,假设要把***10中的功能模块300a从容器I 200a转移到容器II 200b。那么,可以更新容器I 200a的配置文件,将容器I200a所对应的功能模块从功能模块300a和功能模块300b更新为只有功能模块300a,并更新容器II 200b的配置文件,将容器II 200b所对应的功能模块从功能模块300c、功能模块300d和功能模块300e更新为:功能模块300b、功能模块300c、功能模块300d和功能模块300e。
步骤S203-S207,使容器根据更新后的配置文件轮询相应的功能模块,判断容器配置是否正确,并与配置文件中没有的功能模块解耦和根据配置文件连接之前未连接的功能模块。
例如,在上述示例中,相应的配置文件更新后,容器I和容器II分别轮询相应的功能模块,容器I轮询后将配置文件中没有的功能模块300b解耦,而容器II则根据配置文件与原先未连接的功能模块300b建立连接。
根据本申请的一些实施例,在进行配置文件更新的操作或者根据配置文件连接功能模块与容器时,可以进行配置文件是否正确的判断,即步骤S205,并在配置文件有误的情况下(即,步骤S205判断为否),输出错误信息并周期性地检查配置文件,直到检查到正确的配置文件后,根据正确的配置文件连接所述功能模块与所述容器,例如,可以在输出错误信息后更新容器的配置文件,再次判断更新后的配置文件是否正确,在更新后的配置文件是正确的情况下,并根据更新后的配置文件,重新连接功能模块与容器。例如,在一些情况下,可能由于误配导致容器无法找到配置文件中所指示的功能模块,此时,可以返回检查配置文件,并进行修改或更新后,重新连接功能模块。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合形式来实现。所公开的实施例还可以以承载或储存在一个或多个瞬态或非瞬态的机器可读(例如,计算机可读)存储介质上的指令或程序形式实现,其可以由一个或多个处理器等读取和执行。当指令或程序被机器运行时,机器可以执行前述的集成方法。例如,指令可以通过网络或其他计算机可读介质分发。因此,机器可读介质可以包括但不限于,用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,例如,软盘,光盘,光盘只读存储器(CD-ROMs),磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电子式可清除程序化只读存储器(EEPROM),磁卡或光卡,或者用于通过电、光、声或其他形式信号(例如,载波、红外信号、数字信号等)传输网络信息的闪存或有形的机器可读存储器。因此,机器可读介质包括任何形式的适合于存储或传输电子指令或机器(例如,计算机)可读信息的机器可读介质。
根据本申请的另一个实施例,还提供了一种设备,包括:存储器和处理器,存储器中存储有指令,处理器用于读取所述存储器中的指令,以执行前述结合图2和图3描述的方法。
本申请提供的方案可以在***不停机的情况下,实现资源更加灵活的应用。只要确保容器模块存活,就可以确保***的正常运行。而通过在***中更新配置文件就可以改变容器模块与功能模块之间的关系,使得***具有较好的健壮性与易修改性。容器与所述***强耦合的同时与功能模块弱耦合,容器模块的设置和相关内容相对是固定的,但是容器与功能模块之间的关系是不固定的,这个容器与功能模块之间的关系的更改可以通过修改配置文件,在不停止***的情况下进行,即,功能模块与容器之间的关系可以被随时调整。此外,本申请提供的方案中,由于功能模块是依赖于容器进行的,当容器模块中所有的功能模块都停止了之后,可以把整个容器的资源释放,从而使***资源更加充分的利用。
上面结合附图对本申请的实施例做了详细说明,但本申请技术方案的使用不仅仅局限于本专利实施例中提及的各种应用,各种结构和变型都可以参考本申请技术方案轻易地实施,以达到本文中提及的各种有益效果。在本领域普通技术人员所具备的知识范围内,在不脱离本申请宗旨的前提下做出的各种变化,均应归属于本申请专利涵盖范围。

Claims (16)

1.一种***中的功能模块的集成方法,其特征在于,包括,
在所述***中建立多个容器,所述容器与所述***强耦合,用于保障所述***中的所述功能模块的正常运行;
为每个所述容器设置配置文件,所述配置文件包括:所述容器的***资源占用率以及所述容器与所述功能模块的对应关系;和
根据所述配置文件连接所述功能模块与所述容器,其中,每个所述功能模块连接一个所述容器,且所述功能模块与所述容器弱耦合。
2.根据权利要求1所述的集成方法,其特征在于,所述配置文件根据所述***中的所述功能模块的性质来设置,每个容器连接同一性质的一个或多个功能模块。
3.根据权利要求2所述的集成方法,其特征在于,所述功能模块的性质包括所述功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和资源分配优先级中的至少一种。
4.根据权利要求1所述的集成方法,其特征在于,还包括,所述容器以预设的轮询周期轮询与自己连接的所述功能模块,并在所述功能模块运行异常时,重启所述功能模块。
5.根据权利要求4所述的集成方法,其特征在于,不同的所述容器的所述轮询周期不同。
6.根据权利要求1所述的集成方法,其特征在于,还包括,
更新所述容器的配置文件,并根据更新的配置文件,重新连接所述功能模块与所述容器。
7.根据权利要求1所述的集成方法,其特征在于,所述根据所述配置文件连接所述功能模块与所述容器包括,判断所述配置文件是否正确,在所述配置文件有误的情况下,输出错误信息并周期性地检查配置文件,直到检查到正确的配置文件后,根据所述正确的配置文件连接所述功能模块与所述容器。
8.一种***,其特征在于,包括,
多个功能模块,用于实现所述***的各项功能,和
多个容器,用于保障所述***中的所述功能模块的正常运行,所述容器与所述***强耦合,并且所述容器与所述功能模块弱耦合;
其中,所述容器被配置为,根据所述容器的配置文件来连接所述功能模块,且每个所述功能模块连接一个所述容器,其中,所述配置文件包括所述容器的***资源占用率以及所述容器与所述功能模块的对应关系。
9.根据权利要求8所述的***,其特征在于,所述配置文件根据所述***中的所述功能模块的性质来设置,每个容器连接同一性质的一个或多个功能模块。
10.根据权利要求8所述的***,其特征在于,所述功能模块的性质包括所述功能模块的故障率、资源占用率、功能类别、生命周期、使用频率、工程依赖和资源分配优先级中的至少一种。
11.根据权利要求8所述的***,其特征在于,所述容器进一步被配置为,以预设的轮询周期轮询与自己连接的所述功能模块,并在所述功能模块运行异常时,重启所述功能模块。
12.根据权利要求11所述的***,其特征在于,不同的所述容器的所述轮询周期不同。
13.根据权利要求8所述的***,其特征在于,所述容器进一步被配置为,根据更新的配置文件,重新连接所述功能模块。
14.根据权利要求8所述的***,其特征在于,所述容器进一步被配置为,在与所述功能模块连接时判断所述配置文件是否正确,在所述配置文件有误的情况下,输出错误信息并周期性地检查配置文件,直到检查到正确的配置文件后,根据所述正确的配置文件连接所述功能模块与所述容器。
15.一种设备,其特征在于,包括:
存储器,所述存储器中存储有指令,和
处理器,用于读取所述存储器中的指令,以执行:
在***中建立多个容器,所述容器与所述***强耦合,用于保障所述***中的功能模块的正常运行;
为每个所述容器设置配置文件,所述配置文件包括:所述容器的***资源占用率以及所述容器与所述功能模块的对应关系;
根据所述配置文件连接所述功能模块与所述容器,其中,每个所述功能模块连接一个所述容器,且所述功能模块与所述容器弱耦合。
16.一种机器可读介质,其特征在于,所述机器可读介质中存储有指令,该指令被机器运行时,所述机器执行:
在***中建立多个容器,所述容器与所述***强耦合,用于保障所述***中的功能模块的正常运行;
为每个所述容器设置配置文件,所述配置文件包括:所述容器的***资源占用率以及所述容器与所述功能模块的对应关系;
根据所述配置文件连接所述功能模块与所述容器,其中,每个所述功能模块连接一个所述容器,且所述功能模块与所述容器弱耦合。
CN201910921689.4A 2019-09-27 2019-09-27 ***中的功能模块的集成方法、***、设备及介质 Active CN110727500B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910921689.4A CN110727500B (zh) 2019-09-27 2019-09-27 ***中的功能模块的集成方法、***、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910921689.4A CN110727500B (zh) 2019-09-27 2019-09-27 ***中的功能模块的集成方法、***、设备及介质

Publications (2)

Publication Number Publication Date
CN110727500A true CN110727500A (zh) 2020-01-24
CN110727500B CN110727500B (zh) 2022-10-25

Family

ID=69218431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910921689.4A Active CN110727500B (zh) 2019-09-27 2019-09-27 ***中的功能模块的集成方法、***、设备及介质

Country Status (1)

Country Link
CN (1) CN110727500B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427692A (zh) * 2020-03-26 2020-07-17 中国平安财产保险股份有限公司 功能配置方法、装置、电子设备及介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959631A (zh) * 2005-11-04 2007-05-09 上海启明软件股份有限公司 一种基于itron的应用软件自主装配技术
CN102087599A (zh) * 2011-02-24 2011-06-08 北京中电普华信息技术有限公司 一种基于J2EE的Web应用***开发方法及装置
CN102413115A (zh) * 2011-08-12 2012-04-11 乐视网信息技术(北京)股份有限公司 一种客户端插件***
CN102681825A (zh) * 2011-03-09 2012-09-19 北京航空航天大学 服务运行容器管理***和方法
US20140040429A1 (en) * 2010-03-31 2014-02-06 Welch Allyn, Inc. Extensibility for Manipulation of Medical Data
CN104834541A (zh) * 2015-03-30 2015-08-12 百度在线网络技术(北京)有限公司 功能模块挂载方法、挂载***及更新挂载***的方法
CN105183458A (zh) * 2015-08-14 2015-12-23 深圳联友科技有限公司 一种软件平台开发方法及装置
CN106888233A (zh) * 2015-12-15 2017-06-23 北京新媒传信科技有限公司 数据更新***及方法
US20170270031A1 (en) * 2016-03-15 2017-09-21 Fujitsu Limited Information processing apparatus, test execution method, and computer-readable recording medium
CN108108239A (zh) * 2017-12-29 2018-06-01 咪咕文化科技有限公司 一种业务功能的提供方法、装置及计算机可读存储介质
US20190294779A1 (en) * 2018-03-23 2019-09-26 International Business Machines Corporation Secure system state extraction software extensibility via plugin sandboxing

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1959631A (zh) * 2005-11-04 2007-05-09 上海启明软件股份有限公司 一种基于itron的应用软件自主装配技术
US20140040429A1 (en) * 2010-03-31 2014-02-06 Welch Allyn, Inc. Extensibility for Manipulation of Medical Data
CN102087599A (zh) * 2011-02-24 2011-06-08 北京中电普华信息技术有限公司 一种基于J2EE的Web应用***开发方法及装置
CN102681825A (zh) * 2011-03-09 2012-09-19 北京航空航天大学 服务运行容器管理***和方法
CN102413115A (zh) * 2011-08-12 2012-04-11 乐视网信息技术(北京)股份有限公司 一种客户端插件***
CN104834541A (zh) * 2015-03-30 2015-08-12 百度在线网络技术(北京)有限公司 功能模块挂载方法、挂载***及更新挂载***的方法
CN105183458A (zh) * 2015-08-14 2015-12-23 深圳联友科技有限公司 一种软件平台开发方法及装置
CN106888233A (zh) * 2015-12-15 2017-06-23 北京新媒传信科技有限公司 数据更新***及方法
US20170270031A1 (en) * 2016-03-15 2017-09-21 Fujitsu Limited Information processing apparatus, test execution method, and computer-readable recording medium
CN108108239A (zh) * 2017-12-29 2018-06-01 咪咕文化科技有限公司 一种业务功能的提供方法、装置及计算机可读存储介质
US20190294779A1 (en) * 2018-03-23 2019-09-26 International Business Machines Corporation Secure system state extraction software extensibility via plugin sandboxing

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANDREW J. YOUNGE等: "A Tale of Two Systems: Using Containers to Deploy HPC Applications on Supercomputers and Clouds", 《2017 IEEE INTERNATIONAL CONFERENCE ON CLOUD COMPUTING TECHNOLOGY AND SCIENCE (CLOUDCOM)》 *
宋杰等: "面向代码的软件能耗优化研究进展", 《计算机学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427692A (zh) * 2020-03-26 2020-07-17 中国平安财产保险股份有限公司 功能配置方法、装置、电子设备及介质

Also Published As

Publication number Publication date
CN110727500B (zh) 2022-10-25

Similar Documents

Publication Publication Date Title
CN106874031B (zh) 一种终端设备***程序的启动方法及装置
CN108462760B (zh) 电子装置、集群访问域名自动生成方法及存储介质
CN109558234A (zh) 一种定时任务调度方法和装置
CN111209110B (zh) 一种实现负载均衡的任务调度管理方法、***和存储介质
CN110389843B (zh) 一种业务调度方法、装置、设备及可读存储介质
CN109981737B (zh) 一种网络请求的处理方法、装置、终端及存储介质
CN102105848A (zh) 用于管理硬件资源的资源管理器
US20100122263A1 (en) Method and device for managing the use of a processor by several applications, corresponding computer program and storage means
CN112860387A (zh) 分布式任务调度方法、装置、计算机设备及存储介质
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN110727500B (zh) ***中的功能模块的集成方法、***、设备及介质
CN114629960A (zh) 资源调度方法、装置、***、设备、介质和程序产品
CN111538585A (zh) 一种基于node.js的服务器进程调度方法、***和装置
CN113703975A (zh) 模型分配方法、装置、电子设备及计算机可读存储介质
CN113608896B (zh) 一种动态切换数据流的方法、***、介质及终端
CN115587049A (zh) 内存回收方法、装置、电子设备及存储介质
CN113806055A (zh) 一种轻量级任务调度方法、***、装置及存储介质
CN110058866B (zh) 集群组件安装方法及设备
CN110134443A (zh) 在计算设备中执行附件的选项rom的方法和设备
CN109284141B (zh) 一种插件管理***及方法
CN115408106A (zh) 一种虚拟机间共享算法资源的方法及***
CN114077493A (zh) 一种资源分配方法及相关设备
CN112506626A (zh) 一种应用程序的启动方法、计算机设备及存储介质
CN112188143A (zh) 一种释放资源的方法及装置
CN111726418B (zh) 云资源的调配方法、装置、终端设备及存储介质

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