霍 庆 何文春* 何 林 高 峰 陈士旺 徐拥军
1)(国家气象信息中心, 北京 100081) 2)(陕西省气象信息中心, 西安 710014)
气象信息化是气象现代化的重要标志[1]。经过多年发展,我国气象部门气象数据传输、处理、加工、存储与服务等业务能力不断增强,气象信息化水平不断提高。国家气象信息中心先后建立了国家级气象资料存储检索系统(MDSS)和全国综合气象信息共享系统(CIMISS),逐步实现气象数据环境在全国的统一[2-5],具备一定的数据产品加工能力[6],一定程度上实现数据的统一供给。随着气象业务的发展,各业务系统纷纷构建自己的产品加工系统和配套数据管理系统[7-16],但也产生了一个难以回避的问题,即数据孤岛与应用烟囱,是气象业务不集约的表现[17-18]。
气象业务的不集约会带来诸多问题[19-22]:①针对相似的应用场景,数据标准不统一,运维难度大。②各业务系统自建数据库,数据重复存储,造成巨大浪费。③数据本地化存储,因同步不及时导致数据不一致。④业务系统独立开发与运行,导致严重的信息与技术壁垒,上下游业务无法联动。
近年中国气象局陆续印发多个气象信息化顶层设计,其中《气象大数据行动计划(2017—2020年)》[23]首次提出建设气象大数据云平台,明确以气象大数据云平台为云、气象业务系统为端的“云+端”业务技术体制[24-26],实现数据管理、加工处理、应用服务的高度集约,促进业务系统有效衔接、高效协同。国家气象信息中心于2018年设计建设气象大数据云平台(简称天擎),2021年12月实现业务运行。天擎设计定位为全国气象业务的基础性平台,基于混合云提供数算一体的平台化服务,系统包括交换及质量控制、存储与服务、加工流水线、门户网站等[27]。
加工流水线是天擎实现算法统一管理与集约运行、消除应用烟囱、实现“云+端”业务技术体制的重要基础。本文在分析业务需求的基础上,详细介绍加工流水线的功能设计、关键技术、算法云化集成、应用效益,并对未来发展方向进行展望。
气象业务对数据产品加工的需求,可以分为3个层面:①单一业务系统更关注产品生成效率和稳定性,要求算法高效调度、稳定运行,及时生成数据产品。②不同业务系统之间要求数据产品共享,实现协同联动。③全局气象业务期望集约高效,形成“云+端”业务技术体制,提高整体运行效能。
气象数据产品及其加工算法是气象业务的核心,算法的高效、稳定调度运行是保障产品能否及时、稳定生成的基础条件。算法调度需要建立集约、高效的调度框架,实现定时、实时等多种调度策略。数算一体是算法高效运行的重要手段,算法靠近数据,减少数据搬运,提升数据的读写效率及算法运行时效。
数据、算法、算力是气象业务的基础三要素,三者协同共享对提升气象业务效率和实现高质量发展至关重要。应用烟囱和数据孤岛导致数据产品仅在单一业务系统内循环,有待互联互通,实现不同业务系统间的数据共享;数据共享流程亟待优化,减少传输、下载等流转环节,实现数据生产者的直存与数据需求者的直取。共享先进算法可以减少重复研发,缩短业务系统的上线周期,统一管理算法,支持用户获取较全面的气象算法清单。在保障各业务系统资源隔离的基础上,实现算力资源充分共享是提升业务效能的重要手段。
构建以天擎为云、气象业务系统为端的“云+端”业务技术体制,是实现气象业务集约化和高质量发展的必由之路。集约的数据环境和算法环境是云的核心能力,算法集约需实现气象算法统一管理,支持版权控制下的共建共享,同时需具备丰富的算力资源和高并发的任务调度能力,支撑算法的高效调度运行。
加工流水线采用面向服务架构(SOA)的设计思想[28],各功能模块实现面向服务的封装,系统架构如图1所示。依托于天擎的算力资源,加工流水线以算法库和任务管控为核心,与天擎数据存储共同构建数算一体的算法环境。算法库实现算法的标准化,统一管理算法并共享;任务管控支持多种调度策略,以高可靠性与容错性,支撑算法的高效、稳定调度运行。加工流水线面向应用前端将所有功能以接口形式开放调用。基于气象业务综合监控系统(简称天镜),实现算法运行状态的自动采集与异常告警。
图1 加工流水线框架
2.2.1 算法管理
算法管理实现算法注册、算法审核、算法版本管理、算法清单与算法检索、算法版权控制等,支撑用户对气象算法的发现、查看与共享,加工流水线算法管理流程见图2。算法注册实现算法向算法库的提交,同时填报算法元数据。算法通过审核后进入算法清单,供用户检索查看。算法管理实现严格的版权控制,用户向算法所有者申请使用权后才能使用。
图2 加工流水线算法管理
2.2.2 任务定义
任务定义主要实现算法运行参数、算法运行节点、算法调度策略、算法日志管理策略、算法监控策略等配置(图3)。通过新增任务确定任务名称,向任务中添加算法并指定运行节点,实现任务、算法和算力资源的关联。当一个任务由多个算法组成时,可以配置算法的上下游关系,确定算法运行时序。任务定义的核心是完成算法调度策略配置,选定调度方式并定义算法启动时间等。算法监控策略配置包括算法调度运行监控策略和产品完整性监控策略配置,实现算法运行与天镜的关联与监控告警。任务定义支持用户以可视化页面操作的方式进行。
图3 加工流水线任务定义
2.2.3 任务调度
任务调度根据任务定义中配置的调度策略实现算法的调度运行。任务调度是加工流水线的核心功能,支持多种任务调度策略,包括定时调度、人工调度、实时调度、顺序调度和数据源感知调度等。其中,数据源感知调度实时分析数据到报状态,在数据达到的第一时间启动算法。
任务调度由调度服务端、调度客户端(即计算节点)和消息中间件组成。调度服务端基于算法信息(包括算法ID、算法参数、算法执行命令、算法执行所需CPU和内存等)、任务信息(包括调度策略、任务可执行的计算节点等)和计算节点负载状态生成调度指令,下发至调度客户端,调度客户端基于调度指令启动并执行算法,将算法执行状态、计算节点状态等通过消息中间件反馈至调度服务端。任务调度流程见图4。
图4 加工流水线任务调度
2.2.4 任务管理
任务管理实现任务启停控制、任务运行状态和日志查看以及任务人工补做。任务运行状态和日志查看页面展示任务的计划执行开始时间、实际执行开始时间、执行结束时间、执行计算节点以及执行日志等。
2.2.5 功能开放接口
功能开放接口将加工流水线的主要功能以接口形式发布,支持应用系统前端直接调用,可以更有效地支撑“云+端”业务技术体制的建立,如图5所示。加工流水线的功能开放接口包括算法管理接口和任务管理接口。
图5 基于加工流水线功能开放接口构建“云+端”业务架构
2.2.6 可靠性设计
加工流水线的安全稳定运行对气象业务至关重要。从技术层面采用3条措施提高加工流水线的安全稳定性:①调度服务端采用主备双节点设计,实时监听进程运行状态和调度服务可用性,发生异常时主备自动切换。②计算节点基于容器技术,当某个计算节点出现故障时,实现算法向其他节点自动迁移。③基于天擎备份环境,算法在主备环境同时运行,异常状态下应用系统可实现主备切换。
加工流水线实现气象数据资源、算法资源、算力资源的一体化,数算一体的特性从3个方面予以保障:①算法靠近数据,天擎同时承载气象数据管理与气象算法运行,算法向加工流水线部署的过程,即算法向数据靠拢的过程,减少数据搬运与传输。②加工流水线上的算法可以访问数据库,不用通过调用服务接口即可直接读取或写入数据。③存储环境与加工流水线的计算环境在物理部署上高速互联。加工流水线的数算一体特性显著提升气象数据产品的加工时效。
天擎投入运行与应用前,气象业务系统主要以虚拟机或物理机方式运行。物理机无法实现资源隔离,不同业务间会出现资源抢占,影响业务运行稳定性。虚拟机运算性能相对较低,一般用于支撑系统前端[29]。相比于物理机,容器实现了资源隔离,业务系统部署与迁移更便捷;相比于虚拟机,容器具备运算性能高、资源利用率高、启动耗时短等特性[30-37]。
加工流水线的容器集群管理基于Kubernetes(K8s)实现,将集群系统分为管理节点和计算节点[38-39](图6)。管理节点接收加工流水线调度服务端的调度指令,基于API管理服务、容器控制服务、容器调度服务、数据存储组件等实现集群的资源管理、容器启停与扩缩容、系统监控等。计算节点基于容器执行服务、容器网络管理等组件,完成容器创建与容器状态采集。管理节点和计算节点通过超文本传输协议http进行通信。
图6 加工流水线容器技术
气象数据产品加工任务一般由多个算法串接而成,如天气雷达产品加工任务包含单站质量控制产品生成算法、单站图片产品生成算法、组网产品生成算法和组网图片产品生成算法(图7)。加工流水线基于mxGraph实现可视化任务流程的创建、修改、编辑、串接等[40]。
图7 加工流水线天气雷达产品加工任务流程示意图
按照“云+端”业务技术体制的要求,前端应用部署在虚拟资源中,后端产品加工算法按照规范进行云化改造并部署于天擎上运行。算法云化要求输入数据来自天擎、输出产品回写至天擎且进行产品注册发布、算法由加工流水线统一调度运行、天镜统一监视运行等。
算法云化集成的核心流程包括:天擎业务账户与数据访问权限申请、算力资源申请、数据产品注册、算法开发测试、算法镜像封装和算法集成运行。账户与数据访问权限申请、算力资源申请和数据产品注册等参见《天擎应用开发手册》,本文主要介绍算法开发测试、算法镜像封装、算法集成运行的技术操作。
基于天擎临时容器资源进行算法开发测试,且须符合一定的开发规范,包括应用加工流水线的公共配置文件、输入数据与输出产品对接天擎存储、监视信息对接天镜等。天擎主备环境及省级节点各自的公共配置文件存储着该节点的数据库IP、服务接口域名、天镜监视域名等公共信息。应用公共配置文件使算法在不同节点间的迁移部署更便捷,避免迁移时因公共配置不同而需对算法进行修改。数据访问权限申请经审核通过,即可直连数据库或服务接口读取数据,直连数据库所需的表名和字段名可在天擎门户网站上查看。数据产品回存所需的存储目录或数据表,在产品注册完成后自动创建。监视信息须按照天镜的规范要求,通过接口发送至天镜。
算法在临时容器资源中完成开发与测试,在线完成算法镜像一键封装,存入加工流水线的镜像仓库。算法镜像中包含算法实体、算法配置及算法依赖环境等,支撑算法的调度运行。
算法集成运行包括算法注册、加载部署及任务定义。算法注册时需提交算法实体并填报算法元数据信息,经审核通过,加载部署实现算法与计算资源的关联。任务定义的核心操作是配置算法的调度策略,如针对定时调度,通过可视化crontab的方式设定算法的定时启动时间,针对数据源感知调度,需选定数据源(如中国地面自动站逐小时数据)并配置触发阈值(如每个时次到报90%的站数)。完成任务定义,算法即可由流水线进行自动调度运行与生成产品。
2021年12月15日加工流水线随天擎开始全国业务运行,发挥业务效益:①实现算法统一管理,便于国省统一部署运维,同时基于加工流水线的数算一体、任务调度等技术,提升运行效率。②实现数据产品直存天擎,消除数据壁垒,有利于数据开放共享,且基于自然时序的数据源感知调度能够串联全业务链条,消除应用烟囱,提升各业务间的协同度。③建立“云+端”技术体制,初步实现“云+端”业务技术体制改革目标,构筑集约发展的基础。
截至2023年11月底,全国有202个应用系统融入天擎并基于加工流水线业务运行。国省融入气象算法6739个(图8),气象算法库算法资源的规模效益初现,为国省算法共建共享提供基础。
国家气象中心的指挥决策分析系统(MESIS3.0)实现业务全流程深度融入天擎,40余个算法基于加工流水线调度运行,支撑超1000个数据产品的高效生产,系统在多次天气过程中发挥重要作用。MESIS3.0融入天擎后,集约化程度和系统性能大幅提升,其中图形产品加工效率由15 s提升至 5 s,极值统计效率提升近10倍。
国家气象信息中心基于位置的实况服务系统完全基于天擎原生设计开发[41],为气象部门提供统一、准确、高时空分辨率的天气实况服务,2020年12月业务运行,实时支撑气象实况微信小程序和中国气象APP。融合站点分钟观测数据的实况格点产品基于加工流水线实时生成,实现温度、降水、相对湿度、风等要素逐分钟和能见度、天气现象逐5 min快速更新。
中国气象局气象探测中心的天气雷达拼图系统V3.0于2023年4月开始基于天擎业务运行,实时生成单站和组网拼图产品30余种,提供国省用户应用。融入天擎后,应用加工流水线的数算一体和高效任务调度技术极大简化业务流程,减少数据搬运耗时,提升算法运行效率,雷达产品生成与服务时效由6 min提升至1 min(图9)。
图9 基于加工流水线的天气雷达拼图系统V3.0优化效果(a)原流程,(b)现流程
本文在分析业务需求的基础上,对加工流水线的总体架构、主要功能、关键技术等进行详细介绍,并总结系统的业务应用效益:
1) 通过建立算法库,实现国省气象算法统一管理,集成气象算法6739个,形成一定规模的气象算法资产,为气象算法的共建共享提供支撑。
2) 加工流水线建立数算一体、高效任务调度和加工流程可视化定义等技术,并充分应用容器技术,实现气象数据产品加工任务的高效、集约调度运行。
3) 国省两级业务应用证明加工流水线对提升气象业务系统的运行效率、消除数据壁垒和应用烟囱、建立“云+端”业务技术体制、推进气象业务集约发展具有重要支撑作用。
随着大数据、云计算、人工智能等信息技术的不断发展,加工流水线需不断进行功能升级与性能提升:①应用DevOps思想实现流水线的敏捷开发与快速迭代升级,以快速响应多变的业务需求,减少系统升级对已运行业务的影响。②算法与资源调度需更加智能化,实现计算资源的动态扩缩容,提升资源利用效能。③建立完备的算法开发测试环境,支撑算法的高效开发、测试及向业务环境的一键迁移部署,提升算法业务上线的时效与规范性。