基于微服务架构的航道工程BIM综合管理平台技术研究

2022-01-24 07:11骆光磊宋云涛
中国港湾建设 2021年12期
关键词:调用航道架构

骆光磊,宋云涛

(1.中交第二航务工程勘察设计院有限公司,湖北 武汉 430000;2.长江南京航道工程局,江苏 南京 210011)

0 引言

随着水运行业信息化建设的推进,针对航道工程的信息化管理系统不断涌现,通过信息化手段,可以快速地填报相关信息和管控施工过程,提高了工程的管理水平[1-2]。然而,由于航道工程施工周期长、影响因素多,施工和运维过程中往往存在频繁的需求变更,传统的单体式架构系统需要对整个系统统一变更和部署才能完成一次更新,消耗开发人员和设计人员的大量精力和时间;另外,随着航道工程智能化的发展,工程信息化系统有了更多要求和标准,使得整个航道工程管控系统规模日益增大,传统的单体架构在应对这种复杂系统时,不可避免地会产生性能降低、拓展性变差和维护困难的问题[3],限制了系统的实用性,最终导致系统难以推行。

为了适应当前航道工程项目的业务需求,信息化系统的架构升级成为了推进行业整体数字化、智能化的必要条件,另外,随着当前工程建设领域对项目管控精细化要求的提升,BIM技术也成为了评判系统功能是否完善的重要标准。为此,以微服务架构搭建航道工程BIM综合管理平台,将整个系统切分为不同服务,引入BIM技术对航道工程进行建模,将工程中每个构件的设计、施工、运维阶段信息全量仿真模拟[4],在保证工程方案安全准确的同时,进一步提高项目的管理水平。

1 微服务架构

1.1 微服务架构思想

微服务架构(Micro Service Architecture,MSA)是相对于单体架构提出的一种软件架构方式,将单一的应用程序划分成为多个微小的服务,即微服务[5],所有微服务注册到服务中心并暴露相应的API接口,保证不同服务之间可以相互调用,进而实现系统的整体功能。微服务架构中,每个微服务在独立的进程中运行,并且能够独立部署到生产环境中,实现了应用系统的并行开发,大大提高了代码开发效率,且高度的解耦性保证了整个系统的容错性和兼容性,整个系统可以不拘泥于单一编程语言的实现。

1.2 微服务框架

目前行业主流微服务框架有阿里巴巴研发的Dubbo框架和Pivotal团队的Spring Cloud框架,两者各有其侧重点[6]。Dubbo专注于服务治理,提供了高性能和透明化的RPC远程服务调用方案,但是要构建出一个完整的微服务应用,还需要开发者整合网关、服务注册、负载均衡等基础应用;而Spring Cloud侧重于对整个系统架构的整合,将微服务架构各个关键点的成熟技术和框架整合到Spring Cloud框架中[7],按照“约定优先于配置”的原则,实现应用的快速搭建,减少了开发人员大量的配置工作。

总体上看,Spring Cloud框架在开发友好性上要优于Dubbo框架,为提高系统的搭建效率和稳定性,采用了微服务框架Spring Cloud搭建航道BIM平台。

2 航道工程BIM综合管理平台设计

航道工程BIM综合管理平台是指利用BIM建模技术,精细化管理航道工程在设计阶段、施工阶段、运维阶段的各个环节,以信息化手段完成质量安全检查、流程审批、文件归档等繁琐操作,提升工程管理的效率。通过将航道工程中主要业务进行分解,利用Spring Cloud微服务框架对各服务进行治理,实现了系统的快速搭建,同时引入多种组件保证了平台的易用性和稳定性,最终形成了一套易开发、易部署、易维护的航道BIM平台。

2.1 系统总体架构

鉴于航道BIM平台多业务特点,基于微服务架构实现应用系统,系统总体架构图如图1。

图1 系统总体架构图Fig.1 Overall system architecture

系统从架构角度纵向切分为4个层级:表现层、基础服务层、业务层和数据层,核心模块为业务管理服务、流程管理服务、BIM模型服务、数据库服务。

前端交互界面基于Vue.js框架实现与后台的松散耦合,采用Nginx搭建网关实现转发请求、过滤请求和负载均衡等功能;后端系统采用Spring Cloud技术将不同的业务分割成微服务,每个服务注册到Zookeeper服务注册中心,再通过Dubbo框架实现各个子服务之间的远程调用;为避免各业务服务直接调用数据库导致逻辑复杂和重复工作,基于MyBatis框架技术单独建立数据库服务,向外提供统一的数据访问接口,实现业务服务与数据库的通信;BIM模型服务集成了SuperMap三维GIS平台[8],将BIM模型数据在PostgreSQL数据库中建库建表,利用数据关联性打通了BIM模型与业务之间的数据隔离。

2.2 关键技术研究

面对不断变化的工程需求时,为搭建稳定高效的航道工程BIM综合管理平台,研究设计了如下技术方案。

1)服务注册中心与远程调用

不同微服务之间虽然是高度解耦的,但是业务中不可避免地会存在数据传递或相互调用的需求,因此不同服务之间需要建立通信机制。本平台采用Zookeeper和Dubbo作为服务间不同接口远程调用的桥梁。

