当前位置:首页 > 科技  > 软件

聊聊 RocketMQ 名字服务

来源: 责编: 时间:2023-08-09 23:03:45 460观看
导读NameServer 是专为 RocketMQ 设计的轻量级名字服务,它的源码非常精简,八个类 ,少于1000行代码。图片这篇文章, 笔者会从基础概念、Broker发送心跳包、NameServer 维护路由、Zookeeper vs NameServer 四个模块揭秘名字服务

NameServer 是专为 RocketMQ 设计的轻量级名字服务,它的源码非常精简,八个类 ,少于1000行代码。1eg28资讯网——每日最新资讯28at.com

图片图片1eg28资讯网——每日最新资讯28at.com

这篇文章, 笔者会从基础概念、Broker发送心跳包、NameServer 维护路由、Zookeeper vs NameServer 四个模块揭秘名字服务的设计精髓。1eg28资讯网——每日最新资讯28at.com

一、基础概念

图片图片1eg28资讯网——每日最新资讯28at.com

1、Broker 会每隔 30 秒向所有的 NameServer 发送心跳命令 ;1eg28资讯网——每日最新资讯28at.com

使用 CountDownLatch 实现多线程同步,可以获取发往所有的 NameServer 的心跳命令的响应结果1eg28资讯网——每日最新资讯28at.com

2、心跳命令包含两个部分:请求头和请求体1eg28资讯网——每日最新资讯28at.com

图片图片1eg28资讯网——每日最新资讯28at.com

三、NameServer 维护路由

NameServer 在接收到 Broker 发送的心跳请求之后,通过默认的处理器来处理请求,保存路由信息成功后,注册成功状态返回给 Broker 服务。1eg28资讯网——每日最新资讯28at.com

源码中,我们可以看到路由信息保存在 HashMap 中 。1eg28资讯网——每日最新资讯28at.com

图片图片1eg28资讯网——每日最新资讯28at.com

2、读操作:查询主题信息,操作读锁1eg28资讯网——每日最新资讯28at.com

图片图片1eg28资讯网——每日最新资讯28at.com


我们可以将 NameServer 实现注册中心的方式总结为:RPC 服务 + HashMap 存储容器 + 读写锁 + 定时任务 。1eg28资讯网——每日最新资讯28at.com

1、NameServer 监听固定的端口,提供 RPC 服务1eg28资讯网——每日最新资讯28at.com

2、HashMap 作为存储容器1eg28资讯网——每日最新资讯28at.com

3、读写锁控制锁的颗粒度1eg28资讯网——每日最新资讯28at.com

4、定时任务1eg28资讯网——每日最新资讯28at.com

  • 每个 Broker 每隔 30 秒注册主题的路由信息到所有 NameServer
  • NameServer 定时任务每隔10 秒清除已宕机的 Broker , 判断宕机的标准是:当前时间减去 Broker 最后一次心跳时间大于2分钟

四、Zookeeper vs NameServer

那为什么 RocketMQ 不用 Zookeeper 做为注册中心呢 ?1eg28资讯网——每日最新资讯28at.com

我们先温习下 CAP 理论。1eg28资讯网——每日最新资讯28at.com

图片图片1eg28资讯网——每日最新资讯28at.com

CAP 理论是分布式架构中重要理论。1eg28资讯网——每日最新资讯28at.com

1、一致性( Consistency ) :所有节点在同一时间具有相同的数据 ;1eg28资讯网——每日最新资讯28at.com

2、可用性( Availability ) :保证每个请求不管成功或者失败都有响应  (某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求) ;1eg28资讯网——每日最新资讯28at.com

3、分隔容忍( Partition tolerance ) :系统中任意信息的丢失或失败不会影响系统的继续运作。 (在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用) 。1eg28资讯网——每日最新资讯28at.com

Zookeeper 是一个典型的 CP 注册中心 ,通过使 ZAB 协议来保证节点之间数据的强一致性。1eg28资讯网——每日最新资讯28at.com

笔者曾经遇到过一起神州专车服务宕机事故,zookeeper 集群不堪重负,一直在选主 。架构负责人修改了 zookeeper 的 jvm 参数,重启集群后 , 才临时解决了问题。1eg28资讯网——每日最新资讯28at.com

因为 MetaQ 集群和服务治理共用一组 zookeeper 集群 。1eg28资讯网——每日最新资讯28at.com

  • MetaQ 消费者负载均衡时,会频繁的争抢锁 ,同时也会频繁的提交 offset  ;
  • 专车的注册服务也越来越多,注册信息通过Hession 序列化存储在 zookeeper 的节点。

为了减少 zookeeper 集群的性能压力,架构团队将 MetaQ 使用的 zookeeper 集群独立出来。1eg28资讯网——每日最新资讯28at.com

这次事故让我认识到:Zookeeper 作为 CP 注册中心,大规模使用场景下,它就变得很脆弱,我们要非常小心的使用。1eg28资讯网——每日最新资讯28at.com

淘宝中间件博客出了一篇文章 :  阿里巴巴为什么不用 ZooKeeper 做服务发现 ?1eg28资讯网——每日最新资讯28at.com

文章有两个观点,笔者认为非常有借鉴意义。1eg28资讯网——每日最新资讯28at.com

1、当数据中心服务规模超过一定数量 ( 服务规模=F{服务 pub 数,服务 sub 数} ),作为注册中心的 ZooKeeper 很快就会像下图的驴子一样不堪重负。1eg28资讯网——每日最新资讯28at.com

2、可以使用 ZooKeeper,但是大数据请向左,而交易则向右,分布式协调向左,服务发现向右。1eg28资讯网——每日最新资讯28at.com

相比 ZooKeeper ,NameServer 是一个典型的 AP 注册中心,它有如下优点:1eg28资讯网——每日最新资讯28at.com

1、代码不到 1000 行,实现简单,易于维护 ;1eg28资讯网——每日最新资讯28at.com

2、性能极好,除了网络消耗,基本都是本地内存操作 ;1eg28资讯网——每日最新资讯28at.com

3、服务都是无状态,且节点之间并不交互,运维简单;1eg28资讯网——每日最新资讯28at.com

RocketMQ 的设计者之所以选择自研名字服务,遵循着架构设计的准则,笔者总结为:简单、高效、适当妥协。1eg28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-5193-0.html聊聊 RocketMQ 名字服务

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 你的Java程序还在使用阻塞式I/O吗?试试NIO多路复用提高性能!

下一篇: 图解算法,原理逐步揭开「GitHub 热点速览」

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • 自动化在DevOps中的力量:简化软件开发和交付

    自动化在DevOps中扮演着重要角色,它提升了DevOps的效能。通过自动化工具和方法,DevOps团队可以实现以下目标:消除手动和重复性任务。简化流程。在整个软件开发生命周期中实现更
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
Top