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

相关文章

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题