一种基于Docker容器及微服务架构的智慧规划时空云GIS
平台
技术领域
本发明涉及智慧规划时空云GIS平台,具体涉及一种基于Docker容器及微服务架构的智慧规划时空云GIS平台。
背景技术
智慧规划时空技术是运用信息和通信的方式全方位立体化地感测、分析和整合现代化城市运行系统的各项数据信息,从而有针对性且迅速地对城市环保、公共安全、城市服务和工商业活动等需求做出智能响应,它不仅为城市规划海量的空间数据提供了更为科学的管理,还通过开发规划数据分析模型,让规划分析可演化、可感知,包括空间结构,用地分析,经济产业分析,交通分析,人口流动分析、设施分析等等,实现城市的精准把脉和规划科学评估。
GIS系统是一套完整的地理空间信息的系统,主要是通过收集整个地球空间内的山、河、湖泊、街道、气象信息,然后通过可视化技术显示出来,并对信息进行处理、存储和分析,它不仅为城市规划海量的空间数据提供了更为科学的管理,还为城镇体系规划、区域规划、城市总体规划、控制性详细规划、修建性详细规划以及城市设计在人口预测、工程选址、经济预测等方面提供了一种先进的分析工具。
不过,传统的GIS系统架构存在以下问题:
(1)灵活性差:为了适应相同的服务器环境应用的各种后端服务通常使用相同的编程技术,造成了信息共享性和灵活性差问题;
(2)扩展性差:由于所有的应用代码都运行在同一个进程中,当应用的单项服务存在性能瓶颈时,只能提升服务器整体的硬件性能,造成了资源浪费现象严重,GIS系统运行效率低等问题。
(3)耦合性差:应用的各服务之间的依赖关系随着时间推移,逐渐复杂,会造成GIS系统开发周期长、后期维护困难等问题。
Docker容器是一个容器级虚拟化解决方案,也是在Linux平台上的一款轻量级虚拟化容器的管理引擎,可以让GIS系统开发人员将各种各样不同代码程序放到一个可移植的容器中,然后发布到任何流行的Linux机器上实现虚拟化,Docker容器是完全使用沙箱机制,相互之间不会有任何接口。Docker容器借鉴了集装箱的概念,在执行软件的执行创建、启动、重启、关闭和销毁镜像的操作时,并不关心Docker容器里面到底是什么,所有的系统都是按照相同的方式装载进去,这些系统可以是数据库、Web服务器或是应用软件服务等等。
随着Docker容器技术的普及,越来越多企业基于Docker容器构建自己的PaaS平台,目前迫切的一个需求是在PaaS平台当中,运维和开发人员可以在浏览器上使用控制台直接对Docker容器进行操作,但是目前的Web控制台主要是利用传统的SSH协议登录到Docker容器宿主机,再利用Docker命令进入特定容器。由于首先需要登录到宿主机进行操作,使得方案在安全性,和便捷性上都存在很大的问题。
发明内容
针对现有技术的不足,本发明的目的旨在提供一种基于Docker容器及微服务架构的智慧规划时空云GIS平台,实现了服务组件在Docker容器中的自动化部署和统一管理,提升智慧规划服务的安全性和高效性。
为实现上述目的,本发明采用如下技术方案:
一种基于Docker容器及微服务架构的智慧规划时空云GIS平台,该平台采用层级架构,且从下至上依次包括:
基础底层,用于提供为适用于为GIS平台提供基础配套设施及任务调度、弹性计算资源的基础服务;即能够为Linux底层、Graph DB层、Docker层和应用层提供所需的计算资源、存储资源和网络资源,通过将以上资源进行技术资源池话,以实现上述资源的按需分配和快速部署;
Linux底层,包括控制组、命名空间、应用保护、设备、网络连接,所述控制组和命名空间为每一个Docker容器提供各自运行的空间;所述网络连接为GIS平台提供网络,所述设备为各种驱动、网络接口层、ip以及端口;所述应用保护为不同的微服务如果需要访问同一资源,需要对资源的访问加上保护;
数据层,是GIS平台的数据存储引擎,将与数据相关的服务集中化,同时对数据处理和分析,并将处理之后的数据提供给GIS平台的其他层或用户;
Docker层,包括Docker客户端、Docker进程和Docker注册信息端,所述Docker客户端连接应用层,所述Docker进程接收Docker客户端的请求,并根据请求创建服务并运行;所述Docker注册信息申请以获取Docker镜像进行各种数据服务、知识服务和功能服务;
应用层,采用微服务架构,用于封装各个应用程序;所述各个应用程序与所述Docker层的Docker客户端相互通信,通过Docker客户端向Docker服务器端发出请求,实现应用层对每个Docker镜像对应的Docker容器进行管理,所述应用层还对所述数据层的各种数据进行多维分析和交互分析,实现对各种数据生命周期的完善管理,提供高质量的数据输出和输入,便于给客户展示成果。
进一步地,所述Docker进程包括业务流引擎、地名地址引擎和知识化引擎。
进一步地,所述Docker进程接收Docker客户端的请求,并根据请求创建服务并运行,具体为,所述Docker进程接收Docker客户端的请求,在业务流引擎、地名地址引擎和知识化引擎中在线调用已有的服务,并根据调用情况创建相应的服务并运行。
进一步地,所述数据层包括数据分析、数据引擎、空间处理、数据汇聚,所述数据分析包括数据聚合、数据质量管理、数据清洗;所述空间处理包括统一数据格式、数据一致性处理和数据空间化;所述数据汇聚指建立数据时空标识,包括历史与现状的基础地理信息数据汇聚、历史与现状的公共专题数据汇聚、只能感知实时数据汇聚和空间规划数据汇聚。
进一步地,所述数据层中存放的数据类型包括:基础地理信息数据、公共专题数据、智能感知实时数据、空间规划数据。
进一步地,所述数据层对数据进行处理,具体为:所述数据层通过空间处理进行数据治理与标准化,用于对城市可共享的空间数据进行汇聚和交换,实现数据的提取、传输和推送满足不同部门专题数据共享的要求。
进一步地,所述对每个Docker镜像对应的Docker容器进行管理,包括管理监视各个Docker容器的运行指标,并根据负载迅速扩容,启动额外的Docker容器完成指定的操作,对每个Docker镜像对应的Docker容器的创建、启动、停止、配置、查询和删除。
进一步地,所述Docker镜像包括,负载均衡服务Docker镜像,国际湾区数据查询服务Docker镜像、时空大数据共享服务Docker镜像、数据上传与管理服务Docker镜像、数据应用管理与统计服务Docker镜像、空间数据展示服务Docker镜像和规划数据分析服务Docker镜像。
进一步地,所述Docker容器,包括:
负责均衡Docker容器,创建至少一个用于实现负载均衡服务的实例;
国际湾区数据查询服务Docker容器,创建至少一个用于国际湾区数据查询服务的实例;
时空大数据共享服务服务Docker容器,创建至少一个用于时空大数据共享服务的实例;
数据上传与管理服务Docker容器,创建至少一个用于数据上传与管理服务的实例;
数据应用管理与统计Docker容器,创建至少一个用于数据应用管理与统计的实例。
空间数据展示服务Docker容器,创建至少一个用于空间数据展示服务的实例;
规划数据分析服务Docker容器,创建至少一个用于固化数据分析服务的实例。
本发明的有益效果在于:
1.本发明实现动态监测城市发展体征,空间规划实施评估,规划项目编制,多源数据模型支撑城市规划决策等智慧规划目标;
2.本发明能系统性开展城市发展的量化数据收集和评估,全面构建展示和理解城市空间现象的城市发展指征;
3.本发明利用云平台的Docker技术的应用组件级虚拟化特性资源利用率,将平台中的每一项智慧规划中服务以组件的形式封装为各个独立的Docker镜像,从而实现服务组件在Docker容器中的自动化部署和统一管理,提升智慧规划服务的安全性和高效性,让智慧规划服务系统在未来云平台部署和运维更加快捷方便。
附图说明
附图1为本发明的GIS平台架构;
附图2为Docker容器的建立流程图;
附图3为Docker容器的删除流程图;
附图4为Docker容器的停止流程图;
附图5为Docker容器的配置流程图;
附图6为Docker容器的日志查询流程图;
附图7为Docker容器的启动流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
实施例一
如图1所示,一种基于Docker容器及微服务架构的智慧规划时空云GIS平台,该平台采用层级架构,且从下至上依次包括:
基础底层,包括基础服务和基础设备,用于提供为适用于为GIS平台提供基础配套设施及任务调度、弹性计算资源的基础服务;即能够为Linux底层、GraphDB层、Docker层和应用层提供所需的计算资源、存储资源和网络资源,通过将以上资源进行技术资源池话,以实现上述资源的按需分配和快速部署;
Linux底层,包括控制组、命名空间、应用保护、设备、网络连接,所述控制组和命名空间为每一个Docker容器提供各自运行的空间;所述网络连接为GIS平台提供网络,所述设备为各种驱动、网络接口层、ip以及端口;所述应用保护为不同的微服务如果需要访问同一资源,需要对资源的访问加上保护;
数据层,是GIS平台的数据存储引擎,将与数据相关的服务集中化,同时对数据处理和分析,并将处理之后的数据提供给GIS平台的其他层或用户;
数据层包括数据分析、数据引擎、空间处理、数据汇聚,所述数据分析包括数据聚合、数据质量管理、数据清洗;所述空间处理包括统一数据格式、数据一致性处理和数据空间化;所述数据汇聚指建立数据时空标识,包括历史与现状的基础地理信息数据汇聚、历史与现状的公共专题数据汇聚、只能感知实时数据汇聚和空间规划数据汇聚。
数据层中存放的数据类型包括:基础地理信息数据、公共专题数据、智能感知实时数据、空间规划数据;数据层对数据进行处理,具体为:所述数据层通过空间处理进行数据治理与标准化,用于对城市可共享的空间数据进行汇聚和交换,实现数据的提取、传输和推送满足不同部门专题数据共享的要求。
Docker层,包括Docker客户端、Docker进程和Docker注册信息端,Docker客户端连接应用层,所述Docker进程接收Docker客户端的请求,并根据请求创建服务并运行;所述Docker注册信息申请以获取Docker镜像进行各种数据服务、知识服务和功能服务;Docker进程包括业务流引擎、地名地址引擎和知识化引擎;Docker进程接收Docker客户端的请求,并根据请求创建服务并运行,具体为,所述Docker进程通过Docker Server支撑的云服务系统引擎接收Docker客户端的请求,在业务流引擎、地名地址引擎和知识化引擎中在线调用已有的服务,并根据调用情况创建相应的服务并运行。
应用层,采用微服务架构,用于封装各个应用程序;所述各个应用程序与所述Docker层的Docker客户端相互通信,通过Docker客户端向Docker服务器端发出请求,实现对每个Docker镜像对应的Docker容器进行管理,实现应用层对每个Docker镜像对应的Docker容器进行管理,所述应用层还对所述数据层的各种数据进行多维分析和交互分析,实现对各种数据生命周期的完善管理,提供高质量的数据输出和输入,便于给客户展示成果。
多维分析是一种基于多维立体的地理时空数据,用维的概念进行信息数据的分析;所述交互分析是共享开放实现对数据生命周期的完善管理,提供高质量的数据输出输入,为用户展现成果。
对每个Docker镜像对应的Docker容器进行管理,包括管理监视各个Docker容器的运行指标,并根据负载迅速扩容,启动额外的Docker容器完成指定的操作,对每个Docker镜像对应的Docker容器的创建、启动、停止、配置、查询和删除。
Docker镜像包括,负载均衡服务Docker镜像,国际湾区数据查询服务Docker镜像、时空大数据共享服务Docker镜像、数据上传与管理服务Docker镜像、数据应用管理与统计服务Docker镜像、空间数据展示服务Docker镜像和规划数据分析服务Docker镜像。
Docker容器,包括:
负责均衡Docker容器,创建至少一个用于实现负载均衡服务的实例;
国际湾区数据查询服务Docker容器,创建至少一个用于国际湾区数据查询服务的实例;
时空大数据共享服务服务Docker容器,创建至少一个用于时空大数据共享服务的实例;
数据上传与管理服务Docker容器,创建至少一个用于数据上传与管理服务的实例;
数据应用管理与统计Docker容器,创建至少一个用于数据应用管理与统计的实例。
空间数据展示服务Docker容器,创建至少一个用于空间数据展示服务的实例;
规划数据分析服务Docker容器,创建至少一个用于固化数据分析服务的实例。
Docker容器的管理是通过Docker-Java的API来进行操作,在对Docker-java提供的Docker Remote API进一步封装后部署到各个安装了Docker客户端包含的业务流引擎或地名地址引擎或知识化引擎的节点上对Docker容器进行操作和管理,GIS平台中的Agent处理类对Docker客户端请求进行接收并且做相应的处理,即Docker容器创建、删除、停止、配置、查询和启动。
应用层封装了国际湾区数据查询系统、时空大数据共享系统、数据上传与管理系统、数据应用管理与统计系统、空间数据展示系统、空间数据展示系统、法定城乡规划成果数据多向转换系统系统、城市总体规划数据检测系统,应用层采用的微服务架构提供了各系统的模块化解决方案,微服务架构将各系统的每个服务方法单独拆解出来,每一个服务方法独立成一个模块,每个模块可用不同的语言开发、部署和测试,可在不同系统间互相调用、共享,大大提高扩展性、灵活性、独立性和可维护性。应用层的微服务架构将现有应用的基础组件拆分为多个微服务,如缓存服务、消息服务、调度服务、非结构化服务、流程服务、接入服务、配置服务、认证授权服务、日志服务等。依托服务注册与发现机制,各个服务自治,服务之间协同,所有服务调用都使用统一的HTTP服务通信框架,达到标准化。
①微服务部署
GIS平台应用层采用的微服务架构使用Open Stack的开源框架和Docker容器技术进行微服务开发,Docker容器提供有编译、上传、下载、启动和停止Docker容器的所有功能,Docker容器管理上允许使用各种语言/工具/框架开发微服务,用于封装各个应用程序;所述各个应用程序与所述Docker层的Docker客户端相互通信,通过Docker客户端向Docker服务器端发出请求,实现对每个Docker镜像对应的Docker容器进行管理。GIS平台采用GoogleKubernetes架构满足微服务调用、微服务管理与监控,Google Kubernetes微服务架构具有学习成本低、使用简单、高可移植性、易于测试、性能高、部署简单和易于监控的特点。
服务调用:GIS平台的微服务代码是由不同编程语言开发的:例如,对数据实时性和准确性高的实时库服务、数据接口服务、数据网关是采用C++语言实现的,而对一些考虑到跨平台可移植的微服务模块则采用java语言,由于Rest API,无需针对不同的语言,同时Rest API满足分布式部署的要求,并能保证业务功能的一致性,因此微服务调用基于http(s)的Rest API,它包括基本API、地图类API、事件类API、控件类API、数据解析类API、三维类API、专业API、物联网API、历史分析API和比对分析API等各类应用程序接口服务,APIGateway是用户进入系统的节点。API Gateway封装内部系统框架,为Docker客户端提供API,并且还有分发、监控、缓存、负载均衡等功能,所有来自Docker客户端的请求都先经过API Gateway,由API Gateway调用多个微服务处理一个请求并聚合多个服务返回结果,并提供调用示例,提供各种示例的源代码下载,用户可以将这些源代码运用到自身的专题应用系统中。
②微服务应用
应用层的微服务架构模式通过Docker层复用其他基础服务,在线调用现成服务和知识,通过流程工具的自动化,实现更敏捷GIS平台。
数据层的微服务应用包括数据采集和数据接入,数据采集通过时空标识实现,包括空间规划数据、基础地理数据和公共专题等数据。每个Docker主机使用Filebeat进行日志收集,Node Exporter接入应用层指标数据,观察资源的明细情况,Filebeat:轻量型日志分析。
数据接入采用web数据接入页面、基于SQL的ETL功能、网络通信方式三种接入方式。数据层内数据接入的数据最终组装成平台定义的协议格式发送到各个业务模块,进行运算、分析、入库等操作。在数据层的数据管理分析中,大数据管理通过建立数据仓库,使用元数据、编辑处理、查询统计和可视化管理去建立统一的数据,用于对管理决策过程的支持。数据层的数据挖掘为时空分布、数据分析等服务从每个微服务业务中收集、抽取、转换有关数据,实现对时空大数据中各类时空数据的数据源管理、数据入库更新、数据查询、数据统计报表、符号库管理、元数据管理、时态管理、安全管理、系统设置、数据浏览和分析、历史数据管理和时空数据挖掘。另外,Kibana提供多维度的数据展现功能,结合ElasticSearch可以实现TB级别数据的秒级检索。Kibana:开源数据分析和数据可视化工具。
如图2所示,Docker容器的建立流程:
在容器创建接口定义中,包含三个参数:
request:是Container Creating Request对象实例,该类封装了Docker容器的各个配置信息,例如Docker容器的id、Docker容器在Docker主机中的路径等;
name:Docker容器名字,对新建Docker容器进行命名;
port:Docker容器端口号,该容器的端口。
步骤一:Docker客户端向Agent发出Docker容器建立请求;
步骤二:对request参数进行解析,从中解析出需要创建的容器的各个置信息;
步骤三:调用Docker-java对容器的创建API来进行创建;
步骤四:如果创建成功,则会返回创建成功的Docker容器的唯一标识ContainerId值,如果创建失败,则弹出失败的交互信息提醒用户。
Container Id值是Docker引擎在Docker容器创建初自动赋值,是唯一标识,对Docker容器的整个生命周期起到了关键性的作用;Docker容器的暂停、Docker容器的暂停操作、Docker容器的删除操作以及容器的重启操作都是根据Container Id来进行的。
如图3所示,Docker容器的删除流程:
步骤一:Docker客户端向Agent发出对Container Id的Docker容器删除请求;
步骤二:判断Docker主机中是否存在具备该Container Id的容器,若存在该容器则执行步骤三,否则弹出“不存在该容器”提示信息;
步骤三:调用Docker-java的API删除命令;
步骤四:判断是否有执行权限,若有则执行,否则弹出“没有删除权限”提示信息。
如图4所示,Docker容器的停止流程:
步骤一:Docker客户端向Agent发出对Container Id的Docker容器停止的请求;
步骤二:判断Docker主机中是否存在具备该Container Id的容器,若存在该容器则执行步骤三,否则弹出“不存在该容器”提示信息;
步骤三:调用Docker-java的API暂停命令;
步骤四:判断是否有执行权限,若有则执行,否则弹出“没有暂停权限”提示信息。
如图5所示,Docker容器的配置流程:
步骤一:Docker客户端向Agent发出对Container Id的Docker容器配置的请求;
步骤二:判断Docker主机中是否存在具备该Container Id的容器,若存在该容器则执行步骤三,否则弹出“不存在该容器”提示信息;
步骤三:调用Docker-java的API配置Docker容器的命令;
步骤四:判断是否有执行权限,若有则显示容器相关信息,否则弹出“没有查看信息权限”提示信息。
如图6所示,Docker容器的日志查询流程:
步骤一:Docker客户端向Agent发出对Container Id的Docker容器日志查询的请求;
步骤二:判断主机中是否存在具备该Container Id的容器,若存在该容器则执行步骤三,否则弹出“不存在该容器”提示信息;
步骤三:调用Docker-java的API获取容器日志的命令;
步骤四:判断是否有执行权限,若有则显示容器日志,否则弹出“没有查看信息权限”提示信息。
如图7所示,Docker容器的启动流程:
在Docker容器中还存在另一个参数就是int类型的Waiting Time。
步骤一:Docker客户端向Agent发出对Container Id的Docker容器启动的请求;
步骤二:判断主机中是否存在具备该Container Id的容器,若存在该容器则执行步骤三,否则弹出“不存在该容器”提示信息;
步骤三:调用Docker-java的API重启命令;
步骤四:判断是否有执行权限,若有,则在等待Waiting Time秒后启动,否则弹出“没有重启权限”提示信息。
本发明使用Open Stack的开源框架和Docker容器进行微服务开发,Docker容器提供有编译、上传、下载、启动和停止Docker容器的所有要功能;为适应在大规模群集部署和应用,本发明采用Google Kubernetes架构满足微服务调用、微服务管理与监控的要求,微服务架构具有学习成本低、使用简单、高可移植性、易于测试、性能高、部署简单和易于监控的特点。
GIS平台包括《国际湾区数据查询》《时空大数据共享系统》《数据上传与管理系统》《数据应用管理与统计系统》《空间数据展示系统》和《空间数据展示系统》《法定城乡规划成果数据多向转换系统系统》和《城市总体规划数据检测系统》等子系统,通过微服务架构平台,将现有应用的基础组件拆分为多个微服务,如缓存服务、消息服务、调度服务、非结构化服务、流程服务、接入服务、配置服务、认证授权服务、日志服务等。各个服务自治,服务之间协同,所有服务调用都使用统一的HTTP服务通信框架,达到标准化。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。