CN111427634A - 一种原子服务调度的方法及装置 - Google Patents
一种原子服务调度的方法及装置 Download PDFInfo
- Publication number
- CN111427634A CN111427634A CN202010238530.5A CN202010238530A CN111427634A CN 111427634 A CN111427634 A CN 111427634A CN 202010238530 A CN202010238530 A CN 202010238530A CN 111427634 A CN111427634 A CN 111427634A
- Authority
- CN
- China
- Prior art keywords
- atomic service
- target
- task execution
- execution request
- service
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种原子服务调度的方法及装置,方法包括:获取任务执行请求,根据任务执行请求携带的请求方信息,确定请求方是否具有调用目标原子服务的权限,在确定请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址,通过调用地址获取目标原子服务并在目标主机上运行目标原子服务。本发明通过在确定所请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址,而后通过调用地址获取目标原子服务并在目标主机上运行目标原子服务,无需人工参与,降低了原子服务维护成本,提高了原子服务的安全性和质量。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种原子服务调度的方法及装置。
背景技术
随着业务的高速发展,私有云数据中心(Internet Data Center,IDC)也随之迅速扩张。这就意味着私有云数据中心下的主机数量也变得非常庞大。为提高私有云环境下对主机的自动化管理效率,当前已经形成众多原子服务(最细粒度的服务)以应对主机管理运维和服务请求等场景。
主机管理运维场景是指对主机进行主机初始化、主机巡检等场景,现有技术中开发人员通过开发原子服务并通过创建定时任务的方式进行管理。
服务请求场景是指创建用户、修改系统配置等场景,开发人员收到该类任务的执行请求后,通过手工触发的方式找到对应原子服务以完成该任务。
通过上述描述可以看出,现有技术中虽然通过原子服务来实现对私有云数据中心内的主机的管理,但在管理过程中需要较多的人力进行原子服务的触发。
发明内容
本申请提供了一种原子服务调度的方法及装置,用以解决如何提高原子服务调度效率的问题。
第一方面,本申请实施例提供一种原子服务调度的方法,包括:
获取任务执行请求;所述任务执行请求用于指示在目标主机上执行目标原子服务;
根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限;
在确定所述请求方具有调用所述目标原子服务的权限后,确定所述目标原子服务所在的调用地址;各原子服务的调用地址是各原子服务注册时确定的;
通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
上述方案,通过在确定所请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址,而后通过调用地址获取目标原子服务并在目标主机上运行目标原子服务,无需人工参与,降低了原子服务维护成本,提高了原子服务的安全性和质量。
可选的,所述获取任务执行请求,包括:
从所述目标原子服务的接口中获取所述任务执行请求;其中,各原子服务的接口是在各原子服务注册时设置的。
上述方案,通过为每个原子服务设计各自对应的接口,使得各原子服务之间的具有一定的独立性互相解耦,从而对原子服务的管理更加高效便捷。
可选的,在所述获取任务执行请求之前,还包括:
接收所述目标原子服务的注册请求;
确定所述目标原子服务的代码符合安全要求后,生成所述目标原子服务的接口并确定所述目标原子服务的调用地址。
上述方案,通过对原子服务进行安全性扫描提高了原子服务的安全性。
可选的,在所述获取任务执行请求之前,还包括:
接收使用方的注册请求,所述使用方的注册请求包括使用方标识、调用的原子服务;
根据所述使用方标识及使用方的IP,生成使用方秘钥;
将所述使用方标识和所述使用方秘钥对应存储至所述调用的原子服务的权限记录中。
上述方案,通过根据使用方标识及使用方的IP生成使用方秘钥提高了原子服务的安全性以及原子服务调度的效率。
可选的,所述请求方信息包括请求方标识、请求方秘钥;
所述根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限,包括:
确定所述目标原子服务的权限记录中是否包括所述请求方标识和请求方秘钥的对应关系,从而确定是否具有调用所述目标原子服务的权限。
上述方案,通过确定目标原子服务的权限记录中是否包括请求方标识和请求方秘钥的对应关系确定是否具有权限提高了原子服务的安全性以及原子服务调度的效率。
可选的,所述获取任务执行请求,包括:
从原子服务调用接口获取所述任务执行请求,所述任务执行请求中包括目标原子服务的标识。
上述方案,通过将原子服务对外提供统一接口使得原子服务的调度更加便捷高效。
可选的。所述通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务,包括:
通过分布式调度中心确定执行所述任务执行请求的各调度节点;
各调度节点从所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
上述方案,通过分布式调度中心,实现了跨进程、跨主机、跨网络的原子服务调用;通过计算每个调度节点的任务量或者繁忙程度,实现均衡负载。
第二方面,本申请实施例提供一种原子服务调度的装置,所述装置包括:
获取模块,用于获取任务执行请求;所述任务执行请求用于指示在目标主机上执行目标原子服务;
处理模块,用于根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限;
在确定所述请求方具有调用所述目标原子服务的权限后,确定所述目标原子服务所在的调用地址;各原子服务的调用地址是各原子服务注册时确定的;
通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
可选的,所述获取模块具体用于:
从所述目标原子服务的接口中获取所述任务执行请求;其中,各原子服务的接口是在各原子服务注册时设置的。
可选的,所述获取模块还用于:
在所述获取任务执行请求之前,接收所述目标原子服务的注册请求;
确定所述目标原子服务的代码符合安全要求后,生成所述目标原子服务的接口并确定所述目标原子服务的调用地址。
可选的,所述获取模块还用于:
在所述获取任务执行请求之前,接收使用方的注册请求,所述使用方的注册请求包括使用方标识、调用的原子服务;
根据所述使用方标识及使用方的IP,生成使用方秘钥;
将所述使用方标识和所述使用方秘钥对应存储至所述调用的原子服务的权限记录中。
可选的,所述请求方信息包括请求方标识、请求方秘钥;
所述处理模块具体用于:
确定所述目标原子服务的权限记录中是否包括所述请求方标识和请求方秘钥的对应关系,从而确定是否具有调用所述目标原子服务的权限。
可选的,所述获取模块具体用于:
从原子服务调用接口获取所述任务执行请求,所述任务执行请求中包括目标原子服务的标识。
可选的,所述处理模块具体用于:
通过分布式调度中心确定执行所述任务执行请求的各调度节点;
各调度节点从所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述原子服务调度的方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述原子服务调度的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种原子服务调度的方法的系统框架;
图2为本发明实施例提供的一种原子服务调度的方法的流程示意图;
图3为本发明实施例提供的一种原子服务调度的方法的流程示意图;
图4为本发明实施例提供的一种原子服务调度的方法的示意图;
图5为本发明实施例提供的一种原子服务调度的方法的流程示意图;
图6为本发明实施例提供的一种原子服务调度的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先,对本申请中的部分用语进行解释说明,以便使本领域技术人员理解。
IaaS:基础设施即服务(Infrastructure as a Service,IaaS),是云服务的最底层,主要提供一些基础资源。
ITSM:IT服务管理(ITService Management),泛指ITSM管理平台。
Ansible:ansible是一种自动化运维工具,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。包括command、script、shell、playbool等模块。
随着业务的发展,各部门之间的技术体系会越来越不具有相关性,从而会给服务端系统的稳定性和可运维性带来很大的挑战,需要有一个统一的原子服务架构的实践,来统一解决当前的架构问题,防止架构腐化,提升系统的稳定性。
基于此,本发明实施例提供一种原子服务调度的方法,本发明实施例提供的原子服务调度的方法,可以适用于如图1所示的系统架构中,该系统架构包括分布式调度中心100,调度节点200。
其中,分布式调度中心100获取任务执行请求,在确定请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址。
调度节点200分为调度节点1、调度节点2、调度节点3、…、调度节点N,调度节点200通过调用地址获取目标原子服务并在目标主机上运行目标原子服务。
具体的,分布式调度中心100确定执行任务执行请求的各调度节点;
调度节点200从调用地址获取目标原子服务并在目标主机上运行目标原子服务。
需要说明的是,分布式调度中心100实时监控各调度节点200的任务执行状态,任务执行状态可以是调度节点200当前待执行目标原子服务的目标主机的数量。
举个例子,分布式调度中心100获取的任务执行请求指示调用原子服务1在600个目标主机上执行,分布式调度中心100实时监控到6个调度节点均没有待执行目标原子服务的目标主机,则分布式调度中心100将600个目标主机执行目标原子服务的任务平均分配到每个调度节点。也就是说,每个调度节点在分布式调度中心分配后待执行目标原子服务的目标主机的数量均为100。
本申请实施例中,在一种可能的实施方式中,分布式调度中心100单独部署在一个服务器上。
在另一种可能的实施方式中,分布式调度中心100与N个调度节点中的一个调度节点共同部署在一个服务器上。比如一共有5个调度节点分别为调度节点1、调度节点2、调度节点3、调度节点4、调度节点5。此时分布式调度中心部署在调度节点1的服务器上,也就是说,调度节点1与调度节点2、调度节点3、调度节点4、调度节点5所在服务器之间的关系为主从关系。
需要说明的是,图1仅是本申请实施例系统架构的一种示例,本申请对此不做具体限定。
基于上述所示意的系统架构,图2为本发明实施例提供的一种原子服务调度的方法所对应的流程示意图,如图2所示,该方法包括:
步骤201,获取任务执行请求。
需要说明的是,任务执行请求用于指示在目标主机上执行目标原子服务。
步骤202,根据任务执行请求携带的请求方信息,确定请求方是否具有调用目标原子服务的权限。
步骤203,在确定请求方具有调用所述目标原子服务的权限后,确定目标原子服务所在的调用地址。
需要说明的是,各原子服务的调用地址是各原子服务注册时确定的。
步骤204,通过调用地址获取目标原子服务并在目标主机上运行目标原子服务。
在本申请实施例中,原子服务有以下特点:
1、彼此独立:既然是一个独立的服务,有自己一整套的完整的运行机制那必然是一个完整的自治系统,不依赖外部的东西就能够提供服务。
2、原子化:也就是说服务不能再划分成更小的服务了。
3、组合和重构:原子服务能快速的组合和重构。彼此组合成一个系统。系统里面所有的实体在概念上是对等的。因此它的结构相对简单化,是一种松散耦合的结构。这样的系统,往往具有更强的可扩展性和鲁棒性。
在步骤201中,从目标原子服务的接口中获取任务执行请求。
需要说明的是,各原子服务的接口是在各原子服务注册时设置的。
本申请实施例中,在一种可能的实施方式中,每一个原子服务均对应一个原子服务的接口,也就是说,每一个原子服务的接口是一个原子服务特有的,基于此,在获取任务执行请求时,可以通过任务执行请求的接口地址确定需要调度的原子服务。比如,接口地址为http://xxx.domain.com/apimntinvokeapi/systemctl,其中http://xxx.domain.com为域名,apimnt invokeapi/为接口所属的分类,systemctl为原子服务名称,从而对应到具体的原子服务。
上述方案,通过为每个原子服务设计各自对应的接口,使得各原子服务之间的具有一定的独立性互相解耦,从而对原子服务的管理更加高效便捷。
在另一种可能的实施方式中,从原子服务调用接口获取任务执行请求,任务执行请求中包括目标原子服务的标识。可以看出,多个不同的原子服务对外有一个统一的接口。比如,统一的接口地址为http://xxx.domain.com/apimntinvokeapi,此时,由于调度不同的原子服务的任务执行请求都使用同一个接口,任务执行请求中要包括目标原子服务的标识以使任务执行请求对应到具体的原子服务,比如,目标原子服务的标识可以为目标原子服务的名称,本申请对此不做具体限定。
上述方案,通过将原子服务对外提供统一接口使得原子服务的调度更加便捷高效。
从上述内容可以看出,各原子服务的接口是在各原子服务注册时设置的,也就是说,在原子服务调度之前即在步骤201之前需要完成对需要调度的原子服务进行注册,下面具体介绍原子服务的注册流程。
首先,接收目标原子服务的注册请求;然后,确定目标原子服务的代码符合安全要求后,生成目标原子服务的接口并确定目标原子服务的调用地址。其中,目标原子服务的接口也可称为原子服务调用接口,此处是表示针对目标原子服务刚生成的接口。
需要说明的是,原子服务分为可执行的脚本、ansible的playbook/shell/cmd/script模块、Linux命令三种类型。
具体的,确定目标原子服务的代码是否符合安全要求:获取待注册的原子服务对应的脚本或者可执行文件后,进行安全性扫描,通过引入规则库,原子服务若符合预设的规则库则不予注册。需要说明的是,规则库可以根据业务需求动态配置。
进一步的,举个例子,规则库中设置有系统高危命令,若扫描到原子服务具有这类系统高危命令,则不予注册:
比如,rm-rf表示强制删除文件或目录;:(){:||:&}表示定义一个函数并不断递归,不停地制造后台任务;>/dev/sda表示定向清空某个分区;^foo^bar或s/old/new/表示强制替换字符。
上述方案,通过对原子服务进行安全性扫描提高了原子服务的安全性。
对于生成原子服务的接口,可以根据原子服务的传参格式生成标准的接口。
需要说明的是,传参格式可支持预先设置的参数格式,包括位置参数及常规JSON参数。
具体的,根据注册的原子服务对应的原子服务名称生成对应的url路由接口路径,并记录传参格式到数据库。也就是说,在调度原子服务时获取到任务执行请求时会先进行任务执行请求的格式校验,若格式不符则不予通过。
举个例子,原子服务的名称为systemctl,生成的原子服务的接口API为http:// xxx.domain.com/apimnt/invokeapi/systemctl。
在一种可能的实施方式中,传参格式采用位置参数。比如systemctl[start|status|restart|stop][any]。
需要说明的是,位置参数以“[]”引用。若需对传入的参数进行安全限制,可使用“|”分隔;若不限定参数,则使用“any”标记。
基于此,生成的API为:
接口地址:http://xxx.domain.com/apimnt/invokeapi/systemctl
进一步的,传参格式如下:
其中,"systemctl"为原子服务名称,"appId"为请求方标识,"key"为密钥,"async":"True/False"为是否异步,若异步,则分布式调度中心采用异步任务执行模式。"hosts":"[10.0.0.1,10.0.0.2]"为目标主机,"args":"['start|stop|restart|status'][‘mariadb]"为调用的原子服务。
在一种可能的实施方式中,传参格式采用JSON参数:python app_service.py[json]。
需要说明的是,json参数以“[json]”标记。
基于此,生成的API为:
接口地址:http://xxx.domain.com/apimnt/invokeapi/appImpl
具体的,本申请提供了如图3所示的使用原子服务的注册方法的方法流程。
如图3所示:
步骤301,接收使用方的注册请求。
需要说明的是,使用方的注册请求包括使用方标识、调用的原子服务。
步骤302,根据使用方标识及使用方的IP,生成使用方秘钥;
步骤303,将使用方标识和使用方秘钥对应存储至调用的原子服务的权限记录中。
从上述内容可以看出,为保证原子服务的安全性,使用方需要注册使用方标识,比如使用方ID。
进一步的,调用的原子服务的权限记录可以采用白名单,将使用方标识和使用方秘钥添加到调用的原子服务的白名单中。
具体的,本申请实施例中可以根据使用方标识及使用方的IP通过hash算法生成使用方秘钥。
需要说明的是,基于上述的示例,也可以根据使用方标识、使用方的IP以及调用的原子服务的名称通过hash算法生成使用方秘钥。
上述方案,通过根据使用方标识及使用方的IP生成使用方秘钥提高了原子服务的安全性以及原子服务调度的效率。
本申请实施例在步骤202中,请求方信息包括请求方标识、请求方秘钥;
需要说明的是,随着业务规模的不断扩大,业务逻辑的复杂性不断升级,请求方可以是一个公司,也可以是一个公司的子系统。
基于此,即使同一个源IP地址,也可以由不同的子系统发送任务执行请求。请求方标识可以是子系统ID,本申请对此不做具体限定。
需要说明的是,请求方秘钥与请求方标识一一对应。
具体的,根据任务执行请求携带的请求方信息,确定请求方是否具有调用目标原子服务的权限通过如下方式:
确定目标原子服务的权限记录中是否包括请求方标识和请求方秘钥的对应关系,从而确定是否具有调用目标原子服务的权限。
举个例子,原子服务2的权限记录中记录着子系统24和对应的秘钥huschagusbu,任务执行请求携带的请求方信息包括请求方标识子系统24和请求方秘钥jiadhudg,经过比对,秘钥是不一致的,所以该任务执行请求不具有调用目标原子服务的权限。
上述方案,通过确定目标原子服务的权限记录中是否包括请求方标识和请求方秘钥的对应关系确定是否具有权限提高了原子服务的安全性以及原子服务调度的效率。
进一步的,在步骤204中,通过调用地址获取目标原子服务并在目标主机上运行目标原子服务,包括:
通过分布式调度中心确定执行任务执行请求的各调度节点;
各调度节点从调用地址获取目标原子服务并在目标主机上运行所标原子服务。
需要说明的是,分布式调度中心实时监控各调度节点的任务执行状态,任务执行状态可以是调度节点当前待执行目标原子服务的目标主机的数量。
举个例子,分布式调度中心获取的任务执行请求指示调用原子服务systemctl在100个目标主机上执行,分布式调度中心实时监控到5个调度节点均没有待执行目标原子服务的目标主机,则分布式调度中心将100个目标主机执行目标原子服务的任务平均分配到每个调度节点。也就是说,每个调度节点在分布式调度中心分配后待执行目标原子服务的目标主机的数量均为20个。
上述方案,通过分布式调度中心,实现了跨进程、跨主机、跨网络的原子服务调用;通过计算每个调度节点的任务量或者繁忙程度,实现均衡负载。
本申请实施例中,在一种可能的实施方式中,分布式调度中心单独部署在一个服务器上。
在另一种可能的实施方式中,分布式调度中心与5个调度节点中的一个调度节点共同部署在一个服务器上。
比如在上述的示例中,一共有5个调度节点分别为调度节点1、调度节点2、调度节点3、调度节点4、调度节点5。此时分布式调度中心部署在调度节点1的服务器上,也就是说,调度节点1与调度节点2、调度节点3、调度节点4、调度节点5所在服务器之间的关系为主从关系。也就是说,调度节点1获取任务执行请求的同时本身也通过确定的调用地址获取目标原子服务并在目标主机上运行目标原子服务。
基于上述内容,本申请实施例中,当发送注册请求的使用方与发送任务执行请求的请求方不一致时,可以通过如下方式实现本申请所提供的原子服务调度的方法。下面以A注册了原子服务3后B需要调度原子服务3为例:
1、在原子服务注册成功后增添了B的源IP地址。当B发送任务执行请求后可以通过原子服务3的权限记录确定B是否具有权限。
需要说明的是,上述两种方式仅是两种可能的示例,本申请对此不做具体限定。
上述方案,通过在确定所请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址,而后通过调用地址获取目标原子服务并在目标主机上运行目标原子服务,无需人工参与,降低了原子服务维护成本,提高了原子服务的安全性和质量。
为了更好的解释本发明,下面结合图4具体介绍本申请所提供的一种原子服务调度的方法。
首先,对图中的部分用语进行解释说明。
Nginx:一个高性能的服务器。
ZooKeeper:ZooKeeper是一个分布式应用程序协调服务,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
Producer:异步任务生产模块,发起异步任务。
Celery Beat:定时任务模块,Beat进程会读取配置文件的内容,周期性的将配置中到期需要执行的任务发送给任务队列。
Broker:消息中间件模块。
Worker:任务执行单元模块,Worker是Celery提供的任务执行的单元。
Result Backend:任务结果存储模块,用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP,redis等。
MySQL:MySQL是一个关系型数据库管理系统。
基于图4所示意的架构,图5为本发明实施例提供的一种原子服务调度的方法所对应的流程示意图。
步骤501,NGINX将任务执行请求转发到API管理模块。
需要说明的是,NGINX获取外部系统比如ITSM的任务执行请求。
步骤502,API管理模块中的API鉴权模块通过后将任务执行请求下发到zookeeper集群。
需要说明的是,如图4所示,API管理模块包括API鉴权模块、原子服务管理模块、原子服务安全性扫描模块、调用记录查询模块。
具体的,在原子服务注册时先在原子服务管理模块注册原子服务,然后在原子服务安全性扫描模块进行原子服务安全性扫描,扫描通过后生成API。
进一步的,API鉴权管理模块对已经注册的原子服务进行鉴权。
步骤503,异步任务模块Producer或定时任务模块Celery Beat发起异步任务时,将异步任务发送给消息中间件Broker。
步骤504,Broker将任务存入队列。
步骤505,原子服务执行单元Worker实时监控任务执行队列,获取队列中调度的任务并执行。
步骤506,Backend存储任务的执行结果。
在一种可能的实施方式中,以Redis作为消息中间件,采用10个并发worker作为执行单元,调用Ansible相关模块执行任务。Backend采用MySQL用于存储原子服务的执行结果,并将执行过程以文件格式存储,以供查询。
本申请实施例中,zookeeper作为分布式调度中心,可以根据每个调度节点当前Broker队列的任务数量,将任务执行请求中涉及的目标主机分配,比如将任务执行请求平均分发到各调度节点,实现负载均衡。
举个例子,任务执行请求为涉及1000个目标主机的巡检任务,zookeeper分布式调度中心计算每个调度节点的broker队列任务数,再将1000个目标主机分成多个任务集合,分发到每个调度节点,再通过worker调用原子服务进行处理。
本发明实施例,适用于分布式架构集群中,在确定所请求方具有调用目标原子服务的权限后,确定目标原子服务所在的调用地址,而后通过调用地址获取目标原子服务并在目标主机上运行目标原子服务,即使是在目前的单体架构下演进成分布式架构,也可以解决目前技术在演进后无法跨进程、跨主机、跨网络场景的调度问题,本发明即使跨进程、跨主机、跨网络场景,整个过程也无需人工参与即可实现原子调度服务,降低了原子服务维护成本,提高了原子服务的安全性和质量。
基于同一发明构思,图6示例性的示出了本发明实施例提供的一种原子服务调度的装置,该装置可以为原子服务调度的方法的流程。
所述原子服务调度的装置,包括:
获取模块601,用于获取任务执行请求;所述任务执行请求用于指示在目标主机上执行目标原子服务;
处理模块602,用于根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限;
在确定所述请求方具有调用所述目标原子服务的权限后,确定所述目标原子服务所在的调用地址;各原子服务的调用地址是各原子服务注册时确定的;
通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
可选的,所述获取模块601具体用于:
从所述目标原子服务的接口中获取所述任务执行请求;其中,各原子服务的接口是在各原子服务注册时设置的。
可选的,所述获取模块601还用于:
在所述获取任务执行请求之前,接收所述目标原子服务的注册请求;
确定所述目标原子服务的代码符合安全要求后,生成所述目标原子服务的接口并确定所述目标原子服务的调用地址。
可选的,所述获取模块601还用于:
在所述获取任务执行请求之前,接收使用方的注册请求,所述使用方的注册请求包括使用方标识、调用的原子服务;
根据所述使用方标识及使用方的IP,生成使用方秘钥;
将所述使用方标识和所述使用方秘钥对应存储至所述调用的原子服务的权限记录中。
可选的,所述请求方信息包括请求方标识、请求方秘钥;
所述处理模块602具体用于:
确定所述目标原子服务的权限记录中是否包括所述请求方标识和请求方秘钥的对应关系,从而确定是否具有调用所述目标原子服务的权限。
可选的,所述获取模块601具体用于:
从原子服务调用接口获取所述任务执行请求,所述任务执行请求中包括目标原子服务的标识。
可选的,所述处理模块602具体用于:
通过分布式调度中心确定执行所述任务执行请求的各调度节点;
各调度节点从所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述原子服务调度的方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述原子服务调度的方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种原子服务调度的方法,其特征在于,所述方法包括:
获取任务执行请求;所述任务执行请求用于指示在目标主机上执行目标原子服务;
根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限;
在确定所述请求方具有调用所述目标原子服务的权限后,确定所述目标原子服务所在的调用地址;各原子服务的调用地址是各原子服务注册时确定的;
通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
2.如权利要求1所述的方法,其特征在于,所述获取任务执行请求,包括:
从所述目标原子服务的接口中获取所述任务执行请求;其中,各原子服务的接口是在各原子服务注册时设置的。
3.如权利要求1所述的方法,其特征在于,在所述获取任务执行请求之前,还包括:
接收所述目标原子服务的注册请求;
确定所述目标原子服务的代码符合安全要求后,生成所述目标原子服务的接口并确定所述目标原子服务的调用地址。
4.如权利要求1所述的方法,其特征在于,在所述获取任务执行请求之前,还包括:
接收使用方的注册请求,所述使用方的注册请求包括使用方标识、调用的原子服务;
根据所述使用方标识及使用方的IP,生成使用方秘钥;
将所述使用方标识和所述使用方秘钥对应存储至所述调用的原子服务的权限记录中。
5.如权利要求1所述的方法,其特征在于,所述请求方信息包括请求方标识、请求方秘钥;
所述根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限,包括:
确定所述目标原子服务的权限记录中是否包括所述请求方标识和请求方秘钥的对应关系,从而确定是否具有调用所述目标原子服务的权限。
6.如权利要求1所述的方法,其特征在于,所述获取任务执行请求,包括:
从原子服务调用接口获取所述任务执行请求,所述任务执行请求中包括目标原子服务的标识。
7.如权利要求1至6任一项所述的方法,其特征在于,所述通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务,包括:
通过分布式调度中心确定执行所述任务执行请求的各调度节点;
各调度节点从所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
8.一种原子服务调度的装置,其特征在于,包括:
获取模块,用于获取任务执行请求;所述任务执行请求用于指示在目标主机上执行目标原子服务;
处理模块,用于根据所述任务执行请求携带的请求方信息,确定请求方是否具有调用所述目标原子服务的权限;
所述处理模块,还用于在确定所述请求方具有调用所述目标原子服务的权限后,确定所述目标原子服务所在的调用地址;各原子服务的调用地址是各原子服务注册时确定的;
所述处理模块,还用于通过所述调用地址获取所述目标原子服务并在所述目标主机上运行所述目标原子服务。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010238530.5A CN111427634A (zh) | 2020-03-30 | 2020-03-30 | 一种原子服务调度的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010238530.5A CN111427634A (zh) | 2020-03-30 | 2020-03-30 | 一种原子服务调度的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111427634A true CN111427634A (zh) | 2020-07-17 |
Family
ID=71549943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010238530.5A Pending CN111427634A (zh) | 2020-03-30 | 2020-03-30 | 一种原子服务调度的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427634A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532523A (zh) * | 2020-11-23 | 2021-03-19 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
-
2020
- 2020-03-30 CN CN202010238530.5A patent/CN111427634A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112532523A (zh) * | 2020-11-23 | 2021-03-19 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976774B (zh) | 区块链节点部署方法、装置、设备和存储介质 | |
CN107145380B (zh) | 虚拟资源编排方法及装置 | |
CN111190714B (zh) | 一种基于区块链的云计算任务调度系统及方法 | |
CN110888721A (zh) | 一种任务调度的方法及相关装置 | |
CN112000448A (zh) | 基于微服务架构的应用管理方法 | |
CN107291750B (zh) | 一种数据迁移方法和装置 | |
RU2683630C2 (ru) | Способ обновления дескриптора сетевой службы nsd и устройство | |
CN111212116A (zh) | 一种基于容器云的高性能计算集群创建方法和系统 | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
CN113312165B (zh) | 一种任务处理方法及装置 | |
CN109416646B (zh) | 一种容器分配的优化方法及处理设备 | |
CN109450976B (zh) | 一种业务系统的访问的方法及装置 | |
CN111124589B (zh) | 一种服务发现系统、方法、装置及设备 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和系统 | |
CN112445865B (zh) | 自动化部署区块链网络的方法、装置及云计算平台 | |
CN113220431B (zh) | 跨云的分布式数据任务调度方法、设备及存储介质 | |
CN111414381A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112905337A (zh) | 软硬件混合部署的MySQL集群调度方法及装置 | |
CN108170417B (zh) | 一种在mesos集群中集成高性能的作业调度框架的方法和装置 | |
CN111858050B (zh) | 服务器集群混合部署方法、集群管理节点及相关系统 | |
CN113419818B (zh) | 基础组件部署方法、装置、服务器及存储介质 | |
US20100228951A1 (en) | Parallel processing management framework | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
WO2022257247A1 (zh) | 数据处理方法、装置及计算机可读存储介质 | |
CN112965817B (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 |