SuperMap iServer 微服务多实例

2024-02-25 10:48
文章标签 服务 实例 supermap iserver

本文主要是介绍SuperMap iServer 微服务多实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

随着64位系统和多核计算机日益普及,如何通过并行来充分利用64位系统和多核环境下的计算资源成为系统设计和开发人员必须面对的问题。而多进程,就是解决这一问题的途径之一。GIS本身具有海量数据的特点,同样需要多进程这一并行途径来充分利用多核计算机的计算能力。
微服务架构是近几年出现的一种新型的架构模式,主张将一个应用划分为多个进程间隔离的服务。参考微服务架构的思想,SuperMap iServer设计实现了支持可视化配置、动态可伸缩的单机多进程架构。
为进一步丰富与完善多进程具有的优势,SuperMap iServer 在多进程的基础之上,提出了多实例的服务部署模式。本解决方案将帮助您了解如何以多实例的方式部署服务。

1 多进程与多实例
使用多实例需要基于iServer 多进程,因此在介绍多实例之前,您需要先了解 iServer 微服务多进程概念及其架构。
1.1 多进程简介
基于微服务架构思想,SuperMap iServer 设计实现了单机多进程架构。进程(Process)是在操作系统的控制下执行某个程序的活动。一般情况下一个GIS应用对应系统中的一个进程,如一个iServer服务启动后,就可以在系统的任务管理器中看到相应的Java进程。多进程(Multi-process)则是指某个应用可以在一个操作系统即单机环境下,同时开启和使用多个进程。
iServer 单机多进程架构如图所示:

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多实例结构如图 2 所示:
iServer多实例
1.3 多实例应用场景
1.3.1 避免高并发时服务访问效率低的问题
对于有高并发需求的服务,如果仅运行在单个进程中,必然会造成客户端长时间排队等待。如果服务被错误占用,还将导致该服务无法用于其他应用程序。
多实例是将同样的服务实例放入多个进程中,每个进程间相互独立,互不影响,因此可保证服务的可用性。当服务器收到相同服务的并发请求时,便可由多个进程处理,减少客户端的等待时间。
如图 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方可生效
  5. 根据您的网络状况,设置 Worker 进程的端口范围,默认为8900-9000,则 Worker 端口从8900开始依次增大
  6. 点击“保存配置”,iServer 将根据上述配置自动启动多个 Worker,同时弹出正在启动多进程的对话框,创建完成后该对话框自动消失
  7. 重启 iServer,使多进程配置生效
  8. 服务启动后,访问服务管理器中的“服务”、“多进程”页面,可以查看已经启动的各个 Worker,包括各 Worker 端口和自动部署的服务
    注意:在多进程配置页面,启用或禁用多进程后,您都需要重启iServer才能生效。

2.2 配置多实例
开启多进程模式后,可以在发布新的服务时设置启用多实例,也可以对已有的服务设置启用多实例。
下面将以iServer的示范数据China400工作空间为例,介绍如何将map-China400设置为多实例。
2.2.1 示例:在快速发布中配置多实例

  1. 在服务管理“首页”点击快速发布一个或一组服务,选择数据来源为工作空间,然后进入下一步。
  2. 选择文件型工作空间,则可以选择发布本地或远程服务器上的工作空间,当服务不在本地或者使用 IE9、IE10、Chrome、Safari 浏览器时(由于受浏览器的安全控制, SuperMap iServer 无法获取欲发布工作空间的准确路径),“本地浏览”按钮不可用,请使用“远程浏览”。如下图所示:

    点击“远程浏览”后,在弹出框中选择China400.smwu工作空间文件。
  3. 选择工作空间文件后,如果工作空间已加密则需输入工作空间密码,示例中该工作空间未加密。开启多实例时,需勾选“启用多实例”,并填入实例数量。点击“下一步”按钮。
  4. 选择服务接口类型,例如REST-地图服务,点击按钮“下一步”。
  5. 完成配置后,会弹出配置完成的对话框,如下图所示。点击按钮“完成”,即完成服务的创建。其中,点击“完成”后弹出的对话框会给出该服务访问地址的超链接。

  6. 进入服务管理器的“多进程”页面,可查看到已开启的4个进程中均部署了同样的服务实例map-China/rest。

    2.2.2 示例:在服务管理中配置多实例
    对于已发布的服务,可以在服务管理页面、服务组件配置页面来管理多实例,包括开启或关闭多实例,修改服务实例数量等。本节以发布的map-China400服务,介绍如何管理多实例。
    开启或关闭多实例
    进入 Master 节点的“服务管理”页面,在“服务提供者”一栏设置启用或关闭多实例,点击页面底部“保存”即可生效。

    修改服务实例数量
    对于其他服务来源(非工作空间)发布的服务,默认均发布为多实例,且实例数量与进程数相同。
     在 Master 节点的“服务管理”页面设置服务实例个数。进入“服务管理”页面,在“基本信息”中修改“实例数量”,保存即可
     在 Master 节点的“服务组件”页面设置服务实例个数。进入“服务组件”配置页面,在“基本配置”中修改“实例数量”,保存即可
    3 注意事项
  7. 将包含文件型数据源的工作空间发布并配置为多实例后,该数据源是以只读方式打开的,因此将不支持修改操作,数据库型的数据源仍支持修改。
  8. 如果发布工作空间时未启用多实例,并使用2.2.2节所示方法开启多实例时,当该服务提供者仅用于一种GIS服务类型时,如仅用于地图服务的发布,配置才可生效。
  9. 如果设置的服务实例数量多于Worker的数量时,该服务实例将默认部署在每个Worker中。当增加Worker的数量后,服务实例将依照配置进行自动部署。

这篇关于SuperMap iServer 微服务多实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745238

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss