APP下载

基于容器技术的空间数据管理方案

2022-04-27宵,董林,苏

地理空间信息 2022年4期
关键词:空间数据镜像备份

牛 宵,董 林,苏 醒

(1.山东省国土测绘院,山东 济南 250102;2.北京图新数聚科技有限公司,北京 100086;3.山东科技大学,山东 青岛 266590)

空间数据是测绘与地理信息相关领域的核心资产,大部分研发与生产工作都是围绕数据的采集与加工、更新与共享、分析与应用展开的。空间数据可以分为基于文件、基于数据库、基于网络服务以及应用程序四类。各类数据的物理和逻辑存储方式往往各不相同,部署、访问与备份方法也有较大差异,缺乏统一高效的管理方案,数据安全方面也存在隐患。针对这一问题,本文提出一种基于Docker容器技术体系的方案,利用镜像存储各类空间数据,通过Docker客户端和私有仓库实现数据管理。

1 Docker技术概述

Docker是一种开源的轻量化容器技术,在IT领域已经得以广泛应用[1-2]。最基本的Docker系统由应用镜像和容器引擎组成,前者用于存储应用及其依赖的软件包,后者负责创建容器,将镜像实例化为实际运行状态[3]。

与虚拟机(VM)类似,Docker能够运行不同的Linux发行版,容器之间彼此隔离,在很多场景下可以当作轻量化、模块化的VM使用。不同之处在于每个VM实例都要启动其中的操作系统(OS)后才能运行应用程序,而Docker实例则是运行于宿主OS的内核上,因此不仅镜像更小、启动更快,能够提供更接近于开封即用的用户体验,还可以避免VM中OS的授权费、运行的资源消耗及独立运维成本(这些成本通常被称作OS税或VM税)[3]。

Docker还有着完善的生态环境,Docker官方和第三方都提供了开源的镜像管理和容器集群管理工具,可用于镜像的编译、发布、共享、版本管理以及容器或容器集群的启停与参数配置;清华、中科大等高校及网易、阿里、腾讯等企业提供了Docker仓库镜像服务;AWS、Azure、华为云等云计算平台提供了对Docker集群的支持。此外,Docker与微服务架构契合度很高,目前已经成为该架构主流的落地实施方案之一[4]。

得益于这些优点,很多软件选择Docker镜像作为发布形式,包括主流的Linux发行版、数据库及很多领域的专业软件以及大量的定制化应用[5-8]。

2 技术方案

基于容器技术的空间数据管理方案由数据持久化和数据管理2个子方案组成。前者负责以统一、规范、便利的形式实现各类数据的固化。在此基础上,后者负责采用成熟、可靠、易用的技术方案实现共享、版本管理、部署、灾备等数据管理功能。

2.1 数据持久化

利用容器技术可以统一采用Docker镜像的形式实现将各类空间数据的持久化。

1)基于文件的空间数据。将基于文件的空间数据打包为Docker镜像主要是为了借助Docker相关工具进行存储管理。可以选择Alpine Linux作为基础镜像(展开后大小仅为5.58 MB)进行制作,使用时通过目录映射进行读取。在此基础上还可以向镜像添加FTP、SFTP、NFS等文件服务功能,实现更多访问方式。

2)空间数据库。空间数据库可以打包为Docker镜像,在需要时挂载执行[9-10]。镜像分为两类:一是在包含数据库管理系统的镜像中集成压缩后的数据库备份文件,在镜像实例化时执行初始化和导入;二是直接提供开封即用的镜像。前者体积较小,但是初始化可能需要一定的时间;后者存储的是展开后的数据库,体积较大,但是可以直接启用。可以根据数据库使用的频繁程度和紧急程度选择合适的镜像类别。

3)空间数据服务。与空间数据库类似,也可以将配置好的空间数据服务发布工具以及所需的数据或者数据库集成为Docker镜像。集成时应注意解耦,把逻辑上耦合相对紧密的服务打包为同一个Docker镜像,较为松散的则拆分至不同镜像。这样既符合微服务的技术理念,也能够减少单个实例的资源消耗,方便部署更多服务。基于同样的理由,规模较小、内容较简单的服务还应考虑使用不依赖数据库的实现方式。

4)3S应用程序。从存储的角度来看,GIS、GPS和RS应用程序也是一种数据。Docker技术原本的目的就包括简化应用部署、提高系统的可伸缩性,因此也可以为3S应用带来相应的优势[6]。和普通IT领域的应用不同,这些应用往往依赖于数以百计的类库,例如安装集成GRASS GIS和Python插件的QGIS时需要安装上千个软件包。在裸机或虚拟机上进行部署经常会遇到版本冲突、软件源缺失等问题,给应用的开发、部署造成很大障碍。操作系统一旦升级也经常会出现类似问题。利用Docker技术则可以通过虚拟化技术提供一个统一的、轻量化的系统环境,在应用部署中有更明显的优势。此外,容器运行环境彼此隔离,可以配置多个实例而不出现资源共享冲突,对应用快速扩容和负载均衡有很大的帮助。

