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

一种用于任务调度的微服务系统及任务调度方法与流程

2022-11-19 17:09:48 来源:中国专利 TAG:


1.本发明涉及一种微服务系统及其控制方法,更具体地说,涉及一种用于任务调度的微服务系统及任务调度方法。


背景技术:

2.微服务架构是出现在系统边界上的一个面向api的、串行集中式的强管控服务,这里的边界是企业it系统的边界,主要起到隔离外部访问与内部系统的作用。在微服务概念流行之前,api网关的实体就已经诞生了例如银行、证券等领域常见的前置机系统,它也是解决访问认证、报文转换、访问统计等问题的主要方式。移动应用、企业互联,使得后台服务支持的对象,从以前单一的web应用,扩展到多种使用场景,且每种使用场景对后台服务的要求都不尽相同。这不仅增加了后台服务的响应量,还增加了后台服务的复杂性。随着微服务架构概念的提出,api网关成为了微服务架构的一个标配组件。
3.采用微服务架构的目标和愿景:1)局部修改,局部更新。当运维对一个单体应用进行修改时,可能要先把整个包给停了,然后再去修改,而微服务只需逐步修改和更新即可;2)故障隔离,非全局。单体应用是跑在一起,所以只要一个模块有问题,其他就都会有问题。而微服务的故障隔离性、业务可持续性都非常高;3)资源利用率高。单体应用的资源利用率低,而使用微服务,可以按需分配资源,资源利用率会非常高;4)自动化运维管理平台,实现运维自动化;5)基于容器做标准化构建和持续集成、持续交付等;6)基于标准工具对部署在微服务里面的容器做服务发现和管理;7)透过容器的编排工具对容器进行自动化的伸缩管理、自动化的运维管;8)透过自动化运维监控pod容器内部的服务,及时通过预警告知负责人,这样对应的负责人能在第一时间接受到告警原因,并及时反馈结果。
4.目前微服务架构在应用时,对于本地的cpu、内存资源调度过程中对于资源和性能的要求较高。一方面需要在当前应用结束时将后台进程终止,来释放内存,因此对本地cpu、内存资源要求较高;另一方面,这也导致了在进行下一个服务时,需要重新启动应用进程,而且频繁的初始化,将会使得微服务性能受限,如在运行过程中产生类加载或即时编译,这些都会降低微服务性能。
5.以分布式任务调度服务为例,在同一家公司内的多个微服务系统都分别存在一套独立的任务调度服务,每个系统分别进行各个的任务调度,所以存在以下主要问题:1.重复造轮子,同一公司内每个系统都是开发各自的任务调度功能,增加了开发成本;2.同一公司各个系统都部署各自的任务调度服务,浪费了服务器的cpu、内存、存储等资源;
3.不同系统的开发人员开发出的任务调度功能质量参差不齐,质量不统一,问题较多;4.同一公司各个系统的定时任务功能无法统一监控,出了问题很难及时发现和排查。
6.另一方面,当微服务平台利用在汽车相关应用上时,其需要面对较高要求的调度问题,因为车辆应用的及时反馈要求较高,现有的一般微服务平台在系统架构及调度方案上都需要与之相适应。


技术实现要素:

