Kafka随笔

发布时间 2023-03-28 20:45:07作者: 风间物语

快速认识Kafka

Kafka是最初由Linkedin公司开发,用作 Linkedin 的活动流(Activity Stream)和运营数据处理管道的基础。Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,官方的定义Kafka是一个高吞吐量的分布式流处理平台。Kafka由Scala和Java编写。
官网:http://kafka.apache.org/
image
主要应用场景:日志收集、消息系统、用户活动跟踪、大数据实时计算等
优点:

  • 高吞吐量、低延迟: 每秒可以处理几十万条消息
  • 高并发:几千个客户端同时读写
  • 容错性:多副本、多分区,允许集群中节点失败,如果副本数据量为n,则可以n-1个节点失败
  • 扩展性强:支持热扩展,Kafka集群启动运行后,可以直接向集群添加节点

Kafka核心概念

Broker

一个Broker可以看作是一个Kafka服务节点或Kafka服务实例
一个 Broker可以容纳多个 topic
一组Broker组成了Kafka集群
Broker 有两种角色:Controller 和 Follower

Producer生产者

Producer即生产者,消息的产生者。生产者负责创建消息,然后将其投递到Kafka中

Consumer消费者

消费者,也就是接收消息的一方。消费者连接到Kafka上并接收消息,进而进行相应的业务逻辑处理

ConsumerGroup消费者组

消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
消费者组是Kafka提供的可扩展且具有容错性的消费者机制。
基于消费者组可以实现:
基于点对点模型:所有消费者都在同一消费者组里,每条消息只会被一个消费者处理
基于发布订阅模型:消费者属于不同的消费者组,假如每个消费者都有自己的消费者组,这样Kafka消息就能广播到所有消费者实例上

Topic

每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,主题的意思,一个主题就是对消息的一个分类。Topic是一个消息的逻辑分类。

  • 每条消息属于且仅属于一个Topic
  • Producer发布数据时,必须指定将该消息发布到哪个Topic
  • Consumer消费消息时,也必须指定消费哪个Topic的信息