阿里面试官,阿里中间件:RocketMQ生产部署架构如何设计

推荐阅读:

前言

今天我们就来聊一聊具体如何来设计一套高可用的生产部署架构。

在聊如何设计这套架构的同时,我们再补充一些之前没提到的知识。好了,那我们现在开始吧。

NameServer的部署

关于NameServer,我们之前的文章已经详细讲解过了集群化的内容,这里直接把它部署到三台机器上,作为一个高可用集群

Broker的部署

Broker的部署我们之前也有讲到过,主要使用的是4.5版本后的Dledger自动化切换主从的集群

Broker与NameServer之间的通信协议是什么呢?http、rpc还是tcp呢?

其实它们之间采用的是TCP长连接通信,也就是说Broker会跟每个NameServer建立TCP长连接,然后定时通过TCP长连接发送心跳请求过去。

访问MQ的系统(生产者和消费者)的部署

一定会有大量的系统访问RocketMQ,因为RocketMQ就是为此而生的,有些系统自己本身既是生产者又是消费者,所以这些系统的部署也要考虑进去。

对这些系统部署的考虑,其实不应该是搞MQ的部门来考虑的,如果系统本身是自己公司的,可以提出一些建议,让生产者和消费者都集群化部署,保证高可用。但如果是第三方系统,那就无法插手了,我们能做到的只有考虑第三方系统崩溃,无法与MQ正常通信的情况下,如何让MQ正常运转。

Topic是什么

Topic是mq的核心数据模型,如果直接翻译是主题的意思,但是听到主题的解释,是不是一脸懵逼,是不是瞬间想到的是手机主题,电脑主题。

所以它不能直译,它表达的就是一个数据集合的含义,集合的是同一类的数据,不同类型的数据存到不同的Topic中。

所以系统无论是要写入消息还是读取数据,最开始都是要先定义Topic的,然后再从定义的Topic中获取同类型的数据。

那么Topic是如何在Broker中存储的呢?

存储的方式其实就是分布式存储。我们在定义Topic的时候指定它里面的数据分布到多台的Broker上进行存储,这里要注意的一点是,实际上分布的对象是MasterBroker,SlaveBroker会向MasterBroker拉取数据,作为一个副本存在。而Broker在向NameServer发送心跳的时候,会把Topic存储在哪些Broker中的信息告诉NameServer。

生产者如何发送消息给Broker

前边我们聊过,发送消息前首先是定义Topic,然后发送消息的时候是要指定你要发送到哪个Topic中去的。

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

mg-ggdvHOl8-1628237220750)]

[外链图片转存中…(img-Fw4td5vK-1628237220751)]

以上所有文档已经打包好,只需要动动手指点击【转发+关注】,然后点击即可免费获取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值