田茂春,邹显勇,杨 跃,何启莲
(珠江水利委员会珠江水利科学研究院,广东 广州 510611)
随着以云计算、Web2.0为标志的第三次信息技术浪潮的到来,为水利信息化、现代化和智能化发展迎来了良好契机。发展智慧水利,已成为快速提升水资源效能的强力抓手和必然选择[1-4]。2021年,水利部先后印发了《智慧水利顶层设计》《“十四五”智慧水利建设规划》《数字孪生流域建设技术导则》,规划了模型平台建设,要对水利模型进行管理、注册、配置,为“四预”应用提供支撑。
国内外学者对模型平台进行了大量研究。文献[5]分析了不同水利业务应用计算服务的方式与系统结构,为建立该类系统及水利云的构建与应用提供借鉴。陈煜等[6]研究开发并建立水利工程建设管理云计算平台的关键技术和实践方法。尹炜靖等[7]设计了基于Hadoop的水文云平台,并解决平台实现过程中服务器虚拟化、大规模异构水文数据存储以及元数据管理等关键性问题。文献[8]基于云平台计算能力搭建了水资源分配系统。Wan等[9]建立了服务于全球的洪涝灾害基础信息云平台。刘荣华等[10]构建了水动力学模拟服务平台,采用云端计算和存储模式降低了高性能计算的门槛。文献[11]运用水动力学基本理论和软件工程理论研究,开发了下游河道泥沙冲淤计算模型可视化平台。夏润亮等[12]研发水利数值仿真模型计算服务平台,实现水利数值模拟服务平台的资源动态部署、模型耦合计算。文献[13]按照水利信息化“五统一”要求,提出基于元数据和模型驱动的平台建设方案。钱名开等[14]基于标准化链接、模型适配器技术和XML语言等平台开发新技术,创建多功能、多终端组件式洪水概率预报智慧平台。文献[15]提出了基于敏捷搭建技术的业务应用系统架构。文献[16]基于云计算和微服务等技术,结合Spring Boot开发架构,搭建了一体化多模型云平台。然而,上述大多数研究都局限于单一类型模型的管理或计算虚拟化方面,对不同厂商模型的统一化管理、调用以及多模型多用户多方案的计算效率问题欠缺考虑。
本文通过对多种水利模型进行集成与服务标准化,设计水利模型计算的负载均衡及模型数据的高效管理方法,研发集模型管理、模型服务、模型装配、模型计算管理等功能于一体的水利模型管理服务平台,以解决水利专业模型与系统深度绑定存在的难以统一接入使用、共享应用能力不足等问题。
水利模型管理服务平台向下对模型进行集中统一管理、调用及提供相应接口支撑服务,向上为应用系统提供模型调用业务支撑,与数字孪生流域框架保持一致,与业务应用系统、模型层等逻辑架构关系见图1。
图1 平台逻辑架构关系
a)水利模型管理服务平台。作为模型层、业务系统层的对接平台,完成模型管理、模型服务、模型装配、模型运营、模型计算管理、模型调用安全管理等核心业务功能。
b)应用系统层。包含“四预”要建设的防洪抗旱“四预”、水资源管理等系统。平台为应用系统层提供模型调用服务,包括来水预报、水库调度、洪水演进等。
c)模型层。模型层包括水文模型、调度模型、洪水淹没模型等。模型平台需要对上述模型进行统筹管理、调用与监控。
d)数据层。位于数字孪生流域数据底板中,为平台运行提供数据存储,包含模型的配置参数、模型管理数据、方案信息、计算结果等数据。
a)模型管理。实现水利模型上传、下载、参数编辑等功能,并注册到模型管理平台供调用;将模型的初始化服务、启动计算服务、输出结果等服务进行查询显示并进行调用测试;对模型版本、模型信息、模型数据等进行版本迭代管理,按照用户权限,分级别查看注册到模型管理平台的模型信息,实现模型长效更新维护。
b)模型服务。利用Web服务架构技术和规范的参数交换格式,对模型接口进行Web服务封装及发布,实现快捷、方便的模型共享调用,解决业务系统烟囱式开发造成的模型重复集成、难以共享使用等问题。
c)模型装配。通过图形可视化方式,利用标准统一化的模型接口规范,实现多种模型灵活组合、替换,如将不同的洪水预报模型、河道演进模型、洪水模拟模型,进行边界拓扑组合,形成新模型,完成洪水预报调度模拟。具体包括多模型在线组合、组合模型管理等内容。
d)模型运营。实时监控各模型服务运行情况,如服务器是否宕机,对模型计算服务是否可调用进行智能判别反馈;对模型使用率、模型计算效率、模型稳定性等进行效果评估,为模型的持续优化提供数据分析。
e)模型计算管理。计算管理模块主要实现对计算资源的管理和监控,以及实现多模型、多方案的同步计算及监控。并实现计算资源服务器选择算法,根据模型服务所部署的服务以及计算资源情况,对模型计算请求进行路由,选择相应服务器进行模型计算,实现计算资源最大化利用。
f)模型调用安全管理。通过向应用系统发放AccessKey,保障模型调用请求来源的合法性、安全性。
2.1.1模型集成
对水文模型、水库调度模型、洪水淹没模型等进行集成研究。
a)水文模型。水文模型是对复杂水循环过程的抽象或概化,能够模拟水循环过程的主要或大部分特征,可用于水文预报或水资源规划与管理。研究集成新安江模型、马斯京根模型。①新安江模型:分散性模型,依据降雨过程,模拟流域出口的流量过程,可用于湿润地区与半湿润地区的湿润季节。②马斯京根模型:利用水量平衡和简化的槽蓄方程,根据上下游断面的上一时刻流量和上游断面当前时刻流量,来演算下游断面流量。水文模型的集成过程为:通过对模型算法原理进行分析,采用微服务对模型进行开发、封装,发布来水计算、河道演进计算接口方法,提供所需要的接口参数说明,注册至平台进行管理、调用。
b)水库调度模型。水库调度模型集成主要集成两类算法:指令调度、自由溢流调度。①指令调度:固定泄量的调洪计算,只需要考虑泄洪设备的泄流能力约束,采用直接求解水量平衡方程方式进行计算。②自由溢流:对于无闸门水库而言,水位超过水库的自由溢流高程,就将是自由溢流的泄流方式,水库的泄流量等于该时刻的泄流能力,通过水量平衡方程进行求解。水库调度模型集成采用与水文模型一致的方式。
c)洪水淹没模型。对珠科院HydroMPM、DHI MIKE FLOOD、珠江委设计公司洪水淹没模型等进行集成研究,集成框架见图2。①珠科院HydroMPM模型:珠科院自主研发的洪水分析模型,是一套一维-二维耦合的水动力模型体系,该软件于2014年经国家防总批准进入《重点地区洪水风险图编制项目软件名录》。②DHI MIKE FLOOD模型:一款非常强大的洪水模拟工具,包括完整的一维及二维的洪水模拟引擎,从河流洪水到平原洪泛,从城市雨洪到污水管流,从海洋风暴潮到堤坝决口,能够模拟所有实际的洪水问题。③珠江委设计公司洪水淹没模型:一套耦合调度、一维、二维水动力的洪水淹没模型,并对武宣县城、浔江流域等进行了建模,对地形的剖分采用四边形格网方式,淹没结果包括了网格顶点的水位、流速、流向等数据,采用文本文件方式进行保存。
图2 洪水淹没模型集成框架
洪水淹没模型集成工作大部分在模型适配器中进行,该部分根据各模型的配置参数、输入输出数据形式不同,分别进行模型解析及模型启动计算。针对不同模型实现方式不一(如Jar、EXE和DLL)问题,运用多语言系统集成技术,具体为:以Java编程语言为主,利用进程交互技术实现与EXE形式的水利专业模型进行交互;利用JNI技术,实现Java与其他编程语言(如C、C++、C#)实现的水利模型动态库交互调用,达到多模型的应用集成计算。模型适配器调用统一的服务接口将模型参数、模型计算结果保持至标准的淹没模型数据库中。同时,模型计算服务将注册至平台进行调用。
2.1.2服务标准化
a)接口形式规范。利用JSON数据格式进行模型服务数据交互,JSON是一种轻量级的数据交换格式,简洁和清晰的层次结构使得成为理想的数据交换语言。同时,采用Rest架构进行服务发布,通过简单的http协议传输数据,实现模型服务访问的方便快捷。
b)标准化流程。对水文模型、水库调度、洪水淹没模型服务接口定义进行标准化,流程见图3。①根据用户需求、业务需求、应用场景,结合专业知识,提出初步的模型标准化输出接口;②初步接口提交给模型厂商、业务系统,征求修改意见;③模型厂商、业务系统根据自己需求,提出是否修改接口;④如模型厂商、业务系统对初步接口无修改意见,则形成初版的标准化输出接口;⑤平台方进行初版标准化输出接口实现,交由业务系统调用;⑥用户需求、业务系统需求、模型需求变更,接口需要更新,则进行接口修改并输出,再次交由业务系统调用测试;⑦经过反复调用、需求变更进行接口修改完善,形成最终版标准化输出接口。
图3 服务接口标准化流程
针对传统水利模型应用集成多采用单机部署,多用户多模型多方案计算耗时较长问题,设计并实现了模型计算服务多级分布式部署,结合Nginx反向代理技术,通过对计算资源的统一调配使用,有效减少了多方案计算时的等待时间,提升了用户体验。模型计算多级分布式部署逻辑见图4,采用中心节点组、模型计算节点组两级部署,两级均可根据负载情况进行动态扩展,支持多用户、多模型、多方案的计算。
图4 模型两级部署
中心节点组包含多个中心节点,为业务应用系统提供统一的模型服务接口,完成大部分业务功能以及各种模型的计算调度。并发访问时,用户请求通过Nginx代理,各计算请求被路由到资源负载较轻的中心节点。中心节点根据监控到的各模型计算节点的负载情况、按照所要计算的模型方案类型,将模型计算请求转发到各计算节点进行调用计算,实现负载均衡。
模型计算节点组由不同模型计算服务节点组成,为模型计算请求提供计算支撑,一个水利专业模型可同时部署多个节点,提高模型计算时效性和稳定性,如新安江模型产汇流、马斯京根河道演进、水库调度、水动力模型洪水模拟等多计算节点。
多模型的耦合计算采用编排服务链、分布式计算来进行。针对流域大尺度预报调度计算,对水文模型、调度模型进行并行计算模型节点拆分,例如水文分区产汇流、河段洪水演进、水库调度等计算节点,根据节点计算拓扑关系,编排节点调用顺序服务链,实现模型的并行计算。针对中小尺度计算密集型模型,建立与大尺度模型的边界输入输出映射关系,快速应用大尺度模型边界计算成果,根据多用户设定的针对不同模型不同方案的溃漫堤、蓄滞洪水等设置,快速路由到资源负载较轻的服务器节点进行调用计算,利用分布式部署实现负载均衡。
针对水利模型数据形式多样,包含模型建模过程、率定、参数、计算结果等,有结构化数据,也有非结构化数据,现有对模型数据零散管理或无管理,造成模型资产无法得到有效利用问题,研究并采用了混合存储方案。
对于结构化数据,如水文分区、河段、水文分区参数、水文模型参数等数据,采用关系型数据库MySQL进行存储。为防止单机数据库部署导致的数据库单点故障问题,利用MySQL集群技术,实现模型数据库的分布式集群部署,实现自动故障切换,保证高可用性。
对于非结构化数据,如二维水动力、一二维水动力的模型网格、淹没结果等,采用分布式文件数据库MongoDB进行存储,利用MongoDB集群+分片部署技术,可为模型计算时提供高并发、高可靠、高吞吐率的数据存取支撑。
平台中心节点硬件配置为Intel Xeon 3204 6核处理器,内存为32 GB;模型计算节点为Intel E5-2696 18核处理器,内存为64 GB,显卡为Tesla k80。支持Windows Server 2012版本以上Windows系列及Ubuntu 16.04以上Linux系列操作系统。
a)模型装配。利用平台模型装配功能,进行不同模型的快速组装,完成业务应用系统个性化模型计算需求构建,以可视化方式直观表达各模型的连接拓扑关系,为推动模型的快速应用提供保障(图5)。
图5 模型装配拓扑
b)模型参数在线编辑。利用平台模型管理功能,为不同模型参数版本管理、多方案计算结果对比分析、遴选最优模型参数提供支撑。解决以往应用系统与模型深度绑定,参数难以更新的弊端(图6)。
图6 模型参数编辑应用
c)模型计算监控。利用平台模型计算管理功能,实现模型计算资源的统一调配,对多模型多用户多方案计算进行监控,为智慧水利、数字孪生流域进行规模化的模型部署提供方案(图7)。
图7 模型方案计算监控应用
d)模型服务提供。基于模型库,利用模型装配,将多水利模型装配为功能更全面的组合模型以提供更丰富的模型计算服务,提高模型复用能力,同时,结合水利模型计算负载均衡、标准化的服务接口,实现快捷、方便的模型服务接口调用,降低了业务应用系统进行模型集成的开发难度,提高开发效率。
为验证平台进行模型调用能有效减少耗时,选取拥有22个水文分区、18个河段、11宗水库的万泉河流域进行来水预报计算,在同一数据条件下对传统单机部署与本文平台(3个计算节点)分别进行100次模型调用,耗时对比关系见表1。从表中可知,本文平台模型调用耗时远远低于传统方式,原因在于平台根据拓扑关系,将计算拆分为可并行计算的节点,通过编排服务链,使得各模型节点可路由到分布式服务器上并行计算及结果存储,从而减少耗时。
表1 模型调用效率对比 单位:s
研究成果在珠江委,海南省、重庆市、吉林市等省市防汛主管部门进行了项目应用,对洪水预报、水库调度、洪水动态模拟等业务提供模型管理及计算服务。
a)珠江流域防汛抗旱会商。从2020年至今,平台应用于珠江委年度防洪演练,日常防汛会商,为珠江流域的防汛工作发挥了积极作用。利用统一的洪水模拟接口,快速接入浔江流域洪水淹没HydroMPM模型,并在珠江防洪抗旱四预系统中进行了应用,为多尺度预演“四预”过程提供了支撑。
图8 珠江流域防汛抗旱模型计算支撑效果
b)海南防汛减灾。研究成果应用于海南省水库下游洪水动态模拟与预警服务系统、海南省2019年度山洪灾害监测预警平台完善与指标复核项目(五指山市),集成了34个流域、86宗大中型水库的来水预报、水库调度、洪水模拟等模型,实现了多模型的组合及模型参数编辑,并提供来水预报、水库调度、洪水模拟等计算服务,近几年一直作为海南防汛、防台预报预警的智慧使能支撑,有力保障了海南省防灾减灾工作科学高效开展。
图9 海南水库下游洪水淹没模型计算支撑效果
模型管理服务平台向下管理统筹不同水利模型,向上提供Web业务应用系统业务支撑功能。通过水利模型集成及服务接口标准化,制定出满足水文模型、调度模型、水动力模型等模型调用的接口规范,实现同一类水利模型计算只调用一套计算服务接口,解决传统水利业务系统直接与模型建设方对接,流程复杂、沟通时间成本较高的弊端。通过水利模型计算的负载均衡、模型数据的高效管理,提升模型计算效率,在多用户并发访问时,提升用户体验,解决传统水利模型计算时计算耗时长的问题。水利模型管理服务平台的构建,为统筹模型建设、规范模型服务、充分发挥模型服务支撑作用、提升应用系统开发便捷度提供了一体化解决方案。