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

相关文章

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,