当前位置: 首页 > news >正文

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值。直接轮询
自定义分区器

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


http://www.dtcms.com/a/532385.html

相关文章:

  • 开发实战 - ego商城 - 补充:小程序性能优化
  • 如何截取PDF内容为图片
  • 智慧景区导览小程序
  • 58同城企业网站怎么做的wordpress 评论设计
  • 珠海建站模板怎么做多语言网站
  • 致敬哈耶克,让灯火照亮个人前行的道路
  • 【LeetCode100】--- 96.只出现一次的数字【思维导图+复习回顾】
  • 网络编程Socket套接字
  • 算法基础篇(9)倍增与离散化
  • 搓了一个Deepin15的兼容环境(也支持Deepin20/23)
  • C++ - C++11拓展
  • php 装修网站柳州搜索引擎营销平台
  • Householder变换:线性代数中的镜像反射器
  • 【AI智能体】Coze 打造励志图文智能体应用实战操作详解
  • 网站添加友情链接网络推广营销工具
  • 做网站怎么添加关键词网站开发公司报价单模板
  • 山西太原做企业网站建设的公司松原建设局网站
  • HTTP的get请求和post请求的联系和区别
  • 004-Spring AI Alibaba Chat Memory 功能完整案例
  • 用模板网站做h5宣传页多少钱鄂尔多斯seo
  • 人工智能数学
  • Jenkins 从0基础到有点基础——如何安装
  • 我在高职教STM32(新06)——蜂鸣器鸣响实验
  • STM32实现低功耗管理使用配置知识梳理笔记
  • 8-SpringCloud-服务网关 Gateway-高级特性Predicate
  • 从语法糖到引擎实现——JavaScript Class 完整指南(2025 版)
  • 建设网站导航做电商网站必需知道qc
  • STM32 系统定时器(精准延迟)
  • 千问图像编辑Qwen-image-Edit及Qwen-image-Edit-2509(编辑文字/外观编辑/语义编辑)
  • 静态代理模式