2.2 数据管理

对于固化为Docker镜像的空间数据,可以通过图1和图2所示的空间数据管理体系实现数据的分发、共享、备份、版本管理以及应用部署流程的标准化,降低运维成本,以提高工作效率。

图1 基于Docker的空间数据管理体系架构

图1为空间数据管理体系的整体架构,由组(例如一个项目组、一个部门等)、本地镜像和容器应用服务器、远程镜像和容器应用服务器以及冷备份设备组成,通过局域网和公共互联网或专用广域网(例如政务网)进行连接。图2对工作组内部组织架构进行了说明。

图2 组内架构

该数据管理体系一般包括组、本地(单位层面)和远程3个层面的Docker仓库与应用系统。其核心理念在于利用Docker技术体系实现数据和应用管理的规范化、便捷化,降低安全风险和管理成本。在应用中,可以按照实际情况灵活取舍,例如规模较小的单位可以仅保留本地和远程2个仓库层级、仓库仅保存核心数据资产等,规模较大的单位可以增加层级。

体系中,数据分发与共享通过各级镜像仓库和Docker官方客户端来实现。个人或者组内仓库可以使用支持快速部署模式但权限管理功能较弱的Docker Registry实现;本地和异地仓库可以使用Nexus3仓库发布工具实现,该工具提供细粒度的权限管理功能,能够单独设定指定账号对指定仓库的读写及管理员权限,具有更高的安全性。数据的发布与同步、检索、获取通过Docker客户端的push、search和pull命令以及Docker仓库提供的HTTP API来实现,也可以使用相应的图形界面客户端。各级仓库存储内容按需裁剪,例如个人仓库可以存储个人的临时数据,而组内仓库则存储组内需要共享或者备份的数据,本地仓库仅存储要在单位范围内应用的数据,异地仓库则是存储关键数据,公有仓库仅存储不涉密的数据。

数据的版本管理通过Docker镜像版本标签来实现,Docker镜像使用了基于容器层的差分存储技术,在旧版本的基础上生成新版本镜像只需要新增发生改动的容器层,因此能够在完整保留历史版本的同时有效减少存储资源的消耗。

应用的部署可以通过Kubernetes等容器管理平台来实现。本方案采用的是标准的Docker仓库,与这些平台完全兼容,支持应用的动态加载和快速扩容。

数据备份则通过镜像仓库的冷备份和各级镜像仓库的同步来实现。Nexus3以及Docker Registry等仓库发布工具均通过统一的路径来实现仓库元数据和镜像数据的存储,这为冷备份提供了很大的便利;各级镜像仓库的同步可以保证最重要的数据能有多个备份;远程仓库可以实现异地备份。采用这种数据备份模式,一方面能够以较低的运维成本实现两地三中心这种高等级的容灾备份模式,另一方面Docker开封即用的技术特点也能为业务的迅速恢复提供有力支撑。

3 应用案例

为促进商业企业进行营销优化,四维图新商业服务部(图新数聚)自2015年开始提供在线的客群覆盖分析服务,所使用的基础数据每个季度更新一次,历史数据归档。使用过程中发现该服务存在以下不足:一是数据量很大导致服务的部署与更新耗时较长,并且会影响其他服务的运行;二是运行所需计算资源较多,扩容成本高;三是难以迅速启用历史版本;四是灾备对人工操作依赖度较高。

为解决这些问题,应用本文所述方案对该服务进行改造。服务各版本均打包为Docker镜像,在北京、武汉以及云仓库上进行同步;服务根据需求使用内网或云上的Docker管理平台进行指定版本的部署,服务的实例数动态调整。以上措施不仅使版本切换与服务扩容变得易于实现,也降低了服务的成本,还提供了高等级的容灾备份能力,较好的达到了改造目标。

4 总结与展望

本文提出一种利用容器技术进行空间数据管理的方案,能够为空间数据共享与备份、应用的分发与部署以及它们的检索和版本管理提供一种规范、安全、低运维成本,高可用性的模式。该方案已经在四维图新数据生产和工信部国产计算机平台技术论证项目中得到了初步应用,验证了其可行性和有效性。笔者在https://github.com/asdawn/docker4gis对相关软件安装配置方法以及常见问题进行了详细说明。

需要特别指出的是,随着国产计算机硬件和操作系统的逐步推广,测绘系统内大量已有应用必然要针对ARM指令集CPU和Linux操作系统(例如飞腾处理器和麒麟操作系统)进行重构。在此过程中,Docker技术在降低应用开发难度、提高系统稳定性和可用性方面能够提供很大帮助。因此,采用该方案也有助于将后实现技术的平稳过渡。

猜你喜欢

空间数据镜像备份
“备份”25年:邓清明圆梦
镜像
镜像
元数据驱动的多中心空间数据同步方法研究
浅析数据的备份策略
镜像
镜像
出版原图数据库迁移与备份恢复
基于文件系统的分布式海量空间数据高效存储与组织研究
客户端空间数据缓存策略