一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种进程线程资源管理控制方法及系统与流程

2022-11-14 02:25:45 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及一种进程线程资源管理控制方法及系统。


背景技术:

2.随着公司信息化建设深入推进,数据中台、物联管理平台已初具规模。数据应用的复杂度越来越高,电网数据管理技术面临着新的挑战,具体表现在:一是分析型的负载较高,抢占了线程池里的大部分线程资源,从而会造成事务业务的服务质量下降;二是同一个进程内新加入一个业务时,该业务会抢占其他业务的资源,从而造成系统的不稳定。


技术实现要素:

3.因此,本发明要解决的技术问题在于克服现有技术中进程线程资源管理策略不恰当,导致事务业务的服务质量下降或系统不稳定的缺陷,从而提供一种进程线程资源管理控制方法及系统。
4.第一方面,本发明实施例提供一种进程线程资源管理控制方法,包括:
5.解析当前所创建的资源组,将每个所述资源组关联一个或多个分类器,在所述分类器中设置查询条件;
6.接收来自分布式数据库系统外部的业务或租户的查询请求,将所述查询请求与所述查询条件进行匹配,将匹配度大于预设值的查询条件对应的所述分类器关联的资源组确定为所述查询请求的资源组;
7.根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离;
8.按业务类型,为每个跑在进程里的业务均创建一个线程池。
9.可选地,当所述资源组关联一个分类器时,所述分类器的查询条件与所述查询请求完全匹配;
10.当所述资源组关联多个分类器时,与所述查询请求匹配度最高的分类器生效。
11.可选地,根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离,包括:
12.采用namespace技术改变进程组的视觉范围;
13.采用cgroups技术对容器的资源进行限制。
14.可选地,通过构建netty线程模型处理连接请求与处理io操作的线程隔离。
15.可选地,利用docker容器的volume机制将数据从宿主机挂载到容器中。
16.可选地,将不同的逻辑数据库放到一个实例上,所述数据库预先进行连接配置;当需要扩容时,先扩容实例;当扩容到极限时,增加新的实例。
17.可选地,将docker容器网络模式设置为bridge模式。
18.第二方面,本发明实施例提供一种进程线程资源管理控制系统,包括:
19.解析模块,用于解析当前所创建的资源组,将每个所述资源组关联一个或多个分类器,在所述分类器中设置查询条件;
20.接收模块,用于接收来自分布式数据库系统外部的业务或租户的查询请求,将所述查询请求与所述查询条件进行匹配,将匹配度大于预设值的查询条件对应的所述分类器关联的资源组确定为所述查询请求的资源组;
21.进程模块,用于根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离;
22.线程模块,用于按业务类型,为每个跑在进程里的业务均创建一个线程池。
23.第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明实施例第一方面所述的进程线程资源管理控制方法。
24.第四方面,本发明实施例提供一种计算机设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行本发明实施例第一方面所述的进程线程资源管理控制方法。
25.本发明技术方案,具有如下优点:
26.本发明提供的一种进程线程资源管理控制方法,包括:解析当前所创建的资源组,将每个资源组关联一个或多个分类器,在分类器中设置查询条件;接收来自分布式数据库系统外部的业务或租户的查询请求,将查询请求与查询条件进行匹配,将匹配度大于预设值的查询条件对应的分类器关联的资源组确定为查询请求的资源组;根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离;按业务类型,为每个跑在进程里的业务均创建一个线程池。通过进程隔离可以把数据库的服务进行容器化封装,使其可以方便的运行在容器中,借助于容器本身对资源的隔离,实现进程隔离;同时线程隔离可以给每个跑在进程里的业务都按业务类型创建一个线程池,从而实现线程级别细粒度的资源隔离。通过进程隔离、线程隔离等多维度实现了资源隔离,能够通过一套分布式数据库系统同时服务于多个租户(或业务),提高业务的服务质量及系统稳定性。
附图说明
27.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1为本发明实施例中进程线程资源管理控制方法的一个具体示例的流程图;
29.图2为本发明实施例中进程线程资源管理控制系统的一个具体示例的原理框图;
30.图3为本发明实施例提供的计算机设备一个具体示例的组成图。
具体实施方式
31.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
32.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了
便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
33.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
34.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
35.本发明实施例提供一种进程线程资源管理控制方法,如图1所示,包括如下步骤:
36.步骤s1:解析当前所创建的资源组,将每个资源组关联一个或多个分类器,在分类器中设置查询条件。
37.在一具体实施例中,每个资源组可以关联一个分类器,也可以关联多个分类器,每个资源组关联分类器的个数依据实际需要而定。另外,在分类器中设置条件,用于查询任务对应的信息。
38.步骤s2:接收来自分布式数据库系统外部的业务或租户的查询请求,将查询请求与查询条件进行匹配,将匹配度大于预设值的查询条件对应的分类器关联的资源组确定为查询请求的资源组。
39.在一具体实施例中,通过为业务或租户分配的各数据库实例对应的各容器处理查询请求。分布式数据库系统可以包括多个服务器(server),每个服务器上部署有多个容器(container)。每个容器在所归属的服务器中占用预分配的资源并且对应一个数据库实例。
40.另外,当资源组关联一个分类器时,分类器的条件与查询请求完全匹配;当资源组关联多个分类器时,与查询请求匹配度最高的分类器生效。在本发明实施例中,预设值根据实际需要设定。
41.步骤s3:根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离。
42.在一具体实施例中,对于分布式操作系统互不信任的多个任务,应当分别将它们放在多个进程中实现强隔离,从而避免任务之间的相互干扰。该过程实现的方法是将传入的数据库资源通过docker容器对进程实现隔离,使其可以在容器中正常运行。docker容器隔离得以实现的关键技术点是namespace技术和cgroups技术,采用namespace技术创建一个进程时就是告诉系统,所创造的进程需要一个新的独立进程空间,让这个进程只能看到当前namespace空间里的网络设备,看不到宿主机真实情况;采用namespace技术只是改变了进程组的视觉范围,而不能对资源做出限制,但是要保证各个容器之间不能相互抢资源,此时就要引入cgroups技术对容器的资源加以限制,该技术是基于它的一些子目录cpu、memory等实现对这些资源进行限制,二者相结合就实现了容器化进程隔离。
43.然而数据库部署到容器化之上要解决数据存储的持久化、分布式数据库动态缩容与扩容以及网络隔离问题。
44.在本发明实施例中,利用docker容器的volume机制将数据从宿主机挂载到容器
中,以解决数据存储的持久化问题。
45.具体地,要想实现数据的持久化,将数据从宿主机挂载到容器中,需要利用docker的volume机制。数据卷独立于docker容器的内部文件系统且以目录形式在宿主机中存在,使用数据卷时容器中被指定为挂载点的目录中会隐藏,而显示为所挂载的数据卷,数据卷和容器的生命周期分离,删除容器volume仍然存在,没有任何容器使用的volume会被docker删除。数据卷本质上是独立于容器的分层联合文件系统的一个或多个容器内的特定目录,所以数据卷的更改独立于镜像的更新,即使对数据支持和基础仿真计算应用以及视频流web镜像进行更改,容器产生的用户信息数据和仿真结果数据以及基础资源数据都能实现持久化存储。
46.进一步地,将不同的逻辑数据库放到一个实例上,数据库预先进行连接配置;当需要扩容时,先扩容实例;当扩容到极限时,增加新的实例。
47.在本发明实施例中,数据库的扩容或缩容是相应地增加、减少数据库数量,必定会改变路由规则,需要对全量数据按照新的路由规则重新计算,再导入到新的数据库中。这种方法需要特定的迁移脚本来完成,并且通常需要新旧数据库双写来达到平滑迁移目的,对原有项目侵入较大,迁移工作量也较大。
48.为了减少迁移工作量,例如可以把分好的10个数据库作为不同的逻辑数据库放到一个实例上,而项目中会配置10个不同的数据库连接,后续需要扩容时,可以先扩容实例,这个阶段的扩容对业务是没有影响的。后续如果实例扩容到极限,则可以增加新的实例,比如扩容一倍,则增加1个实例,将其中5个数据库迁移到新的实例上。
49.类似地,若业务量变小需要缩容时,可将某些实例上的数据库迁移到其他实例上,修改数据库连接配置即可,也比较方便。
50.进一步地,将docker容器网络模式设置为bridge模式,以解决网络隔离问题。
51.在本发明实施例中,为解决个网络之间的通信问题可采用bridge模式,bridge是docker默认的网络模式。当docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,然后将本主机上启动的docker容器连接到该虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,所以主机上的所有容器通过交换机连接到二层网络。正常情况下,从docker0子网中分配一个ip给容器使用,并设置docker0的ip地址为容器的默认网关。在主机上创建一对虚拟网卡veth-pair设备,docker将veth-pair设备的一端放在新创建的容器中,并命名为eth0(容器内部网卡),另一端放在主机中,以veth-xxx这样类似的名称命名,并将这个网络设备加入到网桥中。
52.步骤s4:按业务类型,为每个跑在进程里的业务均创建一个线程池。
53.在一具体实施例中,在当前微服务发展的大环境下,单个简单的应用也能够由很多个独立的微进程所控制,即对于一个简单的工作响应,很可能就会要好几个微服务同时运作才能完成响应。但是对于这种情况的缺点就是一旦微服务出现差错,很可能也会导致该应用做出错误的动作,所以考虑到怎样将单个微服务对整体造成的影响降到最小,由此就要用到线程隔离方法。
54.具体地,对跑在进程里的每个业务,将它们拆分成一个个的服务,服务与服务之间可以相互调用。但是由于网络或者自身原因,各服务之间并不能保证相互之间的调用。一旦某个服务出现问题相继也会影响到其他服务,形成任务累计,从而导致服务瘫痪。因此可以
根据它们的业务类型创建一个线程池,通过构建netty线程模型处理连接请求与处理io操作的线程隔离。netty支持多种reactor模式,如单线程模型,多线程模型以及主从多线程模型,可以根据实际场景设置启动参数来切换对应的模式。基于事件轮询监听,不断获取处于就绪状态的通道。其中boss线程池的线程负责处理连接请求,接收到accept事件之后,将对应的socket进行封装生成niosocketchannel对象,并将其提交到workboss线程池中,处理io的read以及write事件。
55.进一步地,线程级别隔离实现线程级别细粒度的资源隔离,线程隔离具有以下优势:
56.(1)提高业务可靠性,减少业务受其他业务影响的程度,当一个业务耗尽自身的线程资源后也不会影响另外一个业务的服务质量;
57.(2)降低新加入的业务的给系统带来的风险,比如当前系统的一个进程用例中有10个业务。当新加入一个业务时,必然会抢占此前10个业务的线程资源,从而给系统带来不稳定,比如性能抖动;
58.(3)利于调试,给每一个业务都分配一个线程池名称,当业务出故障时,通过线程池名称可以很方便地定位是哪个业务出了故障,并且通过监控线程池的请求失败次数、超时次数、拒绝请求次数等可以实时的反应当前业务服务质量。
59.本发明提供的一种进程线程资源管理控制方法,包括:解析当前所创建的资源组,对划分的若干资源组中每个资源组关联一个或多个分类器,在分类器中设置条件,用于查询任务对应的信息;接收来自分布式数据库系统外部的业务或租户的查询请求,根据查询任务的信息进行匹配,匹配度高的为查询任务的资源组;根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离;按业务类型,为每个跑在进程里的业务均创建一个线程池。通过进程隔离可以把数据库的服务进行容器化封装,使其可以方便的运行在容器中,借助于容器本身对资源的隔离,实现进程隔离;同时线程隔离可以给每个跑在进程里的业务都按业务类型创建一个线程池,从而实现线程级别细粒度的资源隔离。通过进程隔离、线程隔离等多维度实现了资源隔离,能够通过一套分布式数据库系统同时服务于多个租户(或业务),提高业务的服务质量及系统稳定性。
60.本发明实施例还提供一种进程线程资源管理控制系统,如图2所示,包括:
61.解析模块1,用于解析当前所创建的资源组,将每个资源组关联一个或多个分类器,在分类器中设置查询条件。详细内容参见上述方法实施例中步骤s1的相关描述,在此不再赘述。
62.接收模块2,用于接收来自分布式数据库系统外部的业务或租户的查询请求,将查询请求与查询条件进行匹配,将匹配度大于预设值的查询条件对应的分类器关联的资源组确定为查询请求的资源组。详细内容参见上述方法实施例中步骤s2的相关描述,在此不再赘述。
63.进程模块3,用于根据资源组的分配情况,将传入的数据库资源通过docker容器对进程进行隔离。详细内容参见上述方法实施例中步骤s3的相关描述,在此不再赘述。
64.线程模块4,用于按业务类型,为每个跑在进程里的业务均创建一个线程池。详细内容参见上述方法实施例中步骤s4的相关描述,在此不再赘述
65.本发明实施例提供一种计算机设备,如图3所示,该设备可以包括处理器81和存储
器82,其中处理器81和存储器82可以通过总线或者其他方式连接,图3以通过总线连接为例。
66.处理器81可以为中央处理器(central processing unit,cpu)。处理器81还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
67.存储器82作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的对应的程序指令/模块。处理器81通过运行存储在存储器82中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的进程线程资源管理控制方法。
68.存储器82可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器81所创建的数据等。此外,存储器82可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器82可选包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至处理器81。上述网络的实例包括但不限于互联网、企业内部网、企业内网、移动通信网及其组合。
69.一个或者多个模块存储在存储器82中,当被处理器81执行时,执行如图1所示的进程线程资源管理控制方法。
70.上述计算机设备具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
71.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,所述程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
72.显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献