7.针对现有技术存在的,本发明提供一种用于任务调度的微服务系统及其任务调度方法,其至少能解决任务调度重复,系统资源要求高等问题。
8.为实现上述目的,本发明采用如下技术方案:一种用于任务调度的微服务系统,包括:权限认证模块,权限认证模块根据登录请求识别用户登录信息,并根据用户登录信息授予服务权限;任务调度服务模块,任务调度服务模块配置为:根据用户登录信息创建执行器,配置与用户登录信息相匹配的一个或多个执行器参数,并返回执行器列表;在任务列表中选择调度任务或者自动发起定时调度任务,执行所选择的调度任务,将执行结果发送至消息中心,更新返回任务列表;服务治理与配置模块,服务治理与配置模块保存执行器参数和调度任务参数,使得任务调度服务模块可以调用已保存的执行器参数和调度任务参数。
9.作为本发明的一种实施方式,微服务系统还包括服务监控模块,服务监控模块实时监控权限认证模块和任务调度服务模块,根据触发机制熔断特定的任务调度服务。
10.作为本发明的一种实施方式,微服务系统还包括负载均衡模块,负载均衡模块并发处理登录请求,并平衡峰值的登录请求。
11.作为本发明的一种实施方式,微服务系统还包括数据库集群,任务调度服务模块、服务治理与配置模块、服务监控模块分别调用数据库集群的数据。
12.作为本发明的一种实施方式,任务调度服务模块包括调度层和执行层。
13.作为本发明的一种实施方式,调度层包括:任务管理单元,任务管理单元设置为创建执行器,配置与用户登录信息相匹配的执行器参数;执行器管理单元,执行器管理单元设置为配置执行器的注册方式、机器地址列表;日志管理单元,日志管理单元设置为配置执行器参数的调度日志。
14.作为本发明的一种实施方式,执行层根据调度层的配置,调用数据库集群内的数据。
15.作为本发明的一种实施方式,对于手动执行任务,用户首先发起执行调度任务,任务调度服务模块的前端在任务列表中选择对应的任务,并执行该任务;任务执行之后,任务调度服务模块的前端向后端发送任务执行完成的指令。
16.作为本发明的一种实施方式,对于自动执行任务,任务调度服务模块的后端直接自动发起定时调度任务,执行所选择的调度任务,保存被执行任务的执行日志和系统日志,并将执行结果发送给任务调度服务模块的子系统之一的共用消息通知系统,更新返回任务列表。
17.为实现上述目的,本发明还采用如下技术方案:一种利用微服务系统的任务调度方法,包括:根据登录请求识别用户登录信息,并根据用户登录信息授予服务权限;根据用户登录信息创建执行器,配置与用户登录信息相匹配的一个或多个执行器参数,并返回执行器列表;配置调度任务,调度任务配置为选择符合配置条件的执行器,以此对执行器所执行的执行器参数进行选择,并返回任务列表;在任务列表中选择调度任务或者自动发起定时调度任务,执行所选择的调度任务,将执行结果发送至消息中心,更新返回任务列表。
18.作为本发明的一种实施方式,利用用户登录信息换取用户标记,根据用户标记判断用户是否具有分布式任务调度服务权限。
19.作为本发明的一种实施方式,将执行器数据和调度任务数据分为两组独立的数据流,分别利用两组独立的数据流进行监控报警、消息通知和日志记录。
20.作为本发明的一种实施方式,执行所选择的调度任务包括手动执行任务:对于手动执行任务,首先发起执行调度任务,在任务列表中选择对应的任务,并执行该任务;任务执行之后,发送任务执行完成的指令。
21.作为本发明的一种实施方式,执行所选择的调度任务包括自动执行任务:对于自动执行任务的,直接自动发起定时调度任务,执行所选择的调度任务,保存被执行任务的执行日志和系统日志,并将执行结果发送给消息中心,更新返回任务列表。
22.在上述技术方案中,本发明能够提升系统在汽车相关应用的调度效率,满足调度要求并降低硬件资源。
附图说明
23.图1是本发明微服务系统的架构示意图;图2是图1的部分架构示意图;图3是本发明任务调度方法的时序图;图4是权限认证模块认证流程的时序图;图5是任务调度服务的数据流示意图。
具体实施方式
24.下面结合附图和实施例,对本发明实施例中的技术方案进一步作清楚、完整地描述。显然,所描述的实施例用来作为解释本发明技术方案之用,并非意味着已经穷举了本发明所有的实施方式。
25.所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
26.参照图1,本发明首先公开一种用于任务调度的微服务系统,其包括7个主要的功能模块,分别是权限认证模块iam、任务调度服务模块pod、服务治理与配置模块、负载均衡模块(slb/ingress)、服务监控模块、运维模块和数据库集群(基础设施模块)等。其中,任务调度服务模块主要包括任务管理单元、执行器管理单元、日志管理单元和其他服务单元,服务治理与配置模块主要包括服务注册单元、服务发现单元和统一配置单元,服务监控模块
主要包括熔断保护单元、实时监控服务单元、日志服务单元和调用链追踪单元。作为本发明的一种实施方式,本发明的运维模块和数据库集群可以包括各种软件平台和数据库平台,例如运维模块可以包括git部署、jenkins、docker、kubernetes等软件平台,数据库集群可以包括mysql、redis、kafka、mongodb等数据库,本发明并不以此为限。
27.如图1所示,权限认证模块根据登录请求识别用户登录信息,各系统用户首先要在权限认证模块统一身份认证界面输入自己的用户和密码,而权限认证模块根据用户登录信息授予服务权限。权限认证模块识别出用户权限,如果用户有“分布式任务调度服务”服务权限,则用户可以单点登录到分布式任务调度服务界面。负载均衡模块并发处理登录请求,所有登录请求通过负载均衡模块进行负载均衡,负载均衡模块的高并发处理机制保证所有登录请求都被有效处理,以此来平衡峰值的登录请求。
28.任务调度服务模块是图1所示系统的核心业务功能,其作用是创建执行器、配置任务详情、执行任务、记录日志、异常告警、报表展示等。任务调度服务模块包括调度层和执行层,结合图1和图2所示,调度层主要包括任务管理单元、执行器管理单元、日志管理单元和其他服务单元,调度层在任务调度服务模块内部rpc(remote procedure call,远程过程调用)调用执行层。执行层主要包括执行器服务、日志服务、执行日志log文件、回调现成、反馈调度结果queue等功能。根据调度层的配置,执行层通过调度层的调度来访问数据库集群的db(database)层,例如mysql数据库的dev开发库、test测试库、prod生产库等。
29.参照图2,任务调度服务模块中,任务管理单元根据用户登录信息创建执行器,配置与用户登录信息相匹配的一个或多个执行器参数,输出返回执行器列表。任务管理单元设置任务模式,每一个任务模式中包含任务列表。任务管理单元内部的调度器job handler用以在任务列表中选择调度任务或者自动发起定时调度任务,执行所选择的调度任务,将执行结果发送至消息中心,更新返回任务列表。
30.继续参照图2,任务调度服务模块中,执行器管理单元配置为控制执行器的注册方式、执行器名称(appname)、执行器的机器地址列表等功能;日志管理单元配置为控制执行器参数的调度日志、记录glue日志和系统日志等各种日志数据;其他服务单元配置为运行报表,在运行失败时发出失败告警,以及处理任务依赖条件等数据。
31.继续参照图1,任务调度服务模块通过其子系统和服务治理与配置模块相连接,该子系统主要包括第三方业务系统和公用消息通知系统。服务治理与配置模块是微服务注册中心和配置文件统一管理中心,其主要包括服务注册单元、服务发现单元和统一配置单元。其中服务注册单元配置为注册与用户登录信息相匹配的一个或多个服务;服务发现单元配置为监控任务调度服务模块的执行器和任务列表,以此发现特定的任务;统一配置单元保存执行器参数和调度任务参数,使得任务调度服务模块可以调用已保存的执行器参数和调度任务参数。
32.如图1和图2所示,任务调度服务模块使用quartz基于数据库的分布式功能,为保证系统“轻量级”并且降低学习部署成本,服务治理与配置模块采用db方式进行任务注册发现。通过这种结构,一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务。任务调度服务模块中的执行器部署时可以有丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性hash、最不经常使用、最近最久未使用、故障转移、忙碌转移等。一次完整任务流程包括“调度(调度中心) 执行(执行器)”两个阶段。若“故障转移”发生在调度阶段,在执
行器集群部署时,如果某一台执行器发生故障,该策略支持自动切换到一台正常的执行器机器并且完成调度请求流程。若“失败重试”发生在“调度 执行”两个阶段,任务调度服务模块支持通过自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试。
33.另一方面,任务调度错过触发时间时的处理策略为:可能原因:服务重启;调度线程被阻塞,线程被耗尽;上次调度持续阻塞,下次调度被错过;处理策略:过期超5s:本次忽略,当前时间开始计算下次触发时间;过期5s内:立即触发一次,当前时间开始计算下次触发时间。
34.任务调度服务模块的密集调度或者耗时任务可能会导致任务阻塞,调度层小概率情况下会重复触发。针对上述情况,可以通过结合
ꢀ“
单机路由策略(如:第一台、一致性哈希)” “阻塞策略(如:单机串行、丢弃后续调度)”来规避,最终避免任务重复执行。
35.执行器因网络抖动回调失败或宕机等异常情况时,会导致任务调度结果丢失。由于任务管理单元依赖执行器回调来感知调度结果,因此会导致调度日志永远处于“运行中”状态。
36.针对该问题,调度中心提供内置组件进行处理,逻辑为:调度记录停留在“运行中”状态超过10min,且对应执行器注册失败不在线,则将本地调度主动标记失败。
37.继续参照图1,服务监控模块实时监控权限认证模块和任务调度服务模块,其主要包括熔断保护单元、实时监控服务单元、日志服务单元和调用链追踪单元。熔断保护单元设置了微服务的降级策略和熔断策略,根据触发机制触发相关的策略就会使特定的任务调度服务降级甚至熔断。
38.任务调度服务模块、服务治理与配置模块、服务监控模块分别可以调用数据库集群的数据。
39.参照图3,除了上述微服务系统,本发明还公开以一种应用微服务系统的任务调度方法,图3所示为该方法执行任务调度的时序图。
40.本发明的任务调度方法的主要控制逻辑是设定某一个时间点自动触发的任务,该任务可以在时间规律上去循环执行,其主要有以下特点:时间驱动:一般可以通过时间来驱动,定时、定点、定次;批量处理:批量处理堆积的数据更加有效,在不需要实时性的情况下比消息中间件更有优势,而且有的业务逻辑只能批量处理;非实时性:定时任务不要求实时性,一般不同于c端用户的交互,更多的用于业务数据的处理;隔离性/专一性:可以跟其他系统分离,只关注业务数据的处理,不影响用户的操作和用户系统的性能。
41.如图3所示,在用户登录之时,权限认证模块根据登录请求识别用户登录信息,并根据用户登录信息授予服务权限。登录完成之后,权限认证模块将任务跳转至任务调度服务模块的前端。任务跳转到调度层之后,任务调度服务模块的前端将任务应用获取的代码(code)和任务调度服务模块的后端(认证中心)进行交互以获取令牌(token),同时任务调
度服务模块的后端可以根据令牌(token)向权限认证模块获取用户信息,并且可以根据用户标记判断用户是否具有分布式任务调度服务权限。在完成用户信息的获取之后,任务调度服务模块的后端返回菜单和用户信息,如此完成了用户登录流程。
42.继续参照图3,在用户完成登录之后,任务调度服务模块可以根据用户登录信息创建执行器。在任务调度服务模块的前端配置与用户登录信息相匹配的一个或多个执行器参数,并将在任务调度服务模块的后端保存执行器参数。保存完成之后,任务调度服务模块的后端并返回执行器列表和保存内容。
43.完成执行器配置之后,任务调度服务模块可以继续配置调度任务,在任务调度服务模块的前端调度任务配置为选择符合配置条件的执行器,以此对执行器所执行的执行器参数进行选择,并将对应的任务参数发送至任务调度服务模块的后端。任务调度服务模块的后端保存任务参数,并返回任务列表。
44.继续参照图3,本发明的任务调度方法包括手动执行任务和自动执行任务两种方式。
45.对于手动执行任务方式,用户首先发起执行调度任务,任务调度服务模块的前端在任务列表中选择对应的任务,并执行该任务。任务执行之后,任务调度服务模块的前端向后端发送任务执行完成的指令。此时,任务调度服务模块的后端保存被执行任务的执行日志和系统日志,并将执行结果发送给任务调度服务模块的子系统之一的共用消息通知系统(消息中心),并返回任务列表。
46.对于自动执行任务的方式,任务调度服务模块的后端直接自动发起定时调度任务,执行所选择的调度任务,保存被执行任务的执行日志和系统日志,并将执行结果发送给任务调度服务模块的子系统之一的共用消息通知系统(消息中心),更新返回任务列表。
47.结合图1、图2和图3可见,本发明的任务调度方法主要利用任务调度服务模块、服务监控模块及运维模块,一方面能够将微服务进行分布式操作,并交由服务治理与配置模块进行统一允许管理。另一方面,通过服务监控模块对本地内存资源进行监测,并通过运维模块临时存入或调出服务进程,无需终止或多次初始化服务进程,有效提高微服务性能。
48.此外,本发明还可通过设置服务监控模块对服务端信息数据交换进行监测,保证在服务进程与互联网交互过程中的处理性能,并通过建立反馈系统来收集服务进程处理过程信息,以对任务调度服务模块进行调整,或根据接受的网关信息来通过网关调整微服务系统进行反馈,请求转发或者反馈异常信息。
49.参照图4,图4示出了权限认证模块iam对于用户身份的登录和认证流程。
50.如图4所示,权限认证模块将请求通过oauth/callback协议发送至软件开发工具包(sdk),软件开发工具包(sdk)保存令牌(token)等信息,并将令牌(token)等信息转发至任务调度服务模块的前端。在此过程中,软件开发工具包(sdk)重新定向至任务调度服务模块的前端index地址,并在地址尾部拼接应用的代码(code)。
51.任务调度服务模块的前端根据应用的代码(code)调用软件开发工具包(sdk)的oauth协议/令牌(token)接口,以此获得jwt令牌(jwttoken),并且软件开发工具包(sdk)向任务调度服务模块的前端返回jwt令牌(jwttoken)。
52.任务调度服务模块的前端在本地保存jwt令牌(jwttoken),调用任务调度服务模块的后端接口获取菜单树和用户信息。任务调度服务模块的后端通过线程变量
(threadlocal)从软件开发工具包(sdk)获取相关信息,并发送至任务调度服务模块的前端。最终,任务调度服务模块的前端将相应的菜单树和用户信息展示在前端页面上。
53.下面通过一个实施例来进一步说明图4的控制时序。
54.权限认证模块的第一接口:通过接口获取应用的代码(code),跟认证中心交互获取令牌(token),使用http方式请求令牌(token)接口。
55.请求方式:post请求协议:http协议请求参数:返回参数:权限认证模块的第二接口:根据refresh_token指令刷新access_token请求方式:post请求协议:http协议请求参数:返回参数:
权限认证模块的第三接口:根据令牌(token)向认证中请求获取用户信息请求方式:get请求协议:http协议请求参数:返回参数:解析返回数据得到用户信息,应用系统根据这个字段匹配自身平台的账号数据,让用户通过认证。
56.权限认证模块的第四接口:根据令牌(token)向认证中心校验是否有效如果应用系统需要做统一注销,每次请求接口时,都需要校验令牌(token)是否有效。具体接口如下:请求方式:get请求协议:http协议请求参数:返回参数:成功。
57.参照图5,本发明的任务调度服务模块在配置执行器及调度任务时,将执行器数据和调度任务数据分为两组独立的数据流。两组独立的数据流可以分别用来进行监控报警、消息通知和日志记录等功能。换言之,数据来源主要为两部分,一部分是用户执行器数据,第二部分是任务数据。数据输出为三个方向,一是监控告警功能,二是消息通知中心,三是日志记录功能。
58.综上所述,本发明公开一种可以用于任务调度的微服务系统及其对应的任务调度
方法,通过分布式任务调度服务模块,将第三方平台的任务进行分布式调度管理,并由任务调度服务模块进行统一管理,可将所有需要任务调度服务的第三方平台统一接入、统一权限、统一监控、统一告警,减少第三方平台的工作量,增强任务调度服务的安全性,增强可用性,达到了升效降本的目的。
59.本发明的系统及方法至少可以带来以下的有益效果:1.统一任务接入管理:统一由任务调度服务模块对全部接入的系统进行执行器的创建和任务的创建、停止等操作,减少了第三方系统的管理压力,第三方系统引入任务调度服务的依赖jar包即可顺利接入;2.统一用户权限控制:通过统一的权限认证模块对所有接入的第三方系统的接入用户进行权限控制,菜单权限控制、数据隔离展示;3.统一监控:所有接入的第三方系统日志都统一存储、统一展示,所有任务的状态统一展示,节省了第三方接入系统的工作量;4.统一告警:所有接入的第三方系统产生的异常告警通过通知服务进行统一的短信告警、邮件告警,不需要每个系统分别处理告警信息。
60.本发明的该装置可以是一种计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行如以上各方法实施例中的方法的部分或全部步骤。
61.本发明的该装置可以是一种应用发布平台,其中,应用发布平台用于发布计算机程序产品,其中,当计算机程序产品在计算机上运行时,使得计算机执行如以上各方法实施例中的方法的部分或全部步骤。
62.在本发明的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
63.本发明的各个系统、单元若以软件功能单元的形式实现时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本发明的技术方案的部分或者全部,可以通过软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台或多台计算机设备(例如个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本发明的各个实施例上述方法的部分或全部步骤。
64.本领域的技术人员可以理解,本发明所列举的各个实施例的全部或部分步骤可以通过计算机程序来指令相关的硬件来完成,这些计算机程序可以集中或分布式地存储于一个或多个计算机装置中,例如存储于可读存储介质中。上述计算机装置包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
65.本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变
化、变型都将落在本发明的权利要求书范围内。
再多了解一些

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

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

相关文献