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

2023-10-06 20:15

本文主要是介绍Hazelcast系列(六): TCP-IP发现机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章

Hazelcast系列(一):初识hazelcast

Hazelcast系列(二):hazelcast集成

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

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

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

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

目录

前言

配置

配置元素

其他

总结


前言

如果是通信环境比较复杂,在外网或者安全性不高的网络通信的情况下,Multicast 可能不是首选,那么,这里就可以采用 TCP/IP 集群配置的方式。

当将 Hazelcast 配置为通过 TCP/IP 发现成员时,必须将成员的主机名和/或 IP 地址的全部或子集列出为集群成员。TCP/IP 不必列出所有这些集群成员,但当新成员加入时,所列出的成员中至少有一个必须在集群中处于活动状态

配置

  • XML
<hazelcast>...<network><join><tcp-ip enabled="true"><member-list><member>machine1</member><member>machine2</member><member>machine3:5799</member><member>192.168.1.0-7</member><member>192.168.1.21</member></member-list></tcp-ip></join></network>...
</hazelcast>
  • YAML
hazelcast:network:join:tcp-ip:enabled: truemember-list:- machine1- machine2- machine3:5799- 192.168.1.0-7- 192.168.1.21

注意:

  1. 这里TCP/IP enabled 为 true 后,其他的发现方式需要设置为false,尤其是默认的发现方式
  2. machine1、machine2、machine3 等名称可以是 主机名 或者 IP地址
  3. member-list 中每个成员,可以设置范围,但是必须要配置至少一个存活的成员
  4. 可以不配置端口,Hazelcast 会自动尝试端口 5701、5702

配置元素

  • enabled:指定是否启用 TCP/IP 发现。值可以是true或false。
  • required-member:所需成员的IP地址。仅当找到具有该 IP 地址的成员时才会形成集群。
  • member-list:一位或多位集群成员的 IP 地址。一旦会员连接到这些众所周知的地址,所有成员地址就会相互通信。这里还可以使用members元素给出以逗号分隔的 IP 地址。
  • connection-timeout-seconds:定义连接超时(以秒为单位)。这是 Hazelcast 在放弃之前尝试连接到成员的最长时间。将其设置为太低的值可能意味着成员无法连接到集群。将其设置为过高的值意味着成员启动可能会因超时较长而变慢,例如当集群成员未启动时。如果列出了许多 IP 并且成员无法正确构建集群,建议增加此值。它的默认值为 5 秒。

其他

  • 默认情况下,Hazelcast 绑定到所有本地网络接口以接受传入流量。可以使用系统属性更改此行为 hazelcast.socket.bind.any 。如果将此属性设置为 false,Hazelcast 将使用元素中指定的接口 interfaces 。如果未提供接口,则它会尝试解析一个接口以从 member 元素绑定。
System.setProperty("hazelcast.socket.bind.any", "false");
  • TCP/IP 在网络情况不好的情况下,发现成员时 或者 脑裂恢复 会有一个集群成员合并的过程,这里可以通过设置两个参数:
    • hazelcast.merge.first.run.delay.seconds:分裂或者合并在服务初始后多久开始,默认300,单位秒
    • hazelcast.merge.next.run.delay.seconds:分裂或者合并过程的运行间隔,默认120,单位秒
System.setProperty("hazelcast.merge.first.run.delay.seconds", "300");
System.setProperty("hazelcast.merge.next.run.delay.seconds", "120");
  • TCP/IP  发现成员IP可以配置为 负载均衡的服务器IP 网关IP,主要 负载均衡IP 或者 网关IP 能跟下面的具体集群成员之间相互通信

总结

TCP/IP 是一个可以解决复杂环境的 Hazelcast 集群成员发现方式,但是需要指定一个存活的成员地址。

这篇关于Hazelcast系列(六): TCP-IP发现机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

Redis的持久化之RDB和AOF机制详解

《Redis的持久化之RDB和AOF机制详解》:本文主要介绍Redis的持久化之RDB和AOF机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述RDB(Redis Database)核心原理触发方式手动触发自动触发AOF(Append-Only File)核

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

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

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

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中