1.基本概念
*Producer:
消息生产者,往Topic发布消息
*Consumer:
消息消费者,往Topic取消息并处理
*Consumer Group:
topic 可以广播给不同的group,一个group只能有一个consumer消费消息
*Broker(物理概念):
Kafka集群,每个节点为一个broker
*Topic(逻辑概念):
消息类别,对数据进行区分、隔离
*Partition(物理概念):
Kafka存储的基本单位,一个Topic数据会被分散存储在多个Partition,每个Partition是有序的;
一个Partition只会在一个broker上;
消费者的数目<=Partition数目
*Replication:(副本)
同一个Partition可能会有多个Replication,多个Replication数据是一样的;
基本单位是Partition;
读和写都是在Leader;
Follower实时复制Leader数据
*Replication Leader:
负责Partition上与Producer和Consumer的交互,一个Partition只有一个Leader
2.基本结构
3.特点
多分区、多副本、多订阅者、基于Zookeeper调度
高吞吐量、低延迟、高并发、时间复杂度为O(1)
数据可持久化、容错性、消息自动平衡
4.Springboot配置kafka参数详解
#原始数据kafka读取
kafka.consumer.servers=IP:9092,IP:9092(kafka消费集群ip+port端口)
kafka.consumer.enable.auto.commit=true(是否自动提交)
kafka.consumer.session.timeout=20000(连接超时时间)
kafka.consumer.auto.commit.interval=100(自动提交时间间隔)
kafka.consumer.auto.offset.reset=latest(实时生产,实时消费,不会从头开始消费)
kafka.consumer.topic=result(消费的topic)
kafka.consumer.group.id=test(消费组)
kafka.consumer.concurrency=10(设置消费线程数)
#协议转换后存储kafka
kafka.producer.servers=IP:9092,IP:9092(kafka生产集群ip+port端口)
kafka.producer.topic=result(生产的topic)
kafka.producer.retries=0
kafka.producer.batch.size=4096
kafka.producer.linger=1
kafka.producer.buffer.memory=40960