IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> kafka(1) 简介 -> 正文阅读

[大数据]kafka(1) 简介

一 简介

kafka是一个分布式的消息队列, 在对消息进行保存时, 根据topic进行归类, 消息发送者称为producer, 消息消费者称为consumer, kafka集群可以有多个kafka实例, 每个实例称为broker, 无论是kafka集群还是单机, 都依赖于zk集群保存一些meta信息

q : 为什么说kafka是分布式的??

同一个kafka集群有共同拥有一个topic, 而同一个topic又拥有不同的分区,不同的分区可以分布在不同的borker上也就是不同的机子上,所以,分区是分布式的,则数据也是分布式的,kafka就是分布式

二 消息传递方式

  • 点对点传递模式
  • 发布-订阅模式

点对点传递模式 :?

?生产者生产一条消息, 只能由一个消费者进行消费(只有一个消费者组订阅了这个topic)

发布-订阅消息传递模式 :?

?生产者生产一条消息, 全部订阅了这个topic的消费者组都可以获取这条消息

三 kafka优点

  • 解耦?
  • 副本 : 处理数据的过程失败, 并且数据还没有持久化, 可能会造成数据丢失, 消息队列会对数据进行持久化
  • 扩展性
  • 削峰 : 防止突发的访问压力, 超负荷的请求将服务打垮
  • 可恢复性
  • 顺序保证 : kafka保证同一个partition内的信息有序
  • 缓冲
  • 异步通信

四 架构

?结构名称解释 :?

  1. producer : 消息生产者, 就是向kafka broker发送消息的客户端
  2. consumer : 消息消费者, 向 kafka broker获取消息的客户端
  3. topic : 一个主题, 用来存储消息
  4. consumer group : 消费者组, 一个消费者组中可以有多个消费者, 每个消费者只能订阅topic的一个分区,因此一个消费者组中消费者的个数应该小于他订阅topic的分区数,不然会有消费者进行空转, 一个topic可以被多个消费者组订阅
  5. broker : 一台kafka服务器就是一个broker, 一个集群由多个broker组成, 一个broker中可以容纳多个topic
  6. pritition : 一个topic可以分为多个pritition,? 每一个partition都是一个有序队列, partition中的每条消息都会被分配一个有序的id(offset), kafka只能保证按照一个partition中的顺序将消息发送给consumer, 不能保证一个topic的整体(对各partition间)有序
  7. offset : kafka的存储文件是按照offset.kafka来命名的, 用offset做名字可以方便查找,老版本的kafka将offset存储在zk中, 新版本的kafka将offset存储在kafka中, offset主要用来记录消息被消费的位置
  8. replication :?pritition 的副本, 用来保证 leader partition宕机数据不会丢失, 因此副本不能与主版本存在用一个broker中

从上图中可以看出 : producer A向topic A中生产消息, topic A有两个分区, 副本数也是2, 生产者只向leader partition生产消息, follower partition从leader partition中复制消息, 消费组中consumer A消费topic A pritition0中的数据, consumer B 消费topic A pritition1中的数据,consumer C消费 broker3中的数据,? broker3只有一个分区, 消费者的全部信息存储在zk中(老版本的kafka)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:59:11  更:2021-07-14 11:02:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 23:34:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码