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

一种分布式轨道预报计算平台的制作方法

2023-10-25 09:22:11 来源:中国专利 TAG:


1.本发明属于计算机软件软件产品技术领域,具体涉及一种分布式轨道预报计算平台。


背景技术:

2.现有的卫星轨道预报计算应用多采用单机进行卫星轨道预报的计算,将输入、输出以文件的方式进行记录,对计算机资源利用率低下,需要不停的打开关闭文件,导致程序运行时间增加。在公开号为cn115567382a的一篇专利文件中公开了“一种面向海量轨道预报计算的弹性资源分配方法及系统”,其中方法包括以下步骤:s1.将全部可用资源虚拟化,通过虚拟机平台以虚拟机形式对外提供服务运行的硬件基础;s2.将轨道计算算法封装成容器镜像存放在镜像仓库中,通过调度计算服务驱动虚拟机平台分配新虚拟机后,从镜像仓库中获取最新的轨道计算算法副本,并通过服务注册中心完成部署注册;s3.外部业务软件通过api网关提交轨道计算需求,并通过调度计算服务将轨道计算需求以负载均衡的方式分配至现有计算资源中,最终完成轨道计算并返回计算结果。该申请使用的是资源虚拟化的方式来进行计算机资源的充分利用,但是,该申请在进行计算任务分配后会进行计算服务镜像的启动、关闭等操作,会增加部分计算耗时,降低整体的计算效率。


技术实现要素:

3.本发明的目的是提出一种分布式轨道预报计算平台,采用分布式消息中间件kafka来进行轨道预报计算任务的分发,将计算服务部署于多台服务器,通过订阅不同的消息主题来触发不同的轨道预报计算任务,不需要接到任务后才能创建进程启动轨道预报计算程序,减少时间的损耗,能够减少磁盘的读写时间,避免大量的文件打开关闭操作,从而提升整体的计算效率。
4.本发明采取的技术方案是一种分布式轨道预报计算平台,包括api接口模块、计算资源管理调度模块、作业管理模块和资源监控模块;
5.api接口模块完成轨道预报计算程序的封装与部署;
6.计算资源管理调度模块实现计算资源管理,完成平台所有资源的管理调度;
7.作业管理模块对调用的轨道预报计算程序进行管理;
8.资源监控模块实现管理节点和计算节点的资源监控。
9.进一步地,轨道预报计算程序封装具体步骤包括:
10.⑴
准备好待封装的库文件以及执行所需要的其他库文件;
11.⑵
将轨道预报计算程序以及其支撑文件放置在指定目录下;
12.⑶
创建对象,继承映射执行类;
13.⑷
实现具体执行逻辑;
14.⑸
如果是主任务,执行下一步,如果是子任务,跳转到步骤


15.⑹
分布式消息中间件kafka接收数据列表;
16.⑺
执行任务分片,跳转到步骤


17.⑻
接收子任务数据,生成输入文件;
18.⑼
调用可执行程序;
19.⑽
将输出文件的数据发送到分布式消息中间件kafka;
20.⑾
上报执行结果;
21.⑿
执行成功,跳转到步骤

,执行失败,跳转到步骤


