当前位置: 首页 > news >正文

【RocketMQ】Name Server 无状态特点及如何让 Broker Consumer Producer 感知新节点

文章目录

    • 前言
    • 1. Name Server 无状态特点
    • 2. Name Server 地址服务
    • 3. Name Server 手动配置
    • 后记

前言

看了 《RocketMQ 消息中间件实战派(上册)》前面一点,书中代码太多容易陷入细节。
这里简单描述下 RocketMQ Name Server 无状态表现在什么地方。
对于无状态节点热更新,也提供解决方案。


1. Name Server 无状态特点

  • 单节点视角
    可以不用持久化 Broker 的路由信息,由 Broker 主动上报作为运行时的数据即可。

  • 集群视角
    集群中的节点互相不认识

  • 对比 zk
    RocketMQ 将主从的概念下沉到 Broker 层,包括选举也是发生在 Broker内部。对于 Name Server ,只是登记 Broker 的路由及主从的结果

  • 表现
    对客户端来说只读,写操作只开放给 broker。
    在这里插入图片描述

  • 好处
    name server 可以做高可用,从第一个节点读不到,再从第二个节点读即可。
    name server 销毁与创建,不需要跟客户端侧通信。
    对于客户端侧,name server 就是一个无状态服务,目标就是从 name server 获得路由地址,谁给这个路由地址并无所谓。


2. Name Server 地址服务

运维新增 Name Server 节点,如何保证客户端能找到新加入的 name server 节点呢?
在这里插入图片描述

幸运的是,RocketMQ 提供了配置地址服务(多个选择)。Broker Consumer Producer 都可以读这个地址服务。
遗憾的是,有了地址服务,只是为 Broker Consumer Producer 读取路径。ip的写入还是得手动写。

3. Name Server 手动配置

  • Nacos 配置
    《RocketMQ 消息中间件实战派(上册)》中引入了 Nacos 解决热更新问题,从笔者的视角来看有点重。

  • Ngnix 配置
    一个简单的方案是对url做反向代理,生产用 ansible 热更新