采用Zookeeper作为服务注册中心,所有微服务通过配置注册中心的IP和端口号,注册到Zookeeper上,以便其他服务通过注册中心查找该服务。通过Dubbo管理不同服务之间的远程调用,Dubbo监控消费方的调用行为,在Zookeeper上查找相应的服务提供方并调用接口,实现两个服务之间的远程调用。

使用时,在服务消费方创建远程服务调用类,并将服务提供者的接口用@Reference注解标注,Dubbo自动将与消费方接口同名的远程接口注入到此类中,在本服务其他模块中调用该接口便可实现不同服务之间的远程调用。

2)缓存方案

航道BIM平台中各阶段的业务数据庞杂,为了提升数据查询效率,本平台引入Redis缓存机制对数据进行快速查询。Redis是一种NoSql数据库,以键值对方式存储数据,利用Redis将已经查询过的数据存储在内存中,下次查询首先在内存中查询数据,如果命中内存,则直接获取数据,避免了磁盘数据的读取,显著提升系统速度。

在Spring Cloud框架中整合Redis,首先在Maven中引入Redis依赖,并配置Redis数据库的地址和端口等配置信息:在SpringCloud的启动类中添加@EnableCaching注解开启缓存,在查询接口中添加@Cacheable注解让该方法拥有Redis缓存,此时该方法每次查询时都会先在Redis缓存中查找相关数据。

3)网关设计与负载均衡

不同微服务通常有不同的网络地址或不同端口,为了向服务调用方提供统一且稳定的服务入口,需要进行网关设计,在服务调用方和微服务之间加入网关,可实现无感知的调用服务,便于后期微服务的扩展和维护。

本平台采用Nginx技术搭建API网关,利用Nginx的反向代理功能,将后端微服务暴露的网络地址或API接口进行代理,实现统一的接口调用。Nginx的另一个重要功能是实现负载均衡,当同一个微服务部署到多个服务器时,可以通过负载均衡策略分发调用请求,避免某台服务器荷载过大而产生阻塞现象。在Nginx服务器启动前,修改配置文件,将需要代理的后端微服务添加到Nginx的代理服务server中,前端便可通过指定域名或url路径调用微服务接口。

3 航道工程BIM综合管理平台实现

基于以上技术和框架,以长江航道综合整治项目为实施对象,搭建了长江航道BIM综合管理平台,该平台以微服务的方式实现了工作业务填报、工作流程审批、BIM模型交互等主要功能,涵盖了工程设计阶段、施工阶段和运维阶段的各类业务,可以满足航道项目管理的多数场景,为航道工程管理提供高效手段。

3.1 服务接口实现

服务接口是实现平台功能的最小单元,每个接口承载一种业务需求,复杂的业务逻辑在接口内部实现,接口调用方只需关注接口的输入输出。为适应航道项目各种业务需求,开发了数目众多的服务接口,按接口类型分为4类:业务功能接口、工作流程接口、BIM模型接口和基础服务接口,各系统主要模块接口定义格式见表1。

表1 系统主要模块接口定义Table 1 Interface definition of main modules of the system

3.2 平台功能实现

1)业务管理功能

业务管理提供对各种业务数据的增删改查、导入导出等功能,以及复杂业务的自动汇总、计算等逻辑功能。业务管理服务集成了工程各类基础数据、进度管理、质量管控、计量支付、安全管理、运行数据监控等多种航道项目常用功能,业务人员通过进入相应模块进行业务快速填报,提升项目运行效率。

2)流程管理功能

流程管理是工程项目中的重要环节,施工完成情况、质量审批、工程支付、设计图纸审批等众多业务都需要按照流程逐步进行,本平台通过流程管理服务控制所有业务流程进度,按照流程设计、业务填报、触发流程、流程审批的顺序,完成业务数据的流程控制。

3)BIM管理功能

BIM管理功能是平台对整个项目可视化的模块,可以使用户从多角度掌握模型状态、进行碰撞检查等工作;另外,通过将BIM模块与业务服务关联,用户可以通过每个构件查询其关联的业务信息和业务状态,并方便地对构件关联的业务进行填报和流程审批工作,为用户提供一种管理项目的新维度。BIM管理功能典型界面见图2。

图2 BIM平台典型界面Fig.2 Typical interface of BIM platform

4 结语

为解决传统单体系统架构模块复杂、可拓展性差等问题,研究设计了航道工程系统相关的系统架构及关键技术,将BIM技术引入系统,搭建基于微服务架构的航道工程BIM综合管理平台,该平台实现了系统的快速开发、快速部署、快速拓展,可根据实际工程需求不断接入新服务模块,为航道工程全生命周期管理提供高效手段。

猜你喜欢
调用航道架构
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
核电项目物项调用管理的应用研究
厦门港航道通过能力建模及应用
LabWindows/CVI下基于ActiveX技术的Excel调用
WebGIS架构下的地理信息系统构建研究
新航道
英语高能高分 就上新航道
基于系统调用的恶意软件检测技术研究
一种基于FPGA+ARM架构的μPMU实现