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

聊聊 RocketMQ 名字服务

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

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

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

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

一、基础概念

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

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

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

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

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

三、NameServer 维护路由

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

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

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

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

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


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

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

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

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

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

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

四、Zookeeper vs NameServer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 微软邀请 Microsoft 365 商业用户,测试视频编辑器 Clipchamp

    8 月 1 日消息,微软近日宣布即将面向 Microsoft 365 商业用户,开放 Clipchamp 应用,邀请用户通过该应用来编辑视频。微软于 2021 年收购 Clipchamp,随后开始逐步整合到 Microsof
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 小米公益基金会捐赠2500万元驰援北京、河北暴雨救灾

    8月2日消息,今日小米科技创始人雷军在其微博上发布消息称,小米公益基金会宣布捐赠2500万元驰援北京、河北暴雨救灾。携手抗灾,京冀安康!以下为公告原文
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top