2020-05-29【Kafka】
![](https://img.haomeiwen.com/i20396442/931f18ab9f8be8f7.jpg)
今日鸡汤
我很渺小,无论我做了什么,都是同样的渺小,但只要我还在动,就超越了死亡。人活在这世上,快乐和痛苦本就分不清,所以我只求货真价实。放声大哭从一个梦境进入另一个梦境,这是每个人都有的奢望。我们好像在池塘的水底,从一个月亮走向另一个月亮。
——王小波《三十而立》
今天做了Serverless的分享,终于有时间切到Kafka的频道了,一起来读《Kafka权威指南》。
什么是发布与订阅消息系统?
几个特点:
1)数据或消息的发布者不会直接把消息发送给接收者。
2)发布者以某种方式对消息进行分类,接收者订阅他们,以便接收特定类型的消息。
3)发布与订阅系统之间一般会有一个broker,也就是发布消息的中心点。
Kafka的消息是什么?
Kafka的数据单元被称为消息。它没有特别的格式或含义。
消息可以有一个可选的元数据,叫做键。
消息被分批次写入Kafka,批次就是一组消息,他们属于同一个主题和分区。批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。
Kafka的主题是什么?
Kafka的消息通过主题来分类。主题可以被分为若干个分区。一个分区就是一个提交日志。
消息以追加的方式写入分区,按先入先出的顺序读取。
由于一个主题一般包含几个分区,因此无法在整个主题范围内保证消息的顺序,但可以保证消息在单个分区内的顺序。
流是一组从生产者到消费者的数据,一般一个主题的数据就看做一个流。
Kafka的生产者和消费者是什么?
生产者创建消息,当消息被发布到一个特定主题上时,生产者在默认情况下把消息均衡地分布到主题的所有分区上。
消费者读取消息。它订阅一个或多个主题,并按照消息生成的顺序读取他们。消费者通过检查消息的偏移量区分已经读过的数据。
消费者是消费者群组的一部分,会有一个或多个消费者共同读取一个主题,群组会保证每个分区只能被一个消费者使用。消费者与分区的映射关系叫做消费者对分区的所有权关系。
Kafka的broker是什么?
一个独立的Kafka服务器叫做broker。它接收生产者的消息,为消费者提供服务。
Kafka的优势是什么?
1)Kafka支持多生产者。它可以从多个前端系统收集数据,以统一的格式对外提供数据。
2)Kafka支持多消费者。它可以让多个消费者从一个单独的消息流上读取数据,且各消费者互不影响。
3)Kafka允许消费者非实时地读取消息。
4)Kafka具有灵活的伸缩性。
5)通过横向扩展生产者、消费者和broker,Kafka可以做到高性能。
Kafka的使用场景是什么?
活动跟踪,传递消息,度量指标和日志记录,提交日志,流处理。