大数据学习--kafka基本概念

官方文档

什么是kafka

Kafka是一种高吞吐量的分布式发布-订阅 消息系统,专为超高吞吐量的实时日志采集、实时数据同步、实时数据计算等场景来设计

官方文档

kafka中文官方文档

消息中间件

消息中间件:是利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式环境下扩展进程间的通信。

为什么要使用消息中间件

  1. 异步调用 同步变异步
  2. 应用解耦/可扩展性 提供基于数据的接口层
  3. 流量削峰 缓解瞬时高流量压力
  4. 可恢复性
  5. 顺序保障

消息中间件的工作模式

1、 两种模式
点对点模式 一对一
发布订阅模式 一对多
2、发布订阅模式又分
发布者主动推送模式
消费者主动拉取模式

kafka是消息订阅中的消费者拉取模式

kafka与flume不同之处在于 flume想发给多个人需要些多个sink
kafka订阅模式不用

消息中间件中的术语

  • Broker:消息服务器,提供核心服务
  • Producer:消息生产者
  • Consumer:消息消费者
  • Topic:主题,发布订阅模式下的消息统一汇集地
  • Queue:队列,点对点模式下的消息队列

Kafka架构

  • Broker:Kafka集群中的服务器
  • Topic:维护一个主题中的消息,可视为消息分类
  • Producer:向Kafka主题发布(生产)消息
  • Consumer:订阅(消费)主题并处理消息

在这里插入图片描述

Kafka Topic

  • Topic
    主题是已发布消息的类别名称
    发布和订阅数据必须指定主题
    主题副本数量不大于Brokers个数
  • Partition
    一个主题包含多个分区,默认按Key Hash分区
    每个Partition对应一个文件夹<topic_name>-<partition_id>
    每个Partition被视为一个有序的日志文件(LogSegment)
    Replication策略是基于Partition,而不是Topic
    每个Partition都有一个Leader,0或多个Followers

Kafka Message

  • header:消息头,固定长度
    offset:唯一确定每条消息在分区内的位置
    CRC32:用crc32校验消息
    “magic”:表示本次发布Kafka服务程序协议版本号
    “attributes”:表示为独立版本、或标识压缩类型、或编码类型
  • body:消息体
    key:表示消息键,可选
    value bytes payload:表示实际消息数据

Kafka Producer

  • 生产者将消息写入到Broker
    Producer直接发送消息到Broker上的Leader Partition
    Producer客户端自己控制着消息被推送到哪些Partition
    随机分配、自定义分区算法等
    Batch推送提高效率

Kafka Broker

  • Kafka集群中每个Broker都可以响应Producer的请求
    哪些Broker是存活的?
    Topic的Leader Partition在哪?
  • 每个Broker充当Leader和Followers保持负载平衡
    Leader处理所有读写请求
    Followers被动复制Leader

Kafka Consumer

  • 消费者通过订阅消费消息
    offset的管理是基于消费组(group.id)的级别
    每个Partition只能由同一消费组内的一个Consumer来消费
    每个Consumer可以消费多个分区
    消费过的数据仍会保留在Kafka中
    消费者数量一般不超过分区数量
  • 消费模式
    队列:所有消费者在一个消费组内
    发布/订阅:所有消费者被分配到不同的消费组

Kafka数据流

  • 副本同步
    ISR(In-Sync Replica)
  • 容灾
    Leader Partition
  • 高并发
    读写性能
    Consumer Group
  • 负载均衡

在这里插入图片描述

ZooKeeper在Kafka中的作用

  • Broker注册并监控状态
    /brokers/ids
  • Topic注册
    /brokers/topics
  • 生产者负载均衡
    每个Broker启动时,都会完成Broker注册过程,生产者会通过该节点的变化来动态地感知到Broker服务器列表的变更
  • offset维护
    Kafka早期版本使用ZooKeeper为每个消费者存储offset,由于ZooKeeper写入性能较差,从0.10版本后,Kafka使用自己的内部主题维护offset

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值