Lazy loaded image
技术分享
Kafka配置
00 min
2023-7-15
2024-11-25
type
status
date
slug
summary
tags
category
icon
password

kafka

集群架构

notion image
一个broker通常就看作一个kafka服务,kafka服务又多个可以命名的topics组成,每种topic将对应的事件流持久化
notion image

基本概念

  • broker(消息代理):kafka集群中的服务,一个kafka集群由多个broker组成,broker是无状态的,所以用zookeeper来管理borker的状态
  • topic:以特定的topic来存储特定结构的message,每个topic都有唯一的识别名称,可供多生产者和多订阅者同时操作,一旦消息被发布到topic便不能再修改(可以把一个topic看作文件系统中的一个文件夹,messages看作文件夹中的文件,发布和订阅看作对文件的写和读)
  • partition:一个topic会被分割为多个partition,消息会轮询追加到某个partition(除非消息中包含指定partition key),每个消息被分配了递增的offset,同一个topic的partitions可以分布在不同的broker上,也就是说一个topic可以横跨多个broker,这样就可以使多个消费者高并发地消费同一个topic中不同partition中的消息
  • partition-key:partitions之间是没有顺序的,但可以给其设定一个key(可以是任意值,如设备ID、用户ID),这样在写入消息时利用key就可以选择追到到指定的partition,而每个partition中的记录是有序的(利用offset)
    • notion image
  • offset:某个消息在某一partition中的位置由唯一的offset标识,当消息被写入partition时,就会被分配offset序号(递增且不可变),从而保证消息的有序性
notion image
  • replica(副本机制):kafka使partition能在多个broker中进行复制,并实现一主多从的关系,它们之间的消息保持同步,其中leader副本负责读写消息,follower副本只同步消息,leader发生故障时会自动通过选举机制任命新的leader
  • producers:生产者选择指定的topic,并向指定的partition写入消息,这个过程默认以轮询的方式实现负载均衡
  • consumers:消费者会根据offset记录消息的消费情况,offset的推进和记录都由消费者负责
  • consumer-group:多个消费者消费同一个topic,可以组成一个消费者组,它们有相同的group id,同一条消息只会被消费者组中的某一个消费者消费,这样就有了多个consumer对应多个partition,提高并行消费能力
    • notion image

配置文件

producer.properties

consumer.properties

server.properties

上一篇
OnJava笔记
下一篇
Micro-App整合大数据中心