Hazelcast系列(三):hazelcast集成(服务器/客户端)

news2024/10/5 18:26:05

系列文章

Hazelcast系列(一):初识hazelcast

Hazelcast系列(二):hazelcast集成(嵌入式)

Hazelcast系列(三):hazelcast集成(服务器/客户端)

Hazelcast系列(四):hazelcast管理中心

Hazelcast系列(五):Auto-Detection发现机制

Hazelcast系列(六):Multicast发现机制

Hazelcast系列(七):TCP-IP发现机制

Hazelcast系列(八):数据结构

目录

        前言

        环境

        服务器

        客户端 

        测试

        其他 

        参考


前言

        前面对通过 Hazelcast系列(二):hazelcast集成(嵌入式)已经对 Hazelcast 如何在 Java 中使用,已经有了初步的认识,接下来,咱们研究一下 Hazelcast 集成的另外一种模式:服务器/客户端

        相较于 嵌入式 的模式,服务器/客户端 模式将 Hazelcast 缓存服务和客户端单独拆分开,方便后期对服务器的单独维护和持续扩展,避免缓存的数据在堆内存中影响到垃圾收集器收集效率和垃圾回收时的应用响应时间。

        当前 Hazelcast 服务器版本:4.2.6,客户端版本:5.1.7

环境

名称版本
hazelcast/management-center 管理中心 5.3.0
hazelcast/hazelcast 服务端4.2.6
springboot2.7.16
hazelcast 客户端5.1.7

服务器

        服务器端通过 Docker 部署,Docker 的安装和配置可以参照俺的 CentOS 7下安装Docker,部署采用版本 hazelcast/hazelcast:4.2.6      

  • 首先拉取 hazelcast 的镜像
docker pull hazelcast/hazelcast:4.2.6
  • 添加一个配置文件 hazelcast.yaml,配置服务器集群中成员的相关参数,然后放在某个目录下,这里为 /home/hazelcast/config
hazelcast:
  cluster-name: hazelcast-cluster
  instance-name: hzInstance_141
  network:
    port:
      auto-increment: true
      port-count: 100
      port: 5701
    outbound-ports:
      - 0
    join:
      auto-detection:
        enabled: false
      multicast:
        enabled: false
        multicast-group: 224.2.2.3
        multicast-port: 54327
      tcp-ip:
        enabled: true
        member-list:
          - 192.168.119.141

   说明: cluster-name 集群名称,通过名称隔离同网络下的集群

               instance-name 服务器节点名称

               network.port.auto-increment 成员节点使用的端口是否允许自动增长

               network.port.port-count 使用端口增长的范围,例如这里:5701-5801

               network.port.port 默认使用的端口,如果 auto-increment 为false,则必须使用 5701

               network.outbound-ports 套接字绑定期间使用的临时端口,可以是值和范围,0为没限制

               network.tcp-ip.enabled 采用 tcp/ip 的方式,前面两个发现方式必须设置为 false

               network.tcp-ip.member-list 集群中能被发现的成员,可以只配置一个,端口可不设置

  • 通过 docker run 命令,启动容器名称为 hazecast-node1 的节点1
docker run -d -p 5701:5701 
-e JAVA_OPTS="-Dhazelcast.config=/opt/hazelcast/config_ext/hazelcast.yaml" 
-e HZ_NETWORK_PUBLICADDRESS=192.168.119.141:5701 
-v /home/hazelcast/config:/opt/hazelcast/config_ext 
--name hazecast-node1 hazelcast/hazelcast:4.2.6

   说明:-e 为添加执行的环境变量

              -e JAVA_OPTS="-Dhazelcast.config=/opt/hazelcast/config_ext/hazelcast.yaml"   添加                         hazecast 的寻找配置路径

              -e HZ_NETWORK_PUBLICADDRESS  添加集群中成员的公共地址,方便私有云映射

              -v  /home/hazelcast/config:/opt/hazelcast/config_ext  挂载本地 hazelcast.yaml 所在配置                     目录到容器中

              --name 容器名称,节点名称

    另外:192.168.119.141 为虚拟机地址,这里看情况配置对外公共地址

  • 接下来,继续通过 docker run 命令,启动容器名称为 hazecast-node2 的节点2
docker run -d -p 5702:5701 
-e JAVA_OPTS="Dhazelcast.config=/opt/hazelcast/config_ext/hazelcast.yaml" 
-e HZ_NETWORK_PUBLICADDRESS=192.168.119.141:5702 
-v /home/hazelcast/config:/opt/hazelcast/config_ext 
--name hazecast-node2 hazelcast/hazelcast:4.2.6

    说明:参数说明参考上面的

              hazecast-node2 和 hazecast-node1 对比,对外端口不同

  • 服务器端这样差不多就启动了,通过搭建管理中心Hazelcast系列(三):hazelcast管理中心,我们可连接到对应集群查看,当然查看本地日志和获取本地集群数也可以确认

