SuperMapiServer微服务多实例技术白皮书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SuperMap iServer 微服务多实例【技术白皮书】
前言
随着64位系统和多核计算机日益普及,如何通过并行来充分利用64位系统和多核环境下的计算资源成为系统设计和开发人员必须面对的问题。而多进程,就是解决这一问题的途径之一。GIS本身具有海量数据的特点,同样需要多进程这一并行途径来充
分利用多核计算机的计算能力。
微服务架构是近几年出现的一种新型的架构模式,主张将一个应用划分为多个进程间隔离的服务。参考微服务架构的思想,SuperMap iServer设计实现了支持可视化配置、动态可伸缩的单机多进程架构。
为进一步丰富与完善多进程具有的优势,SuperMap iServer 在多进程的基础之上,提出了多实例的服务部署模式。本解决方案将帮助您了解如何以多实例的方式部署服务。
本解决方案包括以下几章:
第一章为简介,由于多实例是在微服务多进程基础之上设计的,因此需要先为您介
绍SuperMap iServer 微服务多进程
第二章介绍了多实例方案,包括什么是多实例及应用场景。
第三章、第四章为如何启用多进程模式、多实例的主要操作,通过详实的示例为您
展示具体操作流程
第五章为多实例配置时的注意事项。
目录
前言 (2)
1多进程与多实例 (4)
1.1多进程简介 (4)
1.2什么是多实例 (5)
1.3多实例应用场景 (5)
1.3.1避免高并发时服务访问效率低的问题 (5)
1.3.2进一步解决单机资源利用率低的问题 (6)
2如何配置多实例 (7)
2.1启用多进程 (7)
2.2配置多实例 (8)
2.2.1示例:在快速发布中配置多实例 (9)
2.2.2示例:在服务管理中配置多实例 (12)
3注意事项 (13)
1多进程与多实例
使用多实例需要基于iServer 多进程,因此在介绍多实例之前,您需要先了解iServer 微服务多进程概念及其架构。
1.1多进程简介
基于微服务架构思想,SuperMap iServer 设计实现了单机多进程架构。进程(Process)是在操作系统的控制下执行某个程序的活动。一般情况下一个GIS应用对应系统中的一个进程,如一个iServer服务启动后,就可以在系统的任务管理器中看到
相应的Java进程。多进程(Multi-process)则是指某个应用可以在一个操作系统即单
机环境下,同时开启和使用多个进程。
iServer单机多进程架构如图所示:
图 1 iServer多进程架构
其中,Master与Worker、Damen的具体职责与交互关系为:
Master是iServer的主进程,负责启动、协调、管理当前系统中的所有节点即
Worker。iServer多进程启用以后,当前的iServer会自动被识别为Master
节点。为保证主节点的可用性,Master本身节点不负责处理具体的业务逻辑,
如不提供GIS服务,不参与分布式切图。
Worker是由Master启动和管理的iServer进程。一个Worker对应一个端口
的iServer,Worker支持服务发布、GIS请求处理,以及参与分布式切图。
Damen是iServer的监控进程,负责监控、启动Master节点,避免Master
节点失效。启动一个iServer时Damen进程自动启动,您无需配置、管理该
进程。
通过启用多进程可实现单机上的服务并行,SuperMap iServer在多进程模式的基础之上设计并提出了多实例,以进一步满足GIS并行需求。
1.2什么是多实例
首先,实例是指iServer服务实例,即运行在iServer中具体的服务实体,如map-China/rest。多实例特性是基于多进程工作模式,将一个服务自动扩展出多个完
全相同的实例,并且每个实例分别运行在一个进程中,每个实例都可以独立处理请求。
当多进程的主节点(Master节点)收到用户的请求后,根据特定算法,选择一个实例
来响应用户的请求。iServer多实例结构如图1图 2 所示:
图 2 iServer 多实例
1.3多实例应用场景
1.3.1避免高并发时服务访问效率低的问题
对于有高并发需求的服务,如果仅运行在单个进程中,必然会造成客户端长时间排
队等待。如果服务被错误占用,还将导致该服务无法用于其他应用程序。
多实例是将同样的服务实例放入多个进程中,每个进程间相互独立,互不影响,因
此可保证服务的可用性。当服务器收到相同服务的并发请求时,便可由多个进程处理,
减少客户端的等待时间。
如图3所示,利用第三方测试工具,测试了同一服务在设置了不同实例个数时,
服务点击率的变化情况。服务点击率即客户端每秒向服务器提交的请求数,服务点击率增加,表示服务响应速度提升。
图3服务性能随实例个数增加而提升
1.3.2进一步解决单机资源利用率低的问题
多进程模式的主要优势包括对系统资源的集约利用,解决单机资源利用率低的问题。而多实例在此基础上,支持实例数量自定义配置,为系统资源合理分配提供了有效的优
化方案。
对于负载高的服务,会占用较多系统资源,例如空间数据量大且较为复杂的地图服务,每次读取数据需消耗更多资源,因此可为该服务分配较多的进程,并与其他服务隔
离在不同的进程中,以避免其他服务进行资源抢占,影响服务质量。
对于负载低的服务,为节约资源,通常的做法是与其他负载低的服务放置在同一进
程中。但这种方式存在一定的风险,当进程意外停止时,该进程中的所有服务都将不可
用。因此,在上述方式的基础上,为负载低的服务也启用多实例,并设置少量实例个数,既可以保证服务可用性,也避免了资源的浪费与闲置。
2如何配置多实例
使用多实例功能前,需要先开启iServer 多进程模式。
2.1启用多进程
目前,iServer 提供了可视化的单机多进程配置来协助您在一个操作系统上快速地
创建多个iServer 进程。您只需要启动多进程,iServer 即可根据您指定的进程数自动创建、启动多个进程。
启用多进程意味着:当前操作系统中的iServer从单个进程变为多个进程,而禁用
多进程则意味着从多个iServer进程变为单个进程。
您可以参考以下步骤在单机上配置并启用多进程:
1.访问iServer 服务管理器,依次点击“服务”、“高级”、“多进程配置”
2.在多进程配置页面,勾选“多进程模式是否启用”,并根据您的系统配置设置
Worker 进程数(建议该Worker 数与CPU 核数相等,以获得最佳性能),此处设置为 4
3.设置Java虚拟机内存。默认为1024M
4.设置主进程与子进程间的通信端口号,避免与其他端口冲突。修改后需重启iServer
方可生效