Skip to content

Commit fb10fcf

Browse files
committed
Kafka 学习指南
1 parent a05871f commit fb10fcf

33 files changed

+1380
-5
lines changed

README.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,15 @@
258258

259259
分布式协调服务,服务注册发现
260260

261-
- [玩转时序数据库 InfluxDB(一)初体验](https://www.frankfeekr.cn/2019/07/24/influxdb-tutorial-start/)
261+
- [Kafka](notes/MicroService/kafka/README.md)
262262

263-
- 分布式锁
263+
深入浅出 Kafka,将用最极简的语言带你走进 Kafka 的消息中间件世界
264+
265+
266+
- [玩转时序数据库 InfluxDB(一)初体验](https://www.frankfeekr.cn/2019/07/24/influxdb-tutorial-start/)
264267

265-
基于 Redis、MySQL、Zookeeper 的分布式锁实现
266268

267-
- FastDFS
268269

269-
轻量级分布式文件管理系统
270270

271271

272272
【说明】**分布式专题** 笔者也在学习中,这里列举了一些技能列表,笔者将局部更新。敬请期待
@@ -321,6 +321,15 @@
321321

322322
自动化运维,持续集成、持续交付、持续部署
323323

324+
325+
- 分布式锁
326+
327+
基于 Redis、MySQL、Zookeeper 的分布式锁实现
328+
329+
- FastDFS
330+
331+
轻量级分布式文件管理系统
332+
324333
- Go
325334

326335
并发的、带垃圾回收的、快速编译的语言

notes/MicroService/kafka/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Kafka Tutorial
2+
3+
深入浅出 Kafka,将用最极简的语言带你走进 Kafka 的消息中间件世界。
4+
5+
| 部分 | 章节 | 概要 | 进度 |
6+
| :--- | :----------------------------- | :--------------------------- | ---------------------------- |
7+
||[深入浅出 Kafka(一)初识](kafka-tutorial-1_初识.md) | 背景、核心概念、架构设计 ||
8+
|| [深入浅出 Kafka(二)单节点部署](kafka/kafka-tutorial-2_单节点部署.md) | 单节点下,宿主机和容器的两种部署方式 ||
9+
|| 深入浅出 Kafka(三)集群化部署 | 集群下的,宿主机和容器的两种部署方式 | |
10+
|| [深入浅出 Kafka(四)架构深入](kafka-tutorial-4_架构深入.md) | 深入理解 Kafka 的架构细节 ||
11+
|| [深入浅出 Kafka(五)Kafka API](kafka-tutorial-5_kafka-api.md) | Kafka API 接口使用 ||
12+
|| 深入浅出 Kafka(六)Spring Kafka API | Kafka 与 SpringBoot 框架整合,常见 API 接口使用 | |
13+
|| 深入浅出 Kafka(七)监控 | Kafka Monitor,Kafka Manager | |
14+
15+
16+
17+
## 参考资料
18+
19+
- 官网:[Apache Kafka](https://kafka.apache.org/)
20+
- 中文社区:[Kafka 中文文档 - ApacheCN](http://kafka.apachecn.org/)
21+
- 快速上手:[尚硅谷大数据课程之Kafka(2019新版)](https://www.bilibili.com/video/av65544753?from=search&seid=14596778029771113163)
22+
Loading
Loading
Loading
Loading
Loading
Loading
Loading
32.6 KB
Loading
41.1 KB
Loading
29.8 KB
Loading
28.5 KB
Loading
Loading
25.9 KB
Loading
21.4 KB
Loading
Loading
20 KB
Loading
34.9 KB
Loading
31.4 KB
Loading
Loading
Loading
69.3 KB
Loading
49.3 KB
Loading
163 KB
Loading
194 KB
Loading
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# 深入浅出 Kafka(一)初识
2+
3+
> 开始前,可以阅读 Kafka 官方介绍:[Kafka 中文文档 - ApacheCN](http://kafka.apachecn.org/intro.html)
4+
5+
6+
7+
## 一、定义
8+
9+
Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
10+
11+
12+
13+
## 二、消息队列(Message Queue)
14+
15+
### 传统消息队列的应用场景
16+
17+
![nAc6zQ.png](assets/nAc6zQ.png)
18+
19+
20+
21+
22+
### 使用消息队列的好处
23+
24+
- 解耦
25+
- 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
26+
27+
- 可恢复性
28+
- 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
29+
30+
- 缓冲
31+
- 有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。
32+
33+
- 灵活性 & 峰值处理能力
34+
- 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
35+
36+
- 异步通信
37+
- 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
38+
39+
40+
41+
42+
43+
### 消息队列的两种模式
44+
45+
Java消息服务(Java Message Service,JMS)规范目前支持两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。
46+
47+
#### 1. 点对点(Queue,不可重复消费)
48+
49+
消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。
50+
消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
51+
52+
![kafka-mq1](assets/kafka-mq1.png)
53+
54+
55+
56+
#### 2. 发布/订阅(Topic,可以重复消费)
57+
58+
Pub/Sub发布订阅(广播):使用topic作为通信载体
59+
60+
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。
61+
62+
topic实现了发布和订阅,当你发布一个消息,所有订阅这个topic的服务都能得到这个消息,所以从1到N个订阅者都能得到一个消息的拷贝。
63+
64+
![kafka-mq2](assets/kafka-mq2.png)
65+
66+
67+
68+
## 三、Kafka基础架构
69+
70+
![nAcIiT.png](assets/nAcIiT.png)
71+
72+
- **Producer**:消息生产者,就是向kafka broker发消息的客户端;
73+
74+
- **Consumer**:消息消费者,向kafka broker取消息的客户端;
75+
76+
- **Consumer Group(CG)**:消费者组,由多个consumer组成。****消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
77+
78+
- **Broker** 一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
79+
80+
- **Topic** 可以理解为一个队列,**生产者和消费者面向的都是一个topic**
81+
82+
- **Partidion** 为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,**一个topic可以分为多个partition**,每个partition是一个有序的队列;(分区主要使用来实现负载均衡)
83+
84+
- **Replica** 副本,为保证集群中的某个节点发生故障时,该节点上的partition数据不丢失,且kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个**leader**和若干个**follower**
85+
86+
- **Leader** 每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader。
87+
88+
- **Follower** 每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的follower。
89+
90+
91+
92+
## 参考资料
93+
94+
- [Note/Kafka.md at master · Tiankx1003/Note](https://github.com/Tiankx1003/Note/blob/master/Markdown/HadoopEcosys/Kafka.md)

0 commit comments

Comments
 (0)