太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦

"RabbitMQ?""Kafka?""RocketMQ?"...在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。

一、什么是消息队列

我们可以将消息队列与用于存储消息的容器进行比较。当需要使用消息时,我们可以取出消息以供自己使用。消息队列是分布式系统中的重要组件。消息队列的使用主要是为了提高系统性能和峰值削波,并通过异步处理减少系统耦合。当前,最常用的消息队列是ActiveMQ,RabbitMQ,Kafka,RocketMQ。稍后我们将一一比较这些消息队列。

另外,我们知道Queue是先进先出的数据结构,因此在使用消息时,它也是按顺序使用的。例如,生产者向消费者发送消息1,2,3 ...,他们将以1,2,3 ...的顺序消费。但是,有时,消息消费顺序可能不正确。例如,消息使用失败或具有多个使用者的队列可能导致消息使用顺序错误。我们必须确保消息使用顺序正确。

除了上面提到的消息消费顺序问题之外,使用消息队列,我们还必须考虑如何确保消息不会被重复消费?如何确保消息的可靠传输(如何处理消息丢失的问题)? ... 等等。因此,消息队列的使用并不完美。使用它还会降低系统可用性并增加复杂性。另外,我们需要确保一致性和其他问题。

二、拆解学习

消息队列学习大纲

由于内容篇幅过多,下面会给大家展示一下其中的部分内容!

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第1张图片

三、RabbitMQ

本学习文档共分为11部分,前后章节都有相关的联系,基本上按照由浅入深、由表及里的层次逐层进行讲解。

  1. 主要针对消息中间件做一个摘要性介绍,包括什么是消息中间件、消息中间件的作用及特点等。之后引入RabbitMQ,对其历史和相关特点做一个简要概述。 最后介绍RabbitMQ的安装及生产、消费的使用示例。

  2. 主要讲述RabbitMQ的入门知识,包括生产者、消费者、队列、交换器、路由键、绑定、连接及信道等基本术语。还阐述了RabbiMQ与AMQP协议的对应关系。

  3. 主要介绍RabbitMQ客户端开发的简单使用,按照一个生命周期对连接、 创建、生产、消费及关闭等几个方面进行宏观的介绍。

  4. 介绍数据可靠性的一些细节,并展示RabbitMQ的几种已具备或衍生的高级特性,包括TTL、死信队列、延迟队列、优先级队列、RPC 等,这些功能在实际使用中可以让某些应用的实现变得事半功倍。

  5. 主要围绕RabbitMQ管理这个主题展开,包括多租户、权限、用户、应用和集群管理、服务端状态等方面,并且从侧面讲述rbbingctl工具和abbitonq managemnent 插件的使用。

  6. 主要讲述RabbiMQ的配置,以此可以通过环境变量、配置文件、运行时参数(和策略)等三种方式来定制化相应的服务。

  7. 主要围绕运维层面展开论述,主要包括集群搭建、日志查看、故障恢复、集群迁移、集群监控这几个方面。

  8. 主要讲述Federation和Shovel这两个插件的使用、细节及相关原理。区别于第7节中集群的部署方式,Federation 和Shovel可以部署在广域网中,为RabbitMQ提供更广泛的应用空间。

  9. 介绍RabbitMQ相关的一些原理, 主要内容包括RabbiMQ存储机制、磁盘和内存告警、流控机制、镜像队列。了解这些实现的细节及原理十分必要,它们可以让读者在遇到问题时能够透过现象看本质。

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第2张图片

四、RocketMQ

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第3张图片

本文档旨在描述 RocketMQ 的多个关键特性的实现原理,并对消息中间件遇到的各种问题进行总结,阐述RocketMQ 如何解决这些问题。文中主要引用了 JMS 规范与 CORBA Notification 规范,规范为我们设计系统指明了方向,但是仍有不少问题规范没有提及,对于消息中间件又至关重要。RocketMQ 并不遵循任何规范,但是参考了各种规范与同类产品的设计思想

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第4张图片

五、Kafka

全学习文档分为4篇:

  1. 介绍了消息队列和Kafka、安装与配置Kafka环境
  2. 介绍了Kafka的基础操作、生产者和消费者、存储及管理数据
  3. 介绍了更高级的Kafka知识及应用,包括安全机制、连接器、流处理、监控与测试
  4. 是对前面知识的综合及实际应用,包括ELK套件整合实战、Spark实时计算引擎整合实战、Kafka Eagle监控系统设计与实现实战。

开源软件Kafa的应用越来越广泛。Katka 简单易学,其学习曲线平缓且学习周期短。只需要较短的时间学习,就可以学会Kafka应用开发,完成一个高可用集群的部署和高可用应用程序的编写。

面对Kafka的普及和学习热潮,小编愿意分享自己多年的开发经验,带领大家比较轻松地掌握Kafka的相关知识。这便是小编编写本学习文档的原因。

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第5张图片

六、面试讲解

1. 面试题

RabbitMQ

  1. RabbitMQ 中的 broker 是指什么?cluster 又是指什么?

  2. 什么是元数据?元数据分为哪些类型?包括哪些内容?与 cluster 相关的元数据 有哪些?元数据是如何保存的?元数据在 cluster 中是如何分布的

  3. RAM node 和 disk node 的区别?

  4. RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?

  5. RabbitMQ 概念里的 channel、exchange 和 queue 这些东东是逻辑概念,还是对 应着进程实体?这些东东分别起什么作用?

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第6张图片

Kafka

  1. Kafka 的设计时什么样的呢?

  2. 数据传输的事物定义有哪三种?

  3. Kafka 判断一个节点是否还活着有那两个条件?

  4. producer 是否直接将数据发送到 broker 的 leader(主节点)?

  5. Kafa consumer 是否可以消费指定分区消息?

太狠了!京东T8架构师建议吃透这40W字消息队列文档,涨薪15K不是梦_第7张图片

你可能感兴趣的:(java-rabbitmq,kafka,java,后端,学习)