kafka中文教程

原创 kafka
半兽人 发表于: 2015-01-01   最后更新时间: 2021-07-16 10:05:48  
{{totalSubscript}} 订阅,725541 游览

本网翻译整理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命令大全

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



您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容


上一条: 到头了!
下一条: Apache Kafka下载

シ皜彽調_N! 2天前

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

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

光年 1月前

请问kafka客户端支持遗言吗

July。 2月前

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

半兽人 -> July。 2月前

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

别来纯半 2月前

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

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

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

杨小姐 2月前

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

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

多提意见。

蛰伏的庶人 2月前

博主我刚刚学习kafka,请教一个问题,kafkaf服务端是两个节点集群部署的,我用idea写了两个消费者客户端程序,这两个消费者属于同一个消费组,而且订阅的是同一个主题mytopic(两个分区),我在服务端通过produce的shell命令在该主题下投递了一条消息,为什么我idea两个消费端都收到了消息呢?我看官网文档说主题的每个分区,消费组中只有其中一个消费者来消费消息,为什么我这同一个消费组两个消费者都收到了消息呢?请帮我解答下,谢谢大佬

查询确认一下就知道了:

## 新消费者列表查询
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

## 显示某个消费组的消费详情(0.10.1.0版本+)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

来自:kafka命令大全

ps:有问题可以到问题专区提问。

  2月前

大佬看您解答了好多关于kafka问题,方便问个问题不

半兽人 ->   2月前

可以呀,问题专区直接提问就可以了。

光年 4月前

请问大佬kafka可以创建大量的topic吗,topic的数量是否有限制,创建topic的代价是什么。

光年 4月前

kafak消费者拉取数据时是否可以带条件,比如只拉取一周内符合name=zhangsan的数据

半兽人 -> 光年 4月前

没有,kafka之所以快,就是因为数据几乎不做任何处理。只能自己拉取过滤

光年 -> 半兽人 4月前

嗯嗯,谢谢答复,请问ksql的性能怎么样,用它做数据库是否可行。

半兽人 -> 光年 4月前

ksql没用过额,不可解。

提问