邵 军,陈翠芳,李韶颖,陈 涛
(1. 湖北省测绘成果档案馆,湖北 武汉 430074)
遥感影像数据被广泛应用于地理国情监测、土地、海洋、规划、水利、环境、科研等动态研究,作为其研究重要数据源,为快速决策提供了技术保证[1-2]。面对数据种类多、数量大、产品多样化、数据量增加迅速的遥感数据集合,传统单纯依靠人工进行管理、查询和分发的影像管理方式已经无法满足服务要求,如何应对大量用户同时访问影像分发服务系统以及自然资源系统内部互联互通和资源共享客观需求,提高影像数据管理和分发服务水平,满足行业和社会对遥感数据的按需获取,已成为目前亟需解决的问题[3-6]。微服务架构是当前系统开发领域的热点技术,可解决单体应用部署、配置、维护的复杂性[7],开发基于微服务的影像数据分发服务系统,可提升影像数据分发服务水平,同时便于开发、部署及维护。本文介绍了该系统的总体架构设计、系统功能模块以及系统实现情况,基于微服务架构的影像数据分发服务子系统的设计和开发,为多源遥感数据的差异化处理、定制化服务提供系统支撑[8],同时也提升了海量多源影像数据管理及服务共享的能力。
基于微服务架构影像数据分发服务子系统主要包括基础层、管理层、应用层,其中基础层提供平台的底层构架,如Docker 容器发现及管理、反向代理、负载均衡等;管理层提供微应用的运维管理能力,包括应用发布、应用管理、日志管理、统计监控等;应用层对外提供各类微应用的展示和使用,其主要包括数据查询和数据统计等。系统总体架构如图1所示。
图1 影像数据分发服务系统总体架构图
系统功能结构主要分为应用工具和应用市场两大模块。应用工具主要由应用门户以及各类微应用组成,其中应用门户是应用的展示和使用入口,微应用包括数据查询、数据统计等。应用市场模块由应用管理和统计监控组成。应用管理提供发布、编辑、卸载、负载、日志等运维功能;统计监控提供统计分析和应用监控等能力。影像数据分发服务系统功能组成如图2所示。
图2 影像数据分发服务系统功能设计
2.1.1 应用门户
应用门户是为所有应用程序提供对外使用入口,提供应用描述、访问量、版本信息的显示,并根据访问量默认排序。
2.1.2 数据查询
数据查询模块提供多种便捷查询方式,支持成果元数据的空间范围查询、类别查询、图幅号查询和行政区划查询,同时可将检索出的数据在地理底图上显示空间范围,多种类型的检索可配合使用。系统实现数据查询模块的微服务化,微服务化后将实现数据查询模块的解耦,实现系统的可扩展和高复用性。
2.1.3 数据统计
数据统计模块主要负责对各类业务的办理情况进行统计,统计结果以图表形式展现,可将统计结果输出、打印。可根据行政区域、申请时间、办结时间,统计订单的申请类型、申请数、受理数、办结数、分发完成数等,影像数据统计微界面如图3所示。
图3 影像数据统计微界面
2.2.1 发布应用
通过上传应用包,平台解析识别并共享到应用门户。其中应用包解析规则主要包括可执行文件检索、敏感字检索、项目目录及安全证书检索等。应用发布的流程如图4所示。
图4 应用发布流程
2.2.2 编辑应用
该功能模块分两类,分别是应用修改和应用升级。应用修改支持修改应用基本信息(如应用名称),但不允许修改应用包之内的内容。应用升级如存在需要修改应用包里面的内容,则整包更新,版本升级。
修改应用仅仅是修改了数据库信息,并没有对容器相关的修改,而只是一次单纯的数据修改。更新操作更新了应用包,所以需要更新应用镜像仓库以及应用的版本号,但不需要变更容器相关信息,故只需要重启容器内的Tomcat即可。
2.2.3 卸载应用
卸载应用主要提供应用删除的能力,其中包含删除该应用在数据库中的数据(软删除)、卸载该应用所属容器。
流程中必须是先卸载容器,再更新数据库,如果先删除了数据库就无法找到容器。关于镜像库的应用镜像没有从这个流程中删除,为避免用户误操作,镜像暂时保留3 个月,通过定时任务3 个月会定期清理无效应用包。
2.2.4 应用负载
应用负载模块主要负责在有大量的并发访问时,将数据流量分担到多台节点服务器上分别处理,减少用户等待响应的时间。用户可以新增或取消负载,也可以对服务器进行负载的配置,实现负载的管理。应用负载均衡的能力主要是由Nginx 来实现,创建负载均衡节点主要是由Kubentes Server API调用Docker API实现容器克隆来实现。
2.2.5 应用日志
应用日志主要包括生成日志、操作日志。生成日志是利用代理端通过配置Nginx 的访问日志的写入文件路径、记录日志格式,当有请求进来,Nginx 会自动记录日志到日志文件;Java 项目端通过定时任务2 min定时读取Nginx的访问日志文件,解析并按应用名称统计(仅统计本次获取的数据),然后保存到数据库。操作日志是通过查询数据库获取该应用的所有的应用日志。日志自动备份,备份的时间可以根据实际运行情况进行设置。
2.2.6 应用监控
监控需要关心的指标范畴主要集中在主机、集群、容器、应用以及报警规则和报警推送。监控的指标也大多放在CPU、RAM、NETWORK 3个纬度上面。
应用运行在容器中,容器运行在Kubernet 的Pod中,应用监控集中在Kubernets集群的监控。而Kuber⁃net 的监控主要集中在Kubernet node(机器节点),Ku⁃bernet apiserver(对外管理Docker 容器接口),kubernet adsovisor(Kubernet apiserver 的运行进程)。应用监控流程如图5所示。
图5 应用监控流程图
2.2.7 统计分析
基于应用监控的数据和应用日志的数据,进行按时间、主题等多维度数据统计和分析。
统计分析的数据源依赖于应用监控与应用日志生成的数据,整个统计分析按照不同维度给出不同的统计视图,统计维度包含应用主题-应用数量统计图、应用主题-访问量统计图、应用-访问量统计图、应用-运行状态统计图、应用-访问状态统计图等。
影像数据分发服务系统运行在涉密网环境中,基于B/S 模式,采用已建的PostgreSQL 空间数据库和MySQL 业务数据库进行持久化存储,同时基于Redis实现缓存机制,实现了影像数据的查询、统计、订购、审批以及服务和应用的发布、管理及监控等功能。尤其针对影像数据查询和影像数据统计这2 个高频业务应用需求,围绕其单一业务场景构建了微应用,使得单个微服务更容易开发、理解和维护。
本文针对多源遥感卫星影管理和分发服务的现状和问题,采用微服务架构,设计并开发了影像数据分发服务系统,并对其总体架构、功能模块和系统实现进行了详细的介绍。该系统解决了大量用户并发访问影像分发服务系统承载力,提升了多源遥感影像数据的管理和分发服务效率。