消息队列知识体系概览

📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、优快云博客专家、阿里云专家博主、51CTO专家博主、产品软文专业写手、技术文章评审老师、技术类问卷调查设计师、幕后大佬社区创始人、开源项目贡献者。

📘拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、SpringMVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、Apache ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、Kubernetes容器编排等。不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。

Java程序员廖志伟

🌾阅读前,快速浏览目录和章节概览可帮助了解文章结构、内容和作者的重点。了解自己希望从中获得什么样的知识或经验是非常重要的。建议在阅读时做笔记、思考问题、自我提问,以加深理解和吸收知识。阅读结束后,反思和总结所学内容,并尝试应用到现实中,有助于深化理解和应用知识。与朋友或同事分享所读内容,讨论细节并获得反馈,也有助于加深对知识的理解和吸收。💡在这个美好的时刻,笔者不再啰嗦废话,现在毫不拖延地进入文章所要讨论的主题。接下来,我将为大家呈现正文内容。

优快云

【一、RabbitMQ知识体系补充说明】

  1. 消息模型 RabbitMQ的消息模型采用AMQP(高级消息队列协议)进行定义。其中,生产者和消费者通过交换器进行通信,而交换器与队列通过绑定关系建立连接。生产者在发送消息时,指定消息的路由键,交换器根据路由键的匹配规则将消息传递到相应的队列中。在Direct交换器中,匹配规则是完全匹配;在Fanout交换器中,所有消息被广播到所有绑定的队列;在Topic交换器中,根据消息路由键中的模式(通配符)匹配相应的队列。

  2. 消息传递 消息传递过程中,RabbitMQ使用二进制协议与客户端通信。生产者将消息序列化为二进制格式,通过TCP连接发送给RabbitMQ服务器。服务器接收到消息后,将消息存储在消息存储系统中,然后根据消息的路由键将消息传递到对应的队列中。

  3. 消息确认机制 RabbitMQ的消息确认机制通过确认信号(ACK)实现。消费者在处理完消息后,发送ACK信号给RabbitMQ,确认消息已被处理。如果消费者在预定的超时时间内没有发送ACK,RabbitMQ将认为消息处理失败,并将消息重新发送给其他消费者。

  4. 事务消息 事务消息的实现依赖于RabbitMQ的事务管理器。事务开始时,消息状态被锁定,直到事务提交或回滚。事务提交后,消息被传递到队列;事务回滚后,消息被丢弃。

  5. 死信队列 死信队列的创建和管理依赖于队列的声明参数。通过设置队列的x-dead-letter-exchange和x-dead-letter-routing-key参数,可以将无法被正常消费的消息发送到死信队列。

  6. 集群架构 RabbitMQ的集群架构通过镜像队列和联邦插件实现。镜像队列在多个节点上创建队列的镜像,实现数据的冗余和故障转移。联邦插件允许跨节点的队列和交换器进行通信,实现跨节点的消息传递。

  7. 集群节点类型 在RabbitMQ集群中,主节点负责集群的维护和管理,包括集群成员的加入、离开和监控。从节点与主节点同步数据,实现数据的冗余。

  8. 高级特性 TTL消息通过在队列声明时设置x-message-ttl参数实现。优先级队列通过在队列声明时设置x-max-priority参数实现。RPC模式通过在消费者端创建一个临时队列,并将请求消息发送到该队列,由RabbitMQ将响应消息发送回客户端实现。

【二、RocketMQ知识体系补充说明】

  1. 消息类型 RocketMQ的消息类型包括定时消息、事务消息和延迟消息。定时消息通过消息的延时时间戳实现。事务消息通过消息的事务标记和本地事务日志实现。延迟消息通过消息的延时级别实现。

  2. 存储机制 RocketMQ采用CommitLog日志存储机制,将消息存储在磁盘文件中。每个磁盘文件包含一个CommitLog,消息被追加到文件中。通过消息索引和刷盘策略保证消息的持久化。

  3. 高可用设计 RocketMQ的高可用设计通过主从同步、Dledger选举和故障转移实现。主从同步通过同步复制机制保证主节点和从节点之间的数据一致性。Dledger选举通过Raft协议实现从节点到主节点的快速切换。故障转移通过心跳检测和主节点故障检测实现。

  4. 扩展功能 RocketMQ的消息轨迹通过消息头中的traceID字段实现。ACL控制通过用户和角色的权限控制实现。多副本机制通过多个CommitLog的写入和读取实现数据的冗余和备份。

【三、Kafka知识体系补充说明】

  1. 核心组件 Kafka的生产者负责将消息发送到主题中,消费者从主题中消费消息。主题是Kafka的消息分类和存储单元,由多个分区组成。

  2. 生产者分区策略 Kafka的生产者分区策略包括轮询策略、随机策略和扩展策略。轮询策略将消息均匀地分发到各个分区。随机策略随机将消息分发到各个分区。扩展策略根据分区的负载情况动态调整消息分发。

  3. 消费者组机制 消费者组机制允许多个消费者共同消费一个主题的消息,实现负载均衡和高可用性。消费者组内部,消息被均匀地分配给消费者,消费者组之间互不干扰。

  4. ISR集合 ISR集合是指副本集合中与主节点保持同步的副本。Kafka通过副本同步机制保证ISR集合中的副本数据一致性。

  5. 流处理 Kafka提供了流处理能力,包括KStream API和状态存储。KStream API用于构建流处理应用程序,状态存储用于存储流处理过程中的状态信息,时间窗口用于对时间序列数据进行聚合和计算。

  6. 运维监控 Kafka的运维监控包括副本同步机制、日志清理策略和JMX指标。副本同步机制监控副本同步状态,日志清理策略清理过期的日志文件,JMX指标通过JMX接口获取Kafka的性能指标。

  7. 生态集成 Kafka的生态集成包括Connect连接器、Schema Registry和KSQL引擎。Connect连接器用于连接外部数据源和Kafka,Schema Registry用于管理Kafka消息的schema,KSQL引擎用于在Kafka上执行SQL查询。

优快云

📥博主的人生感悟和目标

Java程序员廖志伟

希望各位读者大大多多支持用心写文章的博主,现在时代变了,信息爆炸,酒香也怕巷子深,博主真的需要大家的帮助才能在这片海洋中继续发光发热,所以,赶紧动动你的小手,点波关注❤️,点波赞👍,点波收藏⭐,甚至点波评论✍️,都是对博主最好的支持和鼓励!

- 💂 博客主页Java程序员廖志伟
- 👉 开源项目Java程序员廖志伟
- 🌥 哔哩哔哩Java程序员廖志伟
- 🎏 个人社区Java程序员廖志伟
- 🔖 个人微信号SeniorRD

Java程序员廖志伟

📙经过多年在优快云创作上千篇文章的经验积累,我已经拥有了不错的写作技巧。同时,我还与清华大学出版社签下了四本书籍的合约,并将陆续出版。这些书籍包括了基础篇进阶篇、架构篇的📌《Java项目实战—深入理解大型互联网企业通用技术》📌,以及📚《解密程序员的思维密码--沟通、演讲、思考的实践》📚。具体出版计划会根据实际情况进行调整,希望各位读者朋友能够多多支持!

🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值