系列文章
Hazelcast系列(二):hazelcast集成(嵌入式)
Hazelcast系列(三):hazelcast集成(服务器/客户端)
Hazelcast系列(五):Auto-Detection发现机制
Hazelcast系列(十一):Map(三)备份、过期驱逐与内存格式
目录
前言
前面通过 Hazelcast系列(一):初识hazelcast 让我们对Hazelcast有了一个大概得认识和了解,接下来我们对 Hazelcast 进行集成使用。
Hazelcast集成可以单独依赖 hazelcast.jar ,以及在Spring中搭配 hazelcast-spring.jar 使用 。
这里,我们多种方式都使用一下,当前集成主要是用于内存数据库使用,选择模式为 嵌入式。
关于发现方式,这里使用默认的发现方式: auto-detection,老版本默认的发现方式是:multicast 。当前版本 5.1.7 使用的是 auto-detection。
集成
-
环境
名称 | 版本 |
jdk | 1.8.0_361 |
spring-boot | 2.7.16 |
hazelcast | 5.1.7 |
-
配置
-
配置一
- 说明:只依赖 hazelcast.jar ,通过 Config set参数
- 代码 和 pom
-
/**
* hazelcast配置类
*/
@Configuration
public class HazelcastServerConfig {
/**
* 配置方式一
* @return
*/
@Bean
public Config serverConfig() {
Config config = new Config();
config.setClusterName("hazelcast-cluster");
config.setInstanceName("hazelInstance_local2");
//TODO 继续设置相关服务集群信息
return config;
}
}
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>5.1.7</version>
</dependency>
-
配置二
- 说明:只依赖 hazelcast.jar ,通过 ClasspathYamlConfig 等加载自定义配置类 hazelcast.yaml
- 代码 和 pom 以及 hazelcast.yaml
/**
* hazelcast配置类
*/
@Configuration
public class HazelcastServerConfig {
/**
* 配置方式二
*
* @return
*/
@Bean
public Config serverConfigTwo() {
// ClasspathXmlConfig xmlConfig = new ClasspathXmlConfig("hazelcast.xml");
Config config = new ClasspathYamlConfig("hazelcast.yaml");
return config;
}
}
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>5.1.7</version>
</dependency>
hazelcast:
cluster-name: hazelcast-cluster
instance-name: hazelInstance_local1
-
配置三
- 说明:除了依赖 hazelcast.jar ,无需再添加任何配置,Springboot 扫描 hazelcast.yaml 自动注入 Config 对象
- pom 以及 hazelcast.yaml
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>5.1.7</version>
</dependency>
hazelcast:
cluster-name: hazelcast-cluster
instance-name: hazelInstance_local1
注意:SpringBoot自动配置已经帮我们实现了扫描配置并注入 Config 以及 HazelcastInstance 的功能
扫描路径:
- file:./hazelcast.xml
- classpath:/hazelcast.xml
- file:./hazelcast.yaml
- classpath:/hazelcast.yaml
- file:./hazelcast.yml
- classpath:/hazelcast.yml
测试
- 说明:这里我们随便选择一种或者多种集成配置方式,分别放在两个本地应用中,查看是否自动发现并组成集群,这里采用 配置二 和 配置三
- 结果:
- 应用1:
- 应用2:
- 应用1:
其他
- Hazelcast的 auto-detection 发现方式,默认支持 AWS,Azure,GCP,Kubernetes 等环境,如果没有发现上述环境,则默认退化为 multicast,不建议生成环境中使用
- Muticast 组播需要组播协议的支持,如果禁用了组播协议,则成员之间无法自动发现并形成集群,不建议生成环境中使用
- 所有的成员都是通过 TCP/IP 进行通信,无论何种发现方式
- SringBoot 默认管理了 Hazelcast 的依赖,所以如果使用了 SpringBoot 的依赖管理,我们可以直接依赖后使用
- clusterName 表示形成集群的名称,用于隔离多个集群,老版本为 groupName
- instanceName 表示当前节点的名称
总结
Hazelcast 嵌入式集成还是比较方便和快捷的,特别是如果和 SpringBoot 集成,咱们关注的,主要还是服务器环境下成员之间的发现方式以及后续的缓存处理操作。