前言
作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”
基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。
不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。
这篇文章会先介绍RabbitMQ和Apache Kafka内部实现的相关概念。紧接着会主要介绍这两种技术的主要不同点以及他们各自的优缺点,最后我们会说明一下怎样选择这两种技术。
Kafka源码篇——Kafka快速入门
1.1Kafka简介
1.2以Kafka为中心的解决方案
1.3 Kafka核心概念
1.4搭建Kafka源码环境
Kafka源码篇——生产者
2.1 KafkaProducer使用示例
2.2 KafkaProducer分析
2.3 RecordAccumulator分析
2.4 Sender分析
Kafka源码篇——消费者
3.1 KafkaConsumer使用示例
3.2传递保证语义(Delivery guarantee semantic )
3.3 Consumer Group Rebalance设计
3.4 KafkaConsumer 分析
Kafka源码篇——Kafka服务端
4.1网络层
4.2API层
4.3日志存储
4.4 DelayedOperationPurgatory组件
4.5副本机制
4.6 KafkaController
4.7 GroupCoordinator
4.8身份认证与权限控制
4.9Kafka监控
Kafka源码篇——Kafka Tool
5.1 kafka-server-start脚本
5.2kafka-topics脚本
5.3 kafka-preferred-replica-election脚本
5.4 kafka-reassign-partitions脚本
5.5 kafka-console-producer 脚本
5.6 kafka-console-consumer 脚本
5.7 kafka-consumer-groups脚本
5.8 DumpLogSegments
5.9 kafka-producer-perf-test 脚本
5.10 kafka-consumer-perf-test脚本
5.11 kafka-mirror-maker脚本
Kafka的设计与实现
讨论一:Kafka 存储在文件系统上
讨论二:Kafka 中的底层存储设计
讨论三:生产者设计概要
讨论四:消费者设计概要
讨论五:Kafka 如何保证可靠性
《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源
Java优秀开源项目:
-
ali1024.coding.net/public/P7/Java/git
- github.com/spring-projects
最后
文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。