基于云原生的时空大数据平台设计与实现

2022-05-19 08:14王占林辛亚芳赵根庄石伟伟朱卫芳
地理信息世界 2022年2期
关键词:数据服务容器时空

王占林,辛亚芳,马 亮,赵根庄,石伟伟,朱卫芳

1.石家庄市自然资源和规划局,河北 石家庄 050011;

2.北京超图软件股份有限公司,北京 100015;

3.河北省地理信息集团有限公司,河北 石家庄 050031

0 引 言

时空大数据平台(简称平台),是基于统一的时空基准,汇聚融合基础时空数据、公共专题数据、物联网实时感知数据、互联网在线抓取数据以及其他扩展数据等,并对这些数据进行统一管理、共享应用、挖掘分析、泛在服务的技术系统[1-3]。2012年,国家测绘地理信息局提出开展智慧城市时空信息云平台建设试点工作,平台已逐渐成为测绘地理信息工作实现“两支撑、一提升”定位的服务载体、自然资源管理的统一底板、智慧城市的时空基础设施、数字孪生城市的空间数字底盘等[1-4]。

受限于技术本身的发展,早期的平台建设,多采用面向服务架构(SOA),将平台的不同功能单元进行拆分,主要有通用数据服务、目录服务、元数据服务、数据发布服务、地图操作服务、地理编码服务、空间分析服务等。这些服务基于SOAP(Simple Object Access Protocol)、JMS(Java Messaging Service)等协议,通过企业服务总线(ESB),实现不同服务之间的互联互通。这种架构建设的平台,具有一定的分布式服务能力,但各类服务交互必须通过ESB实现。

随着平台在各领域的不断渗透应用,其核心基础地位不断凸显,同时平台的用户体量不断增加、应用需求不断拓展、业务逻辑与功能日益复杂,造成功能服务拆分的粒度越小、业务功能越多,基于SOA的服务注册与调用也会越复杂、效率也会受到影响[5]。另一方面,基于SOA的架构,软件整体体量仍然较大,在利用虚拟化技术时,需要制作整个平台的镜像文件,当平台用户仅对其中空间分析一个服务功能需求量较大,也需要对虚拟机中的整个系统功能进行复制扩展,未能充分有效利用资源。因此,在大用户量、大业务量的情况下,如何保障平台稳定、高效的服务能力,如何快速定位故障并解决问题,如何保障平台的快速迭代更新等,都成为当前平台建设或升级面临的重要问题[4-5]。

在微服务、容器等技术的推动下,云原生(Cloud Native)逐步成为当前主流的信息化架构,其基于微服务架构思想、以容器为部署载体、可自动化编排、借助敏捷方法支持持续迭代和运维自动化,依托云基础设施环境,可实现弹性伸缩、动态调度、优化资源利用率等[6-7]。基于云原生架构建设时空大数据平台,将平台服务按需拆分为不同的微服务,以容器为载体进行独立部署,并通过自动化编排工具,实现平台服务的高效管理,在应对大用户量、大业务量访问时,将大大提升平台的高可用、高并发、高弹性等能力。云原生架构在传统IT领域发展迅速,而结合时空大数据平台的实际需求,微服务如何拆分与治理、容器环境如何部署与编排等,目前业内还未有完整的研究[8-11]。本文将结合时空大数据平台高可用、高并发、高弹性的实际需求,提出基于云原生的平台架构设计,并通过石家庄实例进行验证。

1 平台架构设计

本文将云原生的核心理念与时空大数据平台的核心要求相结合,基于微服务架构、容器化、自动化编排等技术,并融合DevOps(Development和Operations的组合词,表示开发运维一体化)与持续交付的思想,提出石家庄时空大数据平台建设的总体架构,形成以云基础设施为支撑,以时空大数据汇聚、融合、管理、共享、分析等于一体的平台与应用服务支撑体系,为石家庄自然资源管理及城市治理等领域应用提供时空基础信息、可视化应用及空间分析服务(图1)。

图1 平台架构Fig.1 Platform architecture

基础设施层。直接利用石家庄市自然资源和规划局内的基础软硬件设施及政务云环境,采用云原生部署模式,基于Docker创建Kubernetes构建一个容器的调度服务,便于容器集群管理,依据运行所需资源动态扩展。

数据层。按照物理分布、逻辑集中的方式,基于统一时空基准,汇聚融合基础时空数据、公共专题数据、物联感知数据、在线抓取数据等内容,并根据空间、语义关联,建立起数据之间的关联关系,形成石家庄市统一的时空大数据一张图。