http {upstream rocketmq-namesrv {# 配置多个 NameServerserver 192.168.1.1:9876;server 192.168.1.2:9876;server 192.168.1.3:9876;}server {listen 9876; # 监听端口,与 NameServer 保持一致server_name namesrv.mq.example.com; # 配置一个域名location / {proxy_pass http://rocketmq-namesrv;proxy_set_header Host $host;}}
}

配合RocketMQ的长轮询机制,要同步把超时时间调一下

proxy_connect_timeout 10s;
proxy_read_timeout 60s;
proxy send timeout 60s;

后记

总的来说,让 Broker Consumer Producer 感知新 Name Server 有以下步骤

  1. 手动启动 Name Server 节点,记住机器ip
  2. 选择 RocketMQ 的 Name Server 地址服务
  3. 为地址服务说动写入新ip

相关文章:

【RocketMQ】Name Server 无状态特点及如何让 Broker Consumer Producer 感知新节点

文章目录 前言1. Name Server 无状态特点2. Name Server 地址服务3. Name Server 手动配置后记 前言 看了 《RocketMQ 消息中间件实战派(上册)》前面一点,书中代码太多容易陷入细节。 这里简单描述下 RocketMQ Name Server 无状态表现在什么…...

蓝牙定位的MATLAB程序,四个锚点、三维空间

这段代码通过RSSI信号强度实现了在三维空间中的蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。代码涉及信号衰减模型、距离计算和最小二乘法估计等基本概念,并通过三维可视化展示了真实位置与估计位置的关系。 目录 程序描述 运…...

机器学习--绪论

开启这一系列文章的初衷,是希望搭建一座通向机器学习世界的桥梁,为有志于探索这一领域的读者提供系统性指引和实践经验分享。随着人工智能和大数据技术的迅猛发展,机器学习已成为推动技术创新和社会变革的重要驱动力。从智能推荐系统到自然语…...

Unity 设计模式-命令模式(Command Pattern)详解

命令模式(Command Pattern)是一种行为型设计模式,它将请求封装成对象,从而使得可以使用不同的请求、队列或日志请求,以及支持可撤销的操作。命令模式通常包含四个主要角色:命令(Command&#xf…...

线程信号量 Linux环境 C语言实现

既可以解决多个同类共享资源的互斥问题&#xff0c;也可以解决简易的同步问题 头文件&#xff1a;#include <semaphore.h> 类型&#xff1a;sem_t 初始化&#xff1a;int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…...

karmada-descheduler

descheduler规则 karmada-descheduler 定期检测所有部署&#xff0c;通常是每2分钟一次&#xff0c;并确定目标调度集群中无法调度的副本数量。它通过调用 karmada-scheduler-estimator 来完成这个过程。如果发现无法调度的副本&#xff0c;它将通过减少 spec.clusters 的配…...

【热门主题】000075 探索嵌入式硬件设计的奥秘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【热…...

Android okhttp请求

下面是一个用 OkHttp 封装的 GET 请求方法&#xff0c;适用于 Android 项目。该方法包括基本的网络请求、错误处理&#xff0c;并支持通过回调返回结果。 封装 GET 请求的工具类 添加依赖 在你的 build.gradle 文件中&#xff0c;确保添加了 OkHttp 的依赖&#xff1a; imple…...

嵌入式蓝桥杯学习4 lcd移植

cubemx配置 复制前面配置过的文件 打开cubemx&#xff0c;将PB8,PB9配置为GPIO-Output。 点击GENERATE CODE. 文件移植 1.打开比赛提供的文件包&#xff0c;点击Inc文件夹 2.点击Inc文件夹。复制fonts.h和lcd.h&#xff0c;粘贴到我们自己的工程文件夹的bsp中&#xff08…...

电子应用设计方案-38:智能语音系统方案设计

智能语音系统方案设计 一、引言 智能语音系统作为一种便捷、自然的人机交互方式&#xff0c;正逐渐在各个领域得到广泛应用。本方案旨在设计一个高效、准确、功能丰富的智能语音系统。 二、系统概述 1. 系统目标 - 实现高准确率的语音识别和自然流畅的语音合成。 - 支持多种语…...

渗透测试:网络安全的深度探索

一、引言 在当今数字化时代&#xff0c;网络安全问题日益凸显。企业和组织面临着来自各种恶意攻击者的威胁&#xff0c;他们试图窃取敏感信息、破坏系统或进行其他恶意活动。渗透测试作为一种主动的安全评估方法&#xff0c;能够帮助企业发现潜在的安全漏洞&#xff0c;提高网…...

基于SpringBoot的“小区物业管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“小区物业管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 个人信息界面图 费用信息管理…...

调试android 指纹遇到的坑

Android8以后版本 一、指纹服务不能自动 指纹服务fingerprintd(biometrics fingerprintservice)&#xff0c;可以手动起来&#xff0c;但是在init.rc中无法启动。 解决办法&#xff1a; 1.抓取开机时kernel log &#xff0c;确认我们的启动指纹服务的init.rc 文件有被init.c…...

剑指offer(专项突破)---字符串

总目录&#xff1a;剑指offer&#xff08;专项突破&#xff09;---目录-CSDN博客 1.字符串的基本知识 C语言中&#xff1a; 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中&#xff0c;包括结束符\0&#xff0c;要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…...

【springboot】 多数据源实现

文章目录 1. 引言&#xff1a;多数据源的必要性和应用场景**为什么需要多数据源&#xff1f;****应用场景** 2. Spring Boot中的数据源配置2.1 默认数据源配置简介2.2 如何在Spring Boot中配置多个数据源 3. 整合MyBatis与多数据源**配置MyBatis使用多数据源****Mapper接口的数…...

多模态COGMEN详解

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

django 实战(python 3.x/django 3/sqlite)

要在 Python 3.x 环境中使用 Django 3.2 和 SQLite 创建一个新的 Django 项目&#xff0c;你可以按照以下步骤进行操作。这些步骤假设你已经安装了 Python 3.x 和 pip。 1. 设置虚拟环境 首先&#xff0c;建议为你的 Django 项目创建一个虚拟环境&#xff0c;以便隔离项目的依…...

图数据库 | 12、图数据库架构设计——高性能计算架构

在传统类型的数据库架构设计中&#xff0c;通常不会单独介绍计算架构&#xff0c;一切都围绕存储引擎展开&#xff0c;毕竟存储架构是基础&#xff0c;尤其是在传统的基于磁盘存储的数据库架构设计中。 类似地&#xff0c;在图数据库架构设计中&#xff0c;项目就围绕存储的方…...

Unity 利用Button 组件辅助Scroll View 滚动

实现 创建枚举类ScrollDir 以区分滚动方向。每组两个按钮负责同方向上左右/上下滚动。 Update 中实时获取Scroll View 滚动条当前位置。 if (dir.Equals(ScrollDir.vertical)) {posCurrent scroll.verticalNormalizedPosition; } else if (dir.Equals(ScrollDir.horizontal)…...

Ubuntu 安装Ansible ansible.cfg配置文件生成

安装后的ansible.cfg后的默认内容如下&#xff1a; rootlocalhost:/etc/ansible# cat ansible.cfg # Since Ansible 2.12 (core): # To generate an example config file (a "disabled" one with all default settings, commented out): # $ ansible-…...

GTE多任务NLP引擎部署教程:离线环境下的安装、配置与测试

GTE多任务NLP引擎部署教程&#xff1a;离线环境下的安装、配置与测试 1. 环境准备与快速部署 1.1 系统要求与依赖检查 在开始部署前&#xff0c;请确保您的离线服务器满足以下最低要求&#xff1a; 操作系统&#xff1a;Ubuntu 20.04/22.04 或 CentOS 7/8&#xff08;推荐&…...

Qwen3-ASR-1.7B一文详解:方言识别泛化能力、跨地域口音迁移学习实践

Qwen3-ASR-1.7B一文详解&#xff1a;方言识别泛化能力、跨地域口音迁移学习实践 1. 方言识别新突破&#xff1a;Qwen3-ASR-1.7B的技术亮点 语音识别技术近年来发展迅速&#xff0c;但方言和口音识别一直是行业难题。不同地区的方言差异大&#xff0c;同一方言在不同地区的口音…...

告别云端依赖!DeepSeek-R1-Distill-Qwen-1.5B离线运行全攻略

告别云端依赖&#xff01;DeepSeek-R1-Distill-Qwen-1.5B离线运行全攻略 1. 为什么选择离线运行DeepSeek-R1-Distill-Qwen-1.5B&#xff1f; 在AI应用日益普及的今天&#xff0c;大多数用户仍然依赖云端服务来运行大语言模型。但云端服务存在隐私泄露、网络延迟、使用成本高等…...

SenseVoice-Small ONNX精彩案例分享:10分钟会议录音→带标点可编辑文本

SenseVoice-Small ONNX精彩案例分享&#xff1a;10分钟会议录音→带标点可编辑文本 本文展示SenseVoice-Small ONNX语音识别工具在实际会议录音转写场景中的惊艳效果&#xff0c;通过真实案例演示如何将10分钟会议录音快速转换为带标点、可编辑的规范文本。 1. 案例背景与工具价…...

如何使用hello-uniapp性能监控工具实时掌握应用运行状态

如何使用hello-uniapp性能监控工具实时掌握应用运行状态 【免费下载链接】hello-uniapp uni-app框架演示示例 项目地址: https://gitcode.com/gh_mirrors/he/hello-uniapp hello-uniapp性能监控工具是uni-app框架演示示例中的核心功能模块&#xff0c;它提供了一套完整的…...

钉钉飞书为什么突然转向?Agent“终局”架构全解析(非常详细,看这篇就够了)

钉钉先出手 钉钉的动作更早&#xff0c;也更激进。 3 月 17 日阿里发布「悟空」平台时&#xff0c;钉钉 CTO 朱鸿说的是&#xff1a; “ 我们希望每一个 AI Agent&#xff0c;都能像调用系统命令一样自然地调用钉钉。 注意用词&#xff0c;「系统命令」&#xff0c;不是「API…...

聊着天把虾队管了:用 HiClaw 正确打开多智能体协作方式【限时领 PPT】

作者&#xff1a;戴靖泽&#xff08;静择&#xff09; 本文整理自 DataWhale x HiClaw 直播分享&#xff0c;聊聊多 Agent 协作背后的工程思考。 点击此处&#xff0c;查看分享&#xff01; 你有没有试过让一个 AI 同时写前端和后端&#xff1f;聊到后面它把自己定好的 API …...

森利威尔SL3073替代RT2862 4-65V超宽压3A降压芯片

在电源管理领域&#xff0c;寻找高效、可靠且功能丰富的DC-DC转换器是设计工程师们不懈追求的目标。当面临将36V电压转换为更低电压并保持3A持续输出电流的应用场景时&#xff0c;传统上可能会选择如RT2862这样的同步降压转换器。然而&#xff0c;随着技术的不断进步&#xff0…...

植物基肉类替代品市场的增长与投资机会

植物基肉类替代品市场的增长与投资机会 关键词:植物基肉类替代品、市场增长、投资机会、消费趋势、行业发展 摘要:本文聚焦于植物基肉类替代品市场,深入分析其市场增长的驱动因素、现状及未来趋势,同时探讨了该领域蕴含的投资机会。通过对核心概念的阐释、相关算法原理的介…...

StreamIO:Arduino嵌入式统一I/O流与缓冲区抽象库

1. StreamIO 库概述StreamIO 是一个面向嵌入式 Arduino 生态的轻量级 I/O 抽象封装库&#xff0c;其核心设计目标是统一处理流式数据&#xff08;Stream&#xff09;与静态内存缓冲区&#xff08;array buffer&#xff09;的读写操作。在传统 Arduino 开发中&#xff0c;开发者…...