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

Kafka -- 架构、分区、副本

1、Kafka的架构:

        1、producer:消息的生产者

        2、consumer:消息的消费者

        3、broker:kafka集群的服务者,一个broker就是一个节点,主要是负责处理消息的读、写的请求和存储消息。在kafka cluster中包含很多的broker。

        4、topic:消息的队列/分类,就类似一张表,里面用来接收数据,数据的格式可以随意,但是一般都会统一。

        5、zookeeper:负责存储元数据。 

2、kafka的分区和副本:

        1、每一个topic可以分成多个partition,每一个分区一张表数据,在Kafka底层中就是一个以log结尾的文件,分别存在对应的data目录下(通过配置文件指定的)

        使用分区的原因是实现分布式,一个topic中的数据非常大的时候,如果只存在一个分区那么数据压力就比较大。

        2、每个partition内部消息强有序,其中的每个消息都有一个序号叫offset(消费偏移量),再取数据的时候就会根据这个偏移量来取数据

        3、一个partition只对应一个broker,一个broker可以管多个partition

        4、消息不经过内存缓冲,是直接写入磁盘中。

        5、根据时间策略删除数据,并不是数据消费完成就删除数据。默认是7天删除一次数据,删除的一整个文件,默认是1G左右生成一个文件。对于存储的时间可以通过修改配置文件来决定存储的日期。

        6、producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略

                轮询的负载均衡:数据数循环的向每一partition中写,数据比较均衡

                基于hash的partition策略:数据会根据hash值据欸的那个进入哪个partition,可以根据相同的key进入同一个partition中。但是可能会造成一个问题:数据倾斜的问题。

        7、consumer(消费者)自己维护消费到哪个offset,每一个用户都记录自己所消费的offset,这些数据都是默认存在--toppic:__consumer_offsetsL中

        8、每一个consumer都有对应的group,一个组中可以是一个用户,也可以是多个用户。

               group内是queue消费模型

                        各个consumer消费不同的partition,因此一个消息在group内只消费一次,这样能保证消费数据不重复

                group间是publish-subscribe消费模型

                        各个group各自独立消费,互不影响,因此一个消息在被每个group消费一次

http://www.lryc.cn/news/222276.html

相关文章:

  • CSS特效001:鼠标放div上,实现旋转、放大、移动等效果
  • gin 快速入门手册
  • Window下安装 Mongodb,并实现单点事务
  • 【通信原理】第三章 随机过程——例题
  • 线性【SVM】数学原理和算法实现
  • R语言中的函数26:polyroot多项式求根函数
  • 2023年辽宁省数学建模竞赛A题铁路车站的安全标线
  • 半导体工厂将应用哪些制造创新技术?
  • [unity]深色模式/浅色模式
  • 在react中组件间过渡动画如何实现?
  • 解析找不到msvcr100.dll文件的解决方法,4个方法修复msvcr100.dll
  • 达梦主备部署
  • 后期混音效果全套插件Waves 14 Complete mac中文版新增功能
  • HTML5笔记
  • 前端架构师需要解决那些问题
  • 使用python快速搭建接口自动化测试脚本实战总结
  • android studio 字节码查看工具jclasslib bytecode viewer
  • Ubuntu上搭建FTP服务
  • unity打AB包,AssetBundle预制体与图集(三)
  • 在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析
  • MATLAB|热力日历图
  • 《golang设计模式》第三部分·行为型模式-05-仲裁者/中介模式(Mediator)
  • 7天入门python系列之准备工作
  • Go语言~反射
  • 详解交叉验证中【KFold】【Stratified-KFold】【StratifiedShuffleSplit】的区别
  • 数学建模比赛中常用的建模提示词(数模prompt)
  • Spark 新特性+核心回顾
  • STM32 TIM定时器,配置,详解(1)
  • Helix Toolkit:为.NET开发者带来的3D视觉盛宴
  • PHP分类信息网站源码系统 电脑+手机+微信端三合一 带完整前后端部署教程