22.⒀
分派子任务;
23.⒁
收集子任务执行结果;
24.⒂
判断子任务结果是否均已返回,如果是,执行下一步,如果否,执行上一步;
25.⒃
实现映射方法;
26.⒄
归并结果数据,回调结果;
27.⒅
上报服务器任务执行情况。
28.进一步地,轨道预报计算程序部署中,管理节点自动将部署安装包下发到相应的计算节点上的具体步骤为:
29.⑴
根据文件进行运行环境的创建和部署,并完成注册;
30.⑵
同时,将该轨道预报计算程序的调用封装为微服务,以restapi接口发布方式发布服务;
31.⑶
用户或第三方应用程序可通过该接口向管理节点发起服务调用;
32.⑷
管理节点计算节点的负载分配运行节点,完成远程调用,最后将结果返回给调用者;
33.⑸
若计算节点故障或其他原因导致作业执行失败,管理节点执行作业转移操作,将未完成的作业转交给其他节点继续执行。
34.进一步地,计算资源管理调度模块基于分布式资源管理框架mesos和分布式应用程序协调服务zookeeper实现计算资源管理,完成平台所有资源的管理调度。
35.进一步地,计算资源管理调度模块包括计算节点管理和计算任务调度管理;计算节点管理,实现计算节点的注册、管理、资源监控;计算任务调度管理,实现计算资源的统一整体管理,通过资源池进行作业分片、资源调度、结果数据汇总。
36.进一步地,计算任务调度管理包括资源调度管理、计算任务调度和计算任务管理;资源调度管理,依据轨道预报计算程序的计算资源池中节点的负载情况,合理进行作业分片、作业调度;计算任务调度,通过一定的规则,将任务分配到各计算节点的映射过程;计算任务管理,实现对任务整体流程的编排、执行管理、监控。
37.进一步地,作业管理模块通过web页面web console或者restapi接口调用轨道预报计算程序并对调用的程序进行管理。
38.进一步地,作业管理模块包括作业定义、作业执行和作业监控;作业执行,根据定义好的作业将其发布到计算节点上开始运行,可即时执行,也支持定时执行,执行过程可监控,执行结果可查看;作业监控,可查看每个作业的具体状态。
39.进一步地,作业定义支持三种模式:
40.单次服务调用,即通过输入参数完成某一封装的计算的服务的调用,得到返回的计算结果;
41.作业批处理,为了提高效率,可对同一服务一次性发起多次调用,平台依据负载均衡策略,可实现作业的分片,分发到不同计算节点同时执行,最后将结果汇总后返回给用户;
42.作业编排,为完成某些复杂处理,可依次调用多个计算服务并将前一个计算的结果作为后一个计算的输入。
43.进一步地,资源监控模块基于系统信息收集和报表工具sigar实现管理节点和计算节点的资源监控。
44.进一步地,资源监控模块包括节点状态监控、作业运行状态监控和日志存储与查询;节点状态监控,对所有管理节点和计算节点的状态进行监控;作业运行状态监控,为用户提供了查看作业运行状态的接口,用户可查看当前提交作业是如何分片、在哪些计算节点上运行、当前的运行状态;日志存储与查询,记录用户在平台中的操作,以日志的形式展现出来,不同用户角色查看操作日志内容将会不一样,采用混合切面的方式存储日志。
45.本发明的有益效果:
46.采用分布式消息中间件kafka来进行轨道预报计算任务的分发,将计算服务部署于多台服务器,通过订阅不同的消息主题来触发不同的轨道预报计算任务,不需要接到任务后才能创建进程启动轨道预报计算程序,减少时间的损耗。使用分布式消息中间件kafka进行消息的传递可以使系统解耦,在一台服务器上的计算服务宕机之前,计算任务可以自动的分配给其他的机器去进行计算,还可以提高i/o效率,将轨道计算的结果通过分布式消息中间件kafka进行收集,能够减少磁盘的读写时间,避免大量的文件打开关闭操作,从而提升整体的计算效率。
附图说明
47.图1为本发明轨道预报计算程序封装的流程图;
48.图2为本发明任务启动的流程图;
49.图3为本发明任务报错的流程图;
50.图4为本发明任务实例管理的流程图;
51.图5为本发明节点状态监控界面示意图;
52.图6为本发明作业运行状态监控界面示意图。
具体实施方式
53.为了使本发明的目的、技术方案及优点更加清楚、明白,下面将结合附图对本发明的技术方案进行清楚、完整地描述。
54.本发明的分布式轨道预报计算平台包括api接口模块、计算资源管理调度模块、作业管理模块和资源监控模块。
55.1、api接口模块
56.api接口模块完成轨道预报计算程序的封装与部署。
57.轨道预报计算程序封装具体步骤如图1所示:
58.⑴
准备好待封装的库文件以及执行所需要的其他库文件;
59.⑵
将轨道预报计算程序以及其支撑文件放置在指定目录下;
60.⑶
创建对象,继承映射执行类;
61.⑷
实现具体执行逻辑;
62.⑸
如果是主任务,执行下一步,如果是子任务,跳转到步骤