客户端 

        客户端配置和前面配置 Hazelcast系列(二):hazelcast集成(嵌入式)大同小异,咱们直接开干。

  • 创建一个SpringBoot项目,先添加依赖,这里额外添加 spring-boot-starter-web 依赖方便测试
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter</artifactId>
      </dependency>

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
          <groupId>com.hazelcast</groupId>
          <artifactId>hazelcast</artifactId>
      </dependency>
  • 项目 resources 下添加 hazelcast-client.yaml 配置文件,内容如下:
hazelcast-client:
  cluster-name: hazelcast-cluster
  instance-name: hzInstance_client
  network:
    cluster-members:
      - 192.168.119.141

    说明:cluster-name 要连接的集群名称

               instance-name 客户端节点名称

               network.cluster-members 连接的集群成员,这里可配置一个,但是尽量全部配置

  • 对应的 application.yml,内容如下
server:
  port: 8082

  • 添加额外的测试代码
@RestController
@RequestMapping("/data")
public class DataController {

    @Autowired
    private HazelcastInstance hazelcastInstance;

    private ConcurrentMap<String,Long> retrieveMap() {
        return hazelcastInstance.getMap("map");
    }

    @PostMapping("/put")
    public String put(@RequestParam(value = "key") String key, @RequestParam(value = "value") Long value) {
        retrieveMap().put(key, value);
        return "成功";
    }

    @GetMapping("/get")
    public Long get(@RequestParam(value = "key") String key) {
        Long value = retrieveMap().get(key);
        return value;
    }
}
  • 接下来,直接启动SpringBoot项目,然后去管理平台查看对应的客户端连接情况(本地查看日志亦可)

测试

        前面在客户端已经连接上了服务器,并且客户端已经有了测试代码,下面,开测。

  • Postman 发送测试数据 key = test,value = 11111

  • Postman 获取数据 key = test

其他 

  1. 服务器端 Docker 启动的时候,-e 添加的 hazelcast 环境变量也可配置在 Hazelcast 中,同理,hazelcast.yaml 的参数也可配置在 -e 环境变量上
  2. 每个版本的 hazelcast.jar 中,都有完整的或者默认的服务器和客户端参数配置

参考

  • Java Client

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1077435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

紫光同创FPGA 多路视频处理:图像缩放+视频拼接显示,OV7725采集,提供PDS工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接叠加融合方案推荐紫光同创FPGA图像采集方案推荐紫光同创FPGA图像缩放方案推荐紫光同创FPGA视频拼接方案推荐 3、设计思路框架为什么选择OV7725摄像头&#xff1f;视频源选择OV7725摄像头配置及采集动态彩…

JUC学习笔记

基础知识 线程 线程是进程中的一个实体&#xff0c;线程本身是不会独立存在的。一个进程中至少有一个线程&#xff0c;进程中的多个线程共享进程的资源。 进程 是程序的一次执行&#xff0c;是系统进行资源分配和调度的基本单位。每一个进程都有自己独立的内存空间和系统资…

2023年下半年WSK-PETS5报名启动

2023年下半年全国外语水平考试&#xff08;WSK-PETS5&#xff09;网上报名时间为10月17日9时-10月19日16时&#xff0c;知识人网小编特别提醒考生注意报名截止时间是16点&#xff08;下午4点&#xff09;&#xff0c;切勿错过&#xff01; 国家公派留学人员全国外语水平考试&am…

2023年【陕西省安全员B证】考试试卷及陕西省安全员B证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员B证考试试卷是安全生产模拟考试一点通总题库中生成的一套陕西省安全员B证模拟考试&#xff0c;安全生产模拟考试一点通上陕西省安全员B证作业手机同步练习。2023年【陕西省安全员B证】考试试卷及陕西省安…

2023全网最全requests库和requests模块使用详解(建议收藏)

一、requests简介 #简介&#xff1a;使用requests可以模拟浏览器的请求&#xff0c;比起之前用的urllib&#xff0c;requests模块的api更加便捷&#xff08;本质就是封装了urllib3&#xff09;#注意&#xff1a;requests库发送请求将网页内容下载下来以后&#xff0c;并不会执…

适用于音视频的弱网测试整理

一、什么是弱网环境 对于弱网的定义&#xff0c;不同的应用对弱网的定义是有一定的差别的&#xff0c;不仅要考虑各类型网络最低速率&#xff0c;还要结合业务场景和应用类型去划分。按照移动的特性来说&#xff0c;一般应用低于2G速率的都属于弱网&#xff0c;也可以将3G划分…

mysql面试题28:MySQL的主从复制模式、MySQL主从复制的步骤、MySQL主从同步延迟的原因、MySQL主从同步延迟的解决办法

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:简单讲一下MySQL的主从复制模式 MySQL的主从复制(Master-Slave Replication)是一种数据库复制技术,用于将一个MySQL数据库服务器(主服务器)的…

赋能伙伴,聚势共赢!麒麟信安培训认证平台正式上线

