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 数据流程和集群架构 -> 正文阅读

[大数据]Kafka 数据流程和集群架构


数据生产过程

  • 对于 producer 要写入的数据, 可以指定四个参数, 分别是: Topic, Partition, Key, Value
  • Topic 和 Value 是必须要指定的, Partition 和 Key 是可选的
  • 对于一条记录, 先对其进行序列化, 然后按照 Topic 和 Partition 放进对应的发送队列中
  • 如果 Partition 没添, 有两种情况
    • Key 填了, 按照 Key 进行 Hash, 相同的 Key 去同一个 Partition
    • Key 没填, 轮询来选取 Partition
  • Producer 将会和 Topic 下所有 LeaderPatition 保持 socket 连接, 消息由 producer 直接通过 socket 发送到 leader Parition
  • leader partition 的位置注册在 zookeeper 中

数据消费过程

  • 对于消费者,不是以单独的形式存在的,每一个消费者属于一个 consumer group,一个 group 包含多个 consumer
  • 订阅 Topic 是以一个消费组来订阅的,发送到 Topic 的消息,只会被订阅此 Topic 的每个 group 中的一个 consumer 消费
  • 如果所有的 Consumer 都具有相同的 group,那么就像是一个点对点的消息系统;如果每个 consumer 都具有不同的 group,那么消息会广播给所有的消费者
  • 一个 Partition,只能被消费组里的一个消费者消费,但是可以同时被多个消费组消费,消费组里的每个消费者是关联到一个 partition 的
  • 对于一个 topic,同一个 group 中不能有多于 partitions 个数的 consumer 同时消费,否则将意味着某些 consumer 将无法得到消息
  • 同一个消费组的两个消费者不会同时消费一个 partition
  • 在 kafka 中,采用了 pull 方式,即 consumer 在和 broker 建立连接之后,主动去 pull(或者说 fetch )消息
  • consumer 端可以根据自己的消费能力适时的去 fetch 消息并处理,且可以控制消息消费的进度(offset)
  • 当消息被 consumer 接收之后,需要保存 Offset 记录消费到哪,在 0.10 版本后,Kafka 把这个 Offset 的保存,从 ZK 中剥离,保存在一个名叫 consumeroffsets topic 的 Topic 中

集群架构

  • broker : Kafka 集群通常由多个 broker 组成以保持负载平衡。 broker 是无状态的,所以他们使用 ZooKeeper 来维护它们的集群状态。 一个 broker 实例可以每秒处理数十万次读取和写入,每个 Broker 可以处理 TB 的消息,而没有性能影响。 broker leader 选举可以由 ZooKeeper 完成
  • zookeeper : ZooKeeper 用于管理和协调 broker。 ZooKeeper 服务主要用于通知生产者和消费者 Kafka 系统中存在任何新 broker 或 Kafka系统中 broker 失效。 根据 Zookeeper 接收到关于 broker 的存在或失效的通知,然后生产者和消费者采取决定并开始与某些其他 broker 协调他们的任务
  • producer : 生产者将数据推送给 broker。 当 broker 启动时,所有生产者搜索它并自动向该新 broker 发送消息。 Kafka 生产者不等待来自 broker 的确认,并且发送消息的速度与 broker 可以处理的一样快
  • consumer : 因为 Kafka broker 是无状态的,这意味着消费者必须通过使用分区偏移来维护已经消费了多少消息。 如果消费者确认特定的消息偏移,则意味着消费者已经消费了所有先前的消息。 消费者向 broker 发出异步拉取请求,以准备好消耗的字节缓冲区。 消费者可以简单地通过提供 offset 来快退或跳到分区中的任何点
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:13:37  更:2021-09-06 11:13:42 
 
开发: 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年11日历 -2024/11/23 16:30:44-

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