63.⑹
分布式消息中间件kafka接收数据列表;
64.⑺
执行任务分片,跳转到步骤


65.⑻
接收子任务数据,生成输入文件;
66.⑼
调用可执行程序;
67.⑽
将输出文件的数据发送到分布式消息中间件kafka;
68.⑾
上报执行结果;
69.⑿
执行成功,跳转到步骤

,执行失败,跳转到步骤


70.⒀
分派子任务;
71.⒁
收集子任务执行结果;
72.⒂
判断子任务结果是否均已返回,如果是,执行下一步,如果否,执行上一步;
73.⒃
实现映射方法;
74.⒄
归并结果数据,回调结果;
75.⒅
上报服务器任务执行情况。
76.轨道预报计算程序部署
77.对于每一个需要部署到该平台的轨道预报计算程序,先进行依赖分析和性能测试,取得该程序运行所需要的依赖库、单个节点最佳的并发数等信息,将这些信息填写在配置文件中,同时配置好输入输出形式和参数类型,生成部署安装包,其中,输入输出形式统一采用json格式描述。
78.通过web页面web console将生成的部署安装包上传到管理节点,然后根据轨道预报计算程序的特性选择适合该程序运行的一个或多个计算节点,管理节点自动将部署安装包下发到相应的计算节点上完成解压、配置、测试等工作,其中,管理节点自动将部署安装包下发到相应的计算节点上的具体步骤为:
79.⑴
根据文件进行运行环境的创建和部署,并完成注册;
80.⑵
同时,将该轨道预报计算程序的调用封装为微服务,以restapi接口发布方式发布服务;
81.⑶
用户或第三方应用程序可通过该接口向管理节点发起服务调用;
82.⑷
管理节点计算节点的负载分配运行节点,完成远程调用,最后将结果返回给调用者;
83.⑸
若计算节点故障或其他原因导致作业执行失败,管理节点执行作业转移操作,将未完成的作业转交给其他节点继续执行。
84.测试通过后向管理节点汇报该程序部署成功,等待分配作业。所有测试通过的节点即构成了轨道预报计算程序的计算资源池,对外提供restapi的访问接口,内部则通过计算资源池进行作业分片、资源调度、结果数据汇总等,从而提高执行效率和资源利用率。
85.2、计算资源管理调度模块
86.计算资源管理调度模块基于分布式资源管理框架mesos和分布式应用程序协调服务zookeeper实现计算资源管理,完成平台所有资源的管理调度。计算资源管理调度模块包
括计算节点管理和计算任务调度管理。
87.⑴
计算节点管理
88.计算节点管理实现计算节点的注册、管理、资源监控等,包括计算节点的创建、启动和扩容。
89.①
计算节点的创建
90.在平台正式部署前,由设计开发人员将计算节点运行所需要的jdk、系统信息收集和报表工具sigar、作业执行器、轨道预报计算程序等打包到docker容器中,建立docker镜像。
91.创建计算节点时,仅需要安装基础的操作系统,如centos,redhat等以及docker环境,再通过docker容器从镜像库中拉取配置好的计算节点镜像即可快速构建计算节点运行环境,大大简化平台部署的复杂性,提高效率。
92.docker镜像安装完毕后,启动计算节点端的mesos agent程序,根据配置自动向管理节点的mesos master注册,管理节点的mesos master接收到新的计算节点的注册请求,由具备平台管理权限的操作人员进行处理,同意将其添加到计算节点中,并进行必要的配置,便于后续管理,至此,计算节点创建成功。
93.②
计算节点的启动
94.计算节点启动后,根据配置自动完成与管理节点的通信,此后,周期性采集当前节点的cpu利用率、内容使用情况、磁盘使用情况、当前运行的进程等资源信息,并发送给管理节点,管理节点依此判断计算节点是否运行正常,同时根据计算节点上报的资源使用情况为计算作业执行时的资源调度提供支撑,确保各计算节点的负载均衡。
95.计算节点启动后,用户可通过web页面web console浏览所有注册的计算节点,查看节点信息:节点标识、操作系统类型、当前cpu利用率、内存占用率、磁盘使用情况、当前正确运行的进程、该节点上部署的轨道预报计算程序以及正在运行的作业等。
96.③
计算节点扩容
97.当轨道预报计算量需求增加时,需要通过新增硬件的方式进行计算节点扩容,新的计算节点在完成基础的操作系统和docker环境安装后,通过docker镜像快速完成新节点的创建,启动计算节点端的mesosagent程序,后续操作与计算节点的创建步骤一致。
98.⑵
计算任务调度管理
99.计算任务调度管理实现计算资源的统一整体管理,通过资源池进行作业分片、资源调度、结果数据汇总等,计算任务调度管理包括资源调度管理、计算任务调度和计算任务管理。
100.①
资源调度管理
101.资源调度管理是依据轨道预报计算程序的计算资源池中节点的负载情况,合理进行作业分片、作业调度的过程,确保硬件资源平衡、高效利用。
102.资源的有效调度主要取决于负载均衡策略,平台支持常见的负载均衡策略,包括:
103.轮询
104.轮询的实现方式比较简单,就是将请求以此分发到后端服务器中,将所有的请求均匀分配,均匀分配的坏处是通常后台服务器性能有差异,有时候希望性能较好的服务器可以多承担些请求,该策略无法满足需求,这个不适合对长连接和命中率有要求的场景。
105.加强轮询
106.这种策略是对轮询策略的优化,对每个后端服务器设置一个权重值,根据权重值决定请求的分配比例,这种做法解决了轮询策略的不足,但是该权限值需要手动配置,没有办法自动动态调节,同样不适合对长连接和命中率有要求的场景。
107.哈希算法
108.通过ip(网协)、url(统一资源定位符)等信息计算哈希值,然后对服务器的数量取模,相同的请求会请求到同一个后端服务器中。该算法无法解决热点请求,会把某个时间段的热点请求路由到某个单机上,造成雪崩效应,同时在扩中和节点宕机时发生命中率急剧降低的问题(哈希算法导致),该策略适合维护长连接和提高命中率。
109.随机算法
110.根据随机算法,将请求随机分配到后端服务器中,请求的均匀请求依赖于随机算法,该实现方式较为简单,常常可以配合处理一些极端的请求,例如热点请求情况。不适合对命中率有要求的场景。
111.一致性哈希算法
112.对哈希算法的优化,可以有效的解决宕机和扩充造成的命中率急剧降低的问题。
113.最小连接数算法
114.通过活动来估计后端服务器的负载,把请求分配给活动连接数最小的后端服务器,算法比较智能,但是需要额外的资源维护后端服务器的连接列表。
115.加权最小连接数
116.对最小连接数策略的优化,通过加权的方式优化最小连接数算法的性能,对性能较好的后端服务器设置较高的权重,承担更多的链接负载。
117.最短响应时间
118.该策略的意思就是将请求分配给平均响应时间最短的后端服务器,平均时间可以通过ping命令或者正常的响应时间来获取。
119.②
计算任务调度
120.计算任务调度是指通过一定的规则,将任务分配到各计算节点的映射过程,计算任务调度包括输入输出调度、分片策略调度和批量任务调度。
121.输入与输出调度
122.采用fifo(先进先出)的策略方式调度任务,第一个任务优先获得所有可用资源,接下来第二个再获取剩余可用资源,任务可以单独运行在容器中,容器可以通过相应的工具来实现资源的配置,包括cpu、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制,例如docker容器的cgroup工具。
123.分片策略调度
124.分片任务场景:10个执行器的集群来处理1000颗卫星,每个执行器只需要处理100颗卫星任务数据。
125.支持平均分配算法、哈希值奇偶数决定ip升降序算法、分哈希值对服务器列表进行轮转分片策略,同时开放分片策略接口,可由用户自定义分片策略,便于不同轨道预报计算任务的封装。
126.一次任务调度将会广播触发对应集群中所有执行器执行一次任务,同时系统自动
传递分片参数,可根据分片参数执行分片任务。
[0127]“分片广播”以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理,在进行大数据量业务操作时可显著提升任务处理能力和速度。
[0128]
调度密集或者耗时任务可能会导致任务阻塞,集群情况下调度组件小概率情况下会重复触发。针对上述情况,采用过结合“单机路由策略(如:第一台、一致性哈希)” “阻塞策略(如:单机串行、丢弃后续调度)”规避,最终避免任务重复执行。
[0129]
批量任务调度
[0130]
对于批量单个任务,采用通配符设定方法,支持多个任务按某种规则自动生成,对于支持连续计算的计算模块,可通过自定义运行参数的方式提供连续计算功能,减少任务部署与调度等待的时间。
[0131]