为更有效赋能合作伙伴&#xff0c;在产品、技术和市场等各层面通力协作&#xff0c;目前&#xff0c;麒麟信安培训认证平台已正式上线&#xff01; 麒麟信安培训认证平台面向麒麟信安签约代理商、经销商、渠道商等合作伙伴全面开放&#xff0c;一站式整合在线报名、学习培训、…

ESP32网络开发实例-WebSocket服务器

WebSocket服务器 文章目录 WebSocket服务器1、WebSocket介绍2、应用实例介绍3、软件准备4、硬件准备5、代码实现在本文中,将介绍如何使用 WebSocket 通信协议通过 ESP32 构建 Web 服务器。 例如,我们将向介绍如何构建网页以远程控制 ESP32 输出。 输出状态显示在网页上,并在…

FairGuard游戏加固无缝兼容 Android 14 正式版

北京时间10月4日&#xff0c;谷歌公司在“Made by Google 2023”硬件发布会上公开了新版安卓操作系统—— Android 14 正式版。 为保证产品的加固效果并提供更优质的服务&#xff0c;FairGuard游戏加固团队第一时间组织人员进行了相关测试。 据测试&#xff0c;FairGuard游戏…

3.2 点对点协议PPP

思维导图&#xff1a; 3.2.1 点对点协议PPP ### 3.2 点对点协议&#xff08;PPP&#xff09; 在数据传输的早期阶段&#xff0c;通信线路质量常常不稳定&#xff0c;这时在数据链路层使用可靠的传输协议是一个明智的选择。高级数据链路控制HDLC是当时的流行选择。但在当前的场…

Typora-Drake主题

关于Typora-Drake主题的小调整 下载安装 下载地址&#xff1a;Drake (typora.io) 点击下载跳转GitHub,下载该主题 下载完成安装主题 打开主题文件夹&#xff0c;把下载的zip全部加压丢进去重启Typora Drake主题样式小调整 打开主题文件夹&#xff0c;找到Drake.css文件&am…

Web(2) 信息收集

一.子域名收集各工具的使用&#xff1a; 子域名&#xff08;或子域&#xff0c;英语&#xff1a;subdomain&#xff09;是在域名系统等级中&#xff0c;属于更高一层域的域。比如mail.example.com和calendar.example.com是example.com的两个子域&#xff0c;而example.com是顶…

腾讯云秒杀活动入口及活动攻略整理分享

腾讯云是国内领先的云计算服务提供商之一&#xff0c;其提供的云服务器、云数据库、云存储等产品备受用户青睐。为了回馈广大用户&#xff0c;腾讯云经常推出各种优惠活动&#xff0c;其中最受关注的就是秒杀活动。本文将为大家整理分享腾讯云秒杀活动的入口及活动攻略&#xf…

基于YOLOv8的施工安全帽及安全背心检测

目标检测是一项基本的计算机视觉任务。 另一方面&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;是一种流行的目标检测模型&#xff0c;以其速度和准确性而闻名。 涉及对象检测的用例非常多样化。 其中之一是建筑工地安全。 建筑工地经理、安全官员或监管机构可以…

变量提升的常见情况总结

什么叫变量提升? 把当前上下文中带有var(提升声明)/function(提升声明定义)进行提升的声明或者定义。变量提升是将变量声明提升到它所在作用域的最开始的部分。 全局上下文中:基于var/function声明的变量&#xff0c;也相当于给window设置了对应的属性。 实例 1 var t 1;…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(三)

之前自定义业务表单只能关联自定义业务的流程应用类型&#xff0c;所以需要根据这个进行选择与显示 1、ProcessQuery 参数增加appType public class ProcessQuery {/*** 流程标识*/private String processKey;/*** 流程名称*/private String processName;/*** 流程分类*/priv…

2023年司钻(钻井)证模拟考试题库及司钻(钻井)理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年司钻&#xff08;钻井&#xff09;证模拟考试题库及司钻&#xff08;钻井&#xff09;理论考试试题是由安全生产模拟考试一点通提供&#xff0c;司钻&#xff08;钻井&#xff09;证模拟考试题库是根据司钻&…

ES知识点全面整理

● 我们从很多年前就知道 ES6, 也就是官方发布的 ES2015 ● 从 2015 年开始, 官方觉得大家命名太乱了, 所以决定以年份命名 ● 但是大家还是习惯了叫做 ES6, 不过这不重要 ● 重要的是, ES6 关注的人非常多, 大家也会主动去关注 ● 但是从 2016 年以后, 每年官方都会出现新…

Mac电脑交互式原型设计 Axure RP 8汉化最新 for mac

Axure RP 8是一款专业且快速的原型设计工具&#xff0c;主要用于定义需求、规格、设计功能和界面。这款工具主要适用于用户体验设计师、交互设计师、业务分析师、信息架构师、可用性专家和产品经理等职业。 Axure RP 8的主要特性包括能够快速设计出应用软件或Web网站的线框图、…