码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Hazelcast系列(六): TCP-IP发现机制


    系列文章

    Hazelcast系列(一):初识hazelcast

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

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

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

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

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

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

    Hazelcast系列(八):数据结构

    Hazelcast系列(九):Map(一)加载和存储

    Hazelcast系列(十):Map(二)监听器和拦截器

    Hazelcast系列(十一):Map(三)备份、过期驱逐与内存格式

    目录

    前言

    配置

    配置元素

    其他

    总结


    前言

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

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

    配置

    • XML
    1. <hazelcast>
    2. ...
    3. <network>
    4. <join>
    5. <tcp-ip enabled="true">
    6. <member-list>
    7. <member>machine1member>
    8. <member>machine2member>
    9. <member>machine3:5799member>
    10. <member>192.168.1.0-7member>
    11. <member>192.168.1.21member>
    12. member-list>
    13. tcp-ip>
    14. join>
    15. network>
    16. ...
    17. hazelcast>
    • YAML
    1. hazelcast:
    2. network:
    3. join:
    4. tcp-ip:
    5. enabled: true
    6. member-list:
    7. - machine1
    8. - machine2
    9. - machine3:5799
    10. - 192.168.1.0-7
    11. - 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,单位秒
    1. System.setProperty("hazelcast.merge.first.run.delay.seconds", "300");
    2. System.setProperty("hazelcast.merge.next.run.delay.seconds", "120");
    • TCP/IP  发现成员IP可以配置为 负载均衡的服务器IP 和 网关IP,主要 负载均衡IP 或者 网关IP 能跟下面的具体集群成员之间相互通信

    总结

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

  • 相关阅读:
    数据要素安全流通:挑战与解决方案
    基于Python的自然语言处理项目 ChatTTS 推荐
    什么是设备运维管理系统?它对企业有什么帮助?
    Intel IPP 和Opencv图像处理
    人工智能AI图像风格迁移(StyleTransfer),基于双层ControlNet(Python3.10)
    Android 设置系统的时间
    并发编程day09
    8、Nacos服务注册服务端源码分析(七)
    Vue实现动画效果
    1142 Maximal Clique 甲级xp_xht123
  • 原文地址:https://blog.csdn.net/qq_35427539/article/details/133612061
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号