计算任务管理
[0132]
计算任务管理实现对任务整体流程的编排、执行管理、监控等,包括任务启动、任务报错、任务完成和任务实例管理。
[0133]
任务启动
[0134]
任务程序可以通过上传或者类似持续集成的方式从代码库拉取编译打包,打包后,根据配置脚本可以运行程序,进入任务程序管理流程,流程如图2所示。
[0135]
任务报错
[0136]
任务报错监控主要通过任务失败重复提交实现,如图3所示,流程主要为监听任务输出执行结果,对执行结果进行判断,如果执行结果未失败,则调用计算任务启动接口,如果监听该接口执行结果为失败,标记失败状态。
[0137]
任务完成
[0138]
任务完成后在任务详情界面展示数据,并将计算后的结果存储。
[0139]
任务实例管理
[0140]
如图4所示,任务实例管理流程为:调用任务实例操作接口,返回成功访问标志时,完成任务实例服务层管理操作后,获取实例任务信息,然后进行任务调度,进行任务派发,返回任务执行结果,再此过程中,同时进行任务实例运行过程日志处理操作。
[0141]
3、作业管理模块
[0142]
作业管理模块通过web页面web console或者restapi接口调用轨道预报计算程序并对调用的程序进行管理,作业管理模块包括作业定义、作业执行和作业监控。
[0143]

