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

2023-10-11 11:52

本文主要是介绍Hazelcast系列(三):hazelcast集成(服务器/客户端),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章

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-clusterinstance-name: hzInstance_141network:port:auto-increment: trueport-count: 100port: 5701outbound-ports:- 0join:auto-detection:enabled: falsemulticast:enabled: falsemulticast-group: 224.2.2.3multicast-port: 54327tcp-ip:enabled: truemember-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-clusterinstance-name: hzInstance_clientnetwork:cluster-members:- 192.168.119.141

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

               instance-name 客户端节点名称

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

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

  • 添加额外的测试代码
@RestController
@RequestMapping("/data")
public class DataController {@Autowiredprivate 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

这篇关于Hazelcast系列(三):hazelcast集成(服务器/客户端)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP