Kafka的概念

Kafka的设计思想及基本使

1、Kafka基本概念

特性:

高吞吐,低延迟,只有主题:主题下面包括多个分片

可拓展性,支持集群和热扩展

持久性:消息被持久化到本地磁盘,保证数据的稳定

容错性:可以支持N-1个节点失败,服务仍然可以使用

高并发:支持数千用户同时读写

四个组成部分:

生产者Producer,消费者(组),kafka节点(集群),zookeeper节点(集群)

消费者Consumer(组):

同一个分区的数据只能被消费者组里面一个用户消费

同一消费者组内的消费者可以消费同一个topic下面不同分区的数据

kafka集群:

broker:kafka实例(kafka服务节点,broker id区分)

Topic:消息主题(业务分类)比如:订单,支付

Partition:topic分区,比如订单分为已支付,未支付,已发货,待发货

Replication:分区备份,比如订单备份已支付,备份未支付分区

副本的数量不能大于Broker数量,可以小于

而且要保证主分区(leader)和备份分区(follower)不在同一台机器上

Message:生产者发送的消息主体

2、Kafka核心概念

Producers,消息生产者向kafka的topic发送消息发过程

通过一定的算法将不同的消息保存到不同的分区片

同步,get获取response

异步,callback接口监听消息保存结果返回

Broker:没有副本机制(没有主备主从节点说法,只有分区才有主备说法)

消息没有状态,导致删除问题

消息的删除:时间7天,容量1G

Message:offset(偏移量),messagesize,data

Consumers:订阅者处理消息的过程,跟rabbitmq需要区分的是订阅者是一个组的概念

3、kafka安装部署

kafka元数据是保存在zookeeper服务器节点上的(znode),包括topic,分区属性

先启动zookeeper,不然kafka读取不到元数据,会启动失败

4、Kafka API操作

生产者:生产者对象,生产者记录,发送消息可以通过分区算法来实现

消费者:消费者对象,消费者返回记录,消费消息可以通过poll拉取topic中的信息

5、工作流程分析

发送数据:生产者发送消息找leader,不能发送给follower

1、先从集群获取leader(其实是从zookeeper元数据中去获取)

2、生产者将消息发送给leader分区

3、leader分区将消息写入本地文件

4、follower分区从leader分区 pull消息

5、follower分区将消息写入本地并且ack发送给leader分区

6、leader分区根据配置来决定什么时候向producer发送写入ack

保存数据:

保存三个文件:index(配合topic等信息路由到具体的消息),log(存储消息),timeindex(备份还原)

存储策略:

基于时间:默认是保存7天 ----》----log.retention.hours=168

基于大小:默认是1G 》----》log.segment.bytes=1073741824

消费数据:

1、一般建议消费者数量和分区数据保持一致(可以达到最高吞吐)

2、消费的原理:segment(topic+分区) + index(offset)+二分查找+顺序查找

0000000000000.log

0000000000009.log

0000000000018.log

6、核心组件

发送类型:同步发送,异步发送

序列化器:可以自定义,只需要实现了kafka的Serializer接口

分区器:

给定分区号,直接将数据发送到指定的分区

没有给定分区号,给定数据的key值,通过key取hashcode%numpartition取模

没有分区号,也没给key值。直接轮询

自定义分区器

拦截器:可以自定义拦截器,对消息类容进行过滤,比如敏感词过滤

相关推荐
珠海西格7 分钟前
4 月 1 日起执行分布式光伏监控新规,直接影响从业者与项目收益
大数据·运维·服务器·分布式·能源
中议视控1 小时前
会议室和展厅分布式网络中控系统主机的选购思路
网络·分布式
发际线还在13 小时前
互联网大厂Java三轮面试全流程实战问答与解析
java·数据库·分布式·面试·并发·系统设计·大厂
攒了一袋星辰15 小时前
SequenceGenerator高并发有序顺序号生成中间件 - 架构设计文档
java·后端·spring·中间件·架构·kafka·maven
Leon-Ning Liu20 小时前
OGG同步Oracle到Kafka
数据库·oracle·kafka
Francek Chen20 小时前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
zzzzzwbetter21 小时前
Hadoop完全分布式部署-Master的NameNode以及Slaver2的DataNode未启动
大数据·hadoop·分布式
杨航 AI21 小时前
Frank-Job +Dify 实现openclaw Cron 分布式任务调度的AI化思考
人工智能·分布式
guoguangwu21 小时前
kafka容器增加健康检查
分布式·kafka
Java爱好狂.21 小时前
2026如何备战互联网大厂Java面试?
java·分布式·高并发·java面试·后端开发·java架构师·互联网大厂