作业定义
[0144]
作业指一次轨道预报计算程序的调用,作业定义支持三种模式:
[0145]
单次服务调用,即通过输入参数完成某一封装的计算的服务的调用,得到返回的计算结果;
[0146]
作业批处理,为了提高效率,可对同一服务一次性发起多次调用,平台依据负载均衡策略,可实现作业的分片,分发到不同计算节点同时执行,最后将结果汇总后返回给用户;
[0147]
作业编排,为完成某些复杂处理,可依次调用多个计算服务并将前一个计算的结果作为后一个计算的输入,平台提供简单的etl工具实现作业编排:
[0148]
作业1—etl—作业2—etl—作业3...。
[0149]

作业执行
[0150]
根据定义好的作业将其发布到计算节点上开始运行,可即时执行,也支持定时执行,执行过程可监控,执行结果可查看。
[0151]

作业监控
[0152]
可查看每个作业的具体状态,例如执行结果、执行过程等。
[0153]
4、资源监控模块
[0154]
资源监控模块基于系统信息收集和报表工具sigar实现管理节点和计算节点的资源监控。资源监控模块包括节点状态监控、作业运行状态监控和日志存储与查询。
[0155]

节点状态监控
[0156]
对所有管理节点和计算节点的状态进行监控,监控数据包括各节点实时的cpu利用率、内存使用率、磁盘占用情况、当前正在运行的作业等信息。
[0157]
以上信息用户可通过web页面web console以图形界面方式直观查看,如图5所示。
[0158]

作业运行状态监控
[0159]
为用户提供了查看作业运行状态的接口,作业状态包括创建、开始、运行中、结束(运行成功或失败),用户可查看当前提交作业是如何分片、在哪些计算节点上运行、当前的运行状态等信息,如图6所示。
[0160]

日志存储与查询
[0161]
操作日志主要是记录用户在平台中的操作,以日志的形式展现出来,不同用户角色查看操作日志内容将会不一样,采用混合切面的方式存储日志。
再多了解一些

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

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