kafka中文教程

原创
半兽人 发表于: 2015-01-01   最后更新时间: 2021-11-09 18:15:21  
{{totalSubscript}} 订阅, 770,290 游览

本网翻译整理Apache kafka,提供Apache kafka完整学习文档。


布 & 订阅
数据流,如消息传递系统

高效并实时

数据安全地在分布式集群中复制存储

kafka

kafka是用于构建实时数据管道和流应用程序。具有横向扩展,容错,wicked fast(变态快)等优点,并已在成千上万家公司运行。

简单说明什么是kafka

Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息中间件,只是粗略的讲解,目前kafka已经可以做更多的事情。

举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就消费一个鸡蛋,假设消费者消费鸡蛋的时候噎住了(系统宕机了),生产者还在生产鸡蛋,那新生产的鸡蛋就丢失了。再比如生产者很强劲(大交易量的情况),生产者1秒钟生产100个鸡蛋,消费者1秒钟只能吃50个鸡蛋,那要不了一会,消费者就吃不消了(消息堵塞,最终导致系统超时),消费者拒绝再吃了,”鸡蛋“又丢失了,这个时候我们放个篮子在它们中间,生产出来的鸡蛋都放到篮子里,消费者去篮子里拿鸡蛋,这样鸡蛋就不会丢失了,都在篮子里,而这个篮子就是”kafka“。

鸡蛋其实就是“数据流”,系统之间的交互都是通过“数据流”来传输的(就是tcp、https什么的),也称为报文,也叫“消息”。

消息队列满了,其实就是篮子满了,”鸡蛋“ 放不下了,那赶紧多放几个篮子,其实就是kafka的扩容。

各位现在知道kafka是干什么的了吧,它就是那个"篮子"。

kafka名词解释

后面大家会看到一些关于kafka的名词,比如topic、producer、consumer、broker,我这边来简单说明一下。

  • producer:生产者,就是它来生产“鸡蛋”的。
  • consumer:消费者,生出的“鸡蛋”它来消费。
  • topic:你把它理解为标签,生产者每生产出来一个鸡蛋就贴上一个标签(topic),消费者可不是谁生产的“鸡蛋”都吃的,这样不同的生产者生产出来的“鸡蛋”,消费者就可以选择性的“吃”了。
  • broker:就是篮子了。

大家一定要学会抽象的去思考,上面只是属于业务的角度,如果从技术角度,topic标签实际就是队列,生产者把所有“鸡蛋(消息)”都放到对应的队列里了,消费者到指定的队列里取。

征集

如果你也想分享一些文章,例子。欢迎入群交流:14085484

注意:本群只与文章贡献者进行交流,不回答任何技术咨询,技术问答请到网站上提问,谢谢。

微信公众号

微信公众号,我会定期分享一些实用的操作源码。
screenshot

怎么样才算真正的学会kafka

最近面试发现,很多人用过kafka,但是没人了解原理,我们可是很注重原理的(PS:要不然怎么知道你真的会呢)。

  • kafka节点之间如何复制备份的?
  • kafka消息是否会丢失?为什么?
  • kafka最合理的配置是什么?
  • kafka的leader选举机制是什么?
  • kafka对硬件的配置有什么要求?
  • kafka的消息保证有几种方式?
  • kafka为什么会丢消息?

......你是否都答得上来?(欢迎大家补充!)

这些问题在下面的文章中都可以找到答案,kafka之所以有这么火热,建议各位一定要看一下。

如何学习kafka

还是那句话,学习任何技术,跟学骑自行车一样,不要一开始只关注它的具体细节是什么。先学着怎么骑,骑着骑着就了解大致的原理,这个时候在去看它的原理,会很轻松。

如果你在学习的过程中遇到什么问题,直接评论或者在kafka问题专区中提问。

章节与kafka官网对应一致

第一章:kafka入门
第二章:客户端API
第三章:kafka的配置
第四章:kafka如何设计的
第五章:kafka的实现
第六章:kafka的常用操作,如扩容,删除和增加topic
第七章:kafka硬件和操作系统
第八章:kafka监控
第九章:kafka安全
第十章:kafka连接器
第十一章:kafka 流
第十二章:kafka源码
第十三章:实战笔记(kafka命令大全

我们的内容会根据官网的更新,而定期更新。



更新于 2021-11-09

Ooo 2月前

看完入门这一部分,回答一下第一个问题:kafka 节点直接是如何复制备份的。
1、kafka数据存储以主题分区为单位
2、每个分区可以存储在多台 kafka 服务器上
3、每个分区在某台服务器上以 leader 方式存在,其他服务器以 follower 方式存在
4、leader负责分区的读写,写请求会转发到其他服务器进行消息同步,当消息同步到所有 follower 节点上并且写入完成后,即使大部分节点挂掉了,只剩一个节点了,那么还是能正常服务的。这里就是所谓的 kafka 复制备份吧

Ooo 2月前

大佬666,鸡蛋标签篮子的抽象可以的

半兽人 -> Ooo 2月前

快夸我

Ooo -> 半兽人 2月前

大佬棒棒哒!

2月前

大佬 yyds

半兽人 -> 2月前

一起 yyds

回忆 4月前

又来学习了。

半兽人 -> 回忆 4月前

知道你还会来。

シ皜彽調_N! 5月前

大佬,非常高兴能看到你得文章

也谢谢你,看到你的评论我现在也很开心。

光年 7月前

请问kafka客户端支持遗言吗

July。 7月前

博主您好,我有个问题想要请教一下,我服务器本来就一个千兆网口,搭建kafka加kerberos认证是正常的,advertised.listeners和listeners配置的千兆网口的ip,后来加上了万兆网口,advertised.listeners和listeners配置的万兆网口的ip,kerberos的认证证书也换掉了,然后认证可以正常用,但是生产者往kafka里发消息的时候报错,Error while fetching metadata with correlation id : {LEADER_NOT_AVAILABLE} 这是什么问题呀

半兽人 -> July。 7月前

要看看服务端报什么错。
advertised.listeners已经弃用了,参见:https://www.orchome.com/500
如果还有问题,到问题专区详细描述下吧,贴上配置。

别来纯半 7月前

你好 请问一下 kafka消费 每个批次里面数据的大小如何设置 我现在也碰到了这样的问题

半兽人 -> 别来纯半 7月前

什么问题?到问题专区里提问吧。

杨小姐 8月前

请问kafka实现延时队列有什么好的方案吗?

一看创建时间以为是旧文档,再看更新时间...感谢作者分享🐂

多提意见。

查看kafka更多相关的文章或提一个关于kafka的问题,也可以与我们一起分享文章
提问