type
status
date
slug
summary
tags
category
icon
password
kafka
集群架构
一个broker通常就看作一个kafka服务,kafka服务又多个可以命名的topics组成,每种topic将对应的事件流持久化
基本概念
- 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)
- offset:某个消息在某一partition中的位置由唯一的offset标识,当消息被写入partition时,就会被分配offset序号(递增且不可变),从而保证消息的有序性
- replica(副本机制):kafka使partition能在多个broker中进行复制,并实现一主多从的关系,它们之间的消息保持同步,其中leader副本负责读写消息,follower副本只同步消息,leader发生故障时会自动通过选举机制任命新的leader
- producers:生产者选择指定的topic,并向指定的partition写入消息,这个过程默认以轮询的方式实现负载均衡
- consumers:消费者会根据offset记录消息的消费情况,offset的推进和记录都由消费者负责
- consumer-group:多个消费者消费同一个topic,可以组成一个消费者组,它们有相同的group id,同一条消息只会被消费者组中的某一个消费者消费,这样就有了多个consumer对应多个partition,提高并行消费能力
配置文件
producer.properties
consumer.properties
server.properties
- Author:风之旅人
- URL:https://www.hrmi.fun//article/kafka-config
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!