作者: JAVA3y 来自:Java3y
前言
只有光头才能变强 。在这篇之前已经写过两篇基础文章了,强烈建议先去阅读:
文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y
- 什么是ZooKeeper?
- 什么是消息队列?
我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦 。本篇文章对Kafka入门,希望对大家有所帮助 。本文知识点提前预览:

文章插图
提前预览
这篇文章花了我很长时间画图,目的是希望以最通俗易懂的方式带大家入门,如果觉得不错,希望能给我点个赞!
一、什么是Kafka?首先我们得去官网看看是怎么介绍Kafka的:
- https://kafka.Apache.org/intro
- https://scala.cool/2018/03/learning-kafka-1/
- https://colobu.com/2014/08/06/kafka-quickstart/
- 使用消息队列不可能是单机的(必然是分布式or集群)
- 数据写到消息队列,可能会存在数据丢失问题,数据在消息队列需要持久化(磁盘?数据库?redis?分布式文件系统?)
- 想要保证消息(数据)是有序的,怎么做?
- 为什么在消息队列中重复消费了数据
1.1 Kafka入门
众所周知,Kafka是一个消息队列,把消息放到队列里边的叫生产者,从队列里边消费的叫消费者 。

文章插图
生产者和消费者
一个消息中间件,队列不单单只有一个,我们往往会有多个队列,而我们生产者和消费者就得知道:把数据丢给哪个队列,从哪个队列消息 。我们需要给队列取名字,叫做topic(相当于数据库里边表的概念)

文章插图
给队列取名字,专业名词叫topic
现在我们给队列取了名字以后,生产者就知道往哪个队列丢数据了,消费者也知道往哪个队列拿数据了 。我们可以有多个生产者往同一个队列(topic)丢数据,多个消费者往同一个队列(topic)拿数据

文章插图
为了提高一个队列(topic)的吞吐量,Kafka会把topic进行分区(Partition)

文章插图
Kafka分区
所以,生产者实际上是往一个topic名为Java3y中的分区(Partition)丢数据,消费者实际上是往一个topic名为Java3y的分区(Partition)取数据

文章插图
生产者和消费者实际上操作的是分区
一台Kafka服务器叫做Broker,Kafka集群就是多台Kafka服务器:

文章插图
Kafka集群
一个topic会分为多个partition,实际上partition会分布在不同的broker中,举个例子:

文章插图
一个生产者丢数据给topic
由此得知:Kafka是天然分布式的 。
如果不了解分布式/集群,以及基本的分布式概念的同学,可以关注我的GitHub:https://github.com/ZhongFuCheng3y/3y现在我们已经知道了往topic里边丢数据,实际上这些数据会分到不同的partition上,这些partition存在不同的broker上 。分布式肯定会带来问题:“万一其中一台broker(Kafka服务器)出现网络抖动或者挂了,怎么办?”
关键字:分布式、SpringCloud 保证能让你搞懂 。觉得我写得不错,就给我点个赞!
Kafka是这样做的:我们数据存在不同的partition上,那kafka就把这些partition做备份 。比如,现在我们有三个partition,分别存在三台broker上 。每个partition都会备份,这些备份散落在不同的broker上 。

文章插图
红色代表主分区,紫色代表备份分区
推荐阅读
- 最小的猪有多少斤 中国体型最小的猪
- 理想茶叶,专业成就理想大业
- 冠和品质,铁观音茶人的最爱
- 嫪毐的转轮之术描写 嫪毐的转轮之术是啥意思
- 2020最新灯具十大品牌排名
- 最近很火的抠图壁纸怎么做 满屏女朋友照片壁纸怎么制作
- 浙江新昌,新年茶业发展正当时
- 金瓜贡茶,西双版纳最佳女儿茶
- 世界十大有毒蚂蚁 世界上最毒的蚂蚁是什么蚂蚁
- 在世最长寿老人 健在的120岁高僧
