hazelcast入门使用
hazelcast入门使用
hazelcast本来就是个java项目,所以,hazelcast的团队写了代码以后,打成jar,如果加个启动,就是独立的程序,如果采用jar依赖的方式,就是嵌入式部署,这个很好理解的
- 嵌入式部署,相对来说,减少网络开销,速度更快一些,但是如果挂了,会一起挂,
- 独立部署,独立性更好,比较隔离
- 角色区别,hazelcast还可以分为server和client,client不会存储数据和修改数据
嵌入式部署
嵌入式部署比较方便,而且因为是一个jvm速度上是有优势的,hazelcast的api变化幅度还是比较大的,所以,网上的资料都已经不适用了,只能自己去官网看资料,
这是地址官网文档地址
,里面有全文搜索,虽然hazelcast有spring-boot-starter,但是开发的进度比较慢,比如
5.2.1已经发布了,但是starter还没发布,所以,这里的演示不用starter
1 | implementation 'com.hazelcast:hazelcast-spring:5.2.1' |
1 |
|
其实hazel已经有了很多默认的配置,比如他的组播地址是224.2.2.3,它是开源的,结合这文档,然后看看代码,基本就差不多了
Hazelcast提供开箱即用的分布式数据结构,如Map,Queue,MultiMap,Topic,Lock和Executor。就是这个HazelcastInstance提供的,hazelcast也提供了分布式锁
以上的api方式使用hazelcast,还可以和spring cache结合,声明式的使用
独立部署
从图可以看出来,主要是两种,一个是zip,一个是zip slim,slim就是瘦身的意思,这个说法挺流行,不过不直观,其它的项目,可能会用without
jdk这种说法,所以,一般下载slim即可,
因为基本上环境都自带jdk了,不过jdk有400m了,可能还带了一些别的东西吧,比如源码,文档之类的东西,有兴趣的可以下载下来看看
下载以后,解压以后,这样子
可以看出来,很传统的样子,bin config lib这些都是一些中间件常见的目录结构
bat和sh都有,start和stop都有
里面给出了一些配置,而且还带实例,里面的配置,也都是有注释,是xml的形式,对应的还是那些配置
集群部署
集群部署有两种形式
- 使用组播
- 第一个节点,比如填写所有节点的ip,新加入的节点不必知道所有的节点,但是至少要知道并连接到一个已经启动的集群节点
组播协议(Multicast)组建集群
在使用组播协议(Multicast)作为自动组建集群机制时,集群中的成员不需要知道其他成员的详细地址(IP),他们仅仅是通过组播将信号广播到其他成员的监听端口中。使用之前确保网络环境支持
Multicast。
1 | <network> |
组网功能的配置由
- enabled:
[true|false]
,指定是否使用组播协议来组建集群。 - multicast-group:组播分组的IP地址。当要创建同一个网段的集群时,需要配置这个参数。取值范围从224.0.0.0到239.255.255.255,默认224.2.2.3。
- multicast-port:组播协议启用套接字的端口(socket port),这个端口用于Hazelcast监听外部发送来的组网请求。默认54327。
- multicast-time-to-live:组播协议发送包的生存时间周期(TTL)。可以从 协议官方文档 详细了解 组播协议的TTL。
- multicast-timeout-seconds:当节点启动后,这个参数(单位:秒)指定了当前节点等待其他节点响应的时间周期。例如,设置为60秒时,每一个节点启动后通过组播协议广播消息,如果主节点在60秒内返回响应消息,则新启动的节点加入这个主节点所在的集群,如果设定时间内没有返回消息,那么节点会把自己设置为一个主节点,并创建新的集群(主节点可以理解为集群的第一个节点)。默认值为2秒。
- trusted-interfaces:可信任成员的IP地址。当一个节点试图加入集群,如果其不是一个可信任节点,他的加入请求将被拒绝。可以在IP的最后一个数字上使用通配符()来设置一个IP范围(例如:192.168.1. 或192.168.1.100-110)。
TCP协议组建集群
除了使用 组播协议,还可以使用TCP/IP协议来组建集群。当使用TCP/IP来组建新集群时,第一个节点必须将所有要加入集群的节点IP地址添加到对应列表中。在集群已经运行之后,新加入的节点不必知道所有的集群节点,但是至少要知道并连接到一个已经启动的集群节点。
1 | <hazelcast> |
从上面的例子可以看出使用TCP/IP组建网络涉及的配置参数并不多。首先需要将
- required-member:加入集群的成员IP地址,只有这些IP地址的成员存在时集群才会组建。也就是说如果要当前节点加入集群,必须
元素中的指定的IP地址已经有集群节点先启动了,该节点才能启动,可以用于限制节点的启动顺序。 - member:成员的IP地址。指定要加入集群的成员IP地址,这些IP地址中的成员会相互发现对方。
- members:member的复数形态。在元素中可以使用逗号(“,”)分割多个IP地址。还可以使用-或*等符号来表达多个IP地址。
- connection-timeout-seconds:定义连接超时时间。Hazelcast尝试连接到一个已知的节点(member元素指定)的最大超时时间,如果在指定时间内连接失败,将会放弃连接。当参数设置太小时,可能会导致一个成员可能无法连接到集群。设置太高时,成员启动的等待时间会比较久,因为当某些
元素标记的节点未启动时,需要花费较多时间等待。如果有较多的不同IP地址的成员需要加入集群,可以适当增加这个值,以保证所有的成员可以正确加入集群。默认值为5。