平台层。采用开发运维一体化的模式,使用GitLab管理代码、Sonatype搭建私有组件库、Harbor构建镜像仓库、Jenkins持续集成和Jira缺陷管理,整合促进开发、技术运营和质量保障部门之间的沟通与协作;基于微服务架构,建立数据服务、空间分析服务、专题应用服务、大数据服务、定制接口等5大类微服务,并提供注册中心、配置中心、远程调用、负载均衡、服务网关、链路跟踪等微服务治理基础设施,形成平台的核心能力框架;最后通过平台门户,为用户提供集约、高效、灵活的技术、业务支撑能力,实现核心功能只开发一次。

应用层。是解决各部门实际需求的业务应用系统,可以通过共享、按需组合平台的数据、服务等,实现快速搭建。

2 平台关键技术研发

2.1 微服务划分设计

微服务架构的核心,是将复杂的单体应用拆分为多个、独立的服务模块,每个模块专注单一业务功能,并可以独立编译及部署,同时各模块间通过轻量级的交互机制来通信,组合为整体对外提供完整服务,从而保证了更好的弹性与故障隔离。微服务的拆分粒度是微服务架构的基础,过粗或过细都会影响应用效果。

结合时空大数据平台的业务需求,本文采用基于业务驱动的方式,结合功能占用资源、使用频率等,将平台功能服务划分为数据服务类、空间分析类、专题应用类、大数据服务类、定制接口类等5个大类、28个小类的微服务,具体内容如图2所示。

图2 平台微服务划分内容Fig.2 Platform micro-service division

1)数据服务类。主要围绕各类应用对数据本身的使用需求,按照不同的数据类型,划分为矢量地图服务、影像地图服务、三维地图服务、地理实体服务、地名地址数据服务、物联感知数据服务以及其他专题数据服务等,并可根据新增数据类型进行扩展定制。

2)空间分析类。主要围绕各类应用对空间计算、分析类的相关需求,划分为空间量算服务、缓冲分析服务、叠加分析服务、统计分析服务、统计报表服务、专题制图服务、地理编码服务以及其他分析服务,并可根据新增分析需求进行扩展定制。

3)专题应用类。主要围绕国土空间规划、实施等过程的需求,划分为合规性审查服务、控制线符合性检测服务、选址分析服务、自定义叠加分析服务等。

4)大数据服务类。主要围绕大数据存储、分析与可视化的需求,提供相应的服务。

5)定制接口类。则围绕一些功能性的应用需求,提供平台管理AP、地理实体API、物联感知API、在线抓取API、三维分析API、自定义API等。

2.2 微服务治理

微服务划分后,平台的业务拆分成一个个子服务,大量的微服务如何管理、配置、相互调用等成为核心问题。平台利用Spring Cloud框架,构建了包括服务网关、注册中心、配置中心、消息中心、许可中心等在内的服务治理,并通过智能的负载均衡机制、弹性伸缩能力等,保证平台整体的高可靠性和稳定性。

如图3所示,服务网关作为网络关口、通道,是平台所有服务的统一入口,同时承担服务路由、安全认证、限流限额、访问控制、路由、负载均衡、缓存、日志、转换、映射、过滤、熔断、注册、服务编排、API管理、监控、统计分析等非业务性功能,平台所有客户端、消费端的请求都通过统一的网关接入。注册中心提供各独立部署的微服务节点报告和发现功能,平台依托Srping Cloud提供了注册中心的组件,在开发业务功能服务、或者对外提供时空大数据服务时,都通过注册中心注册服务;服务调用方在进行服务调用时,通过注册中心返回要调用服务的地址。配置中心用于提供集中配置与动态配置更新服务,平台采用Spring Cloud提供了Config Server配置中心,为每个服务提供必要的配置信息。消息中心为各服务、各应用之间建立了一套通信机制,实现分布式系统下的消息传播。如平台配置中心某个配置项有变化时,就会对所有订阅者发布消息,接收到消息的客户端就会发起从服务端获取新配置项的请求,实现配置的动态更新。许可中心实现微服务架构下根据硬件计算资源的许可方式,有效节约成本。

图3 微服务治理Fig.3 Micro-service governance

2.3 容器化部署

容器化是一种轻量级的、建立在操作系统级的虚拟化技术,可以有效地将单个操作系统管理的资源划分到孤立的组中,以更好地平衡有冲突的资源使用需求,是微服务的有效载体。

平台引入容器化(Docker)技术,将平台所划分的微服务制作成Docker镜像,并把所有镜像存入指定的镜像仓库,部署时可直接拉取镜像形成容器,通过容器运行的方式提供服务(图4)。当平台用户发出部署请求时,机器主节点接收请求,根据各节点(1、2、3、N)的实时运行情况,选择性能最好的节点执行部署命令;该节点在接到命令后会从镜像仓库拉取所需的微服务镜像,将镜像部署成容器并持续运行。如果容器或节点机器在运行中出现故障,主节点会自动修复故障;若不能修复,则重新指定另外的节点机器部署所缺容器。

图4 容器化部署Fig.4 Containerized deployment

平台采用基于Docker容器的云原生部署模式,每个容器对应一个微服务,每个机器节点可承载多个容器,容器相对独立、且与宿主机使用同一个内核、部署无需考虑与操作系统等环境的配置工作等,性能损耗更小,部署更加便捷,故障修复能力更强。

2.4 容器自动化编排

管理一个容器并不复杂,而时空大数据平台的服务划分为多个微服务,每个微服务便需要多个容器共同支持运作。面对大规模的容器化的微服务,需要一种自动化编排的工具来对多个容器进行统一管理。

平台利用Kubernetes作为时空大数据平台微服务的管理工具,提供各类容器的自动化编排,包括容器的创建、部署、更新、维护、调度、集群等。如图5所示,利用Kubernetes的容器调度策略,可以将平台的所有容器统一管理,并支持一键部署、一键删除、可视化监控、日志收割、动态伸缩等服务。如要部署大数据分析类微服务集群时,可以进行一键部署;部署完成后,可以通过监控界面的可视化监控图表,对每个容器在节点的运行情况进行动态监控,包括容器在节点的平均CPU占用率及实时占用率、容器的平均网络上传(下载)速度及实时上传(下载)速度、磁盘的平均占用率及实时占用率等。

图5 容器自动化编排Fig.5 Auto-orchestration of the container

3 平台运行效果

石家庄时空大数据平台采用云原生架构,建立了28个微服务,支持平台在线应用的同时,支撑自然资源调查监测分析系统、自然资源规划决策支撑系统等自然资源领域应用,以及智慧政务、智慧公安、智慧城管、智慧应急、智慧环保等应用。平台具体运行环境见表1,相比传统SOA架构,在高可用、高并发、高弹性等方面的能力具有明显提升。

表1 平台运行环境配置Tab.1 Platform operating environment configuration

在高可用方面。石家庄时空大数据平台能够更好地保障系统稳定,更高效地实现运维。在传统SOA架构下,出现故障导致功能不可用;平台的集群化部署,涉及到操作系统、中间件等的部署与环境配置,需要2 h左右时间方可完成。在云原生架构下,一旦发现服务异常,会自动摧毁并重建对应的容器,保证服务不间断供应;平台的集群化部署,可以在1 min内完成,大大提升工作效率。此外,云原生架构还具备良好的扩展性,当需求发生改变时,只需改造局部微服务,而非改造整个系统。

在高并发方面。石家庄时空大数据平台能够更有效地利用计算资源。平台部署包约6 G左右。传统SOA架构,搭建集群,需要考虑整个平台的集群,占用资源较大。在云原生架构下,需要服务节点扩充时,仅需考虑某个或几个微服务所需的计算资源,大大降低对计算资源的占用,提高利用效率。

在高弹性方面。石家庄时空大数据平台针对每个微服务节点,能够动态监控其负载及健康情况,以实现负载均衡与弹性伸缩:当用户量增加时、CPU的使用率上升时,可自动创建所需的微服务节点;反之,用户量下降时,微服务节点数则会减少,计算资源也会降低。

自2021年7月上线以来,石家庄时空大数据平台共服务249个用户、1 572 279次访问、981.44 h访问时长,平台服务整体稳定高效。

4 结 论

本文提出并实现了基于云原生的时空大数据平台,在时空大数据平台涉及的微服务划分,以及微服务治理、容器化部署、自动化编排等方面进行了研究与实践,有效提升了平台服务的高并发、高可用、高弹性等能力,让平台从能用变为好用,同时大大降低了平台管理、运维及未来升级扩展的成本,由此将进一步促进平台的广泛应用,进而增强测绘地理信息公共服务能力,服务自然资源管理与城市经济社会发展各领域。

猜你喜欢
数据服务容器时空
大数据时代高校图书馆数据服务的困境及优化路径
地理空间大数据服务自然资源调查监测的方向分析
跨越时空的相遇
容器倒置后压力压强如何变
基于数据中台的数据服务建设规范研究
镜中的时空穿梭
难以置信的事情
玩一次时空大“穿越”
数据服务依赖图模型及自动组合方法研究
时空之门