🎁

BigData8:数据源管理—Kafka

Created
Nov 1, 2021 02:36 PM
Describe
Link
Tags

一、输入源

1.基本输入源

  • 文件源
    • SBT
      • Scala打包工具
  • 套接字流
    • Socket端口监听
    • TCP全双工和点对点
      • TCP连接Internet两台主机上的两个进程:发送进程+接收进程
  • RDD队列流
    • 数据源不断产生RDD
    • 队列流
 

2.高级输入源

  • kafka
  • Flume

3.Kafka架构

  • 数据交换枢纽(关系型数据库、NoSQL数据库、流处理系统、批处理系统)
  • 分布式发布订阅消息系统
  • 在线实时处理和批量离线处理
  • Kafka本质是一个MQ(Message Queue)
    • 解耦
    • 可恢复性
    • 缓冲
    • 灵活性
    • 异步通信
 
notion image

Kafka术语

  • Producer:消息生产者,向Kafka Broker发消息的客户端
  • Consumer:消息消费者,从Kafka Broker取消息的客户端
  • Consumer Group:消费者组(CG)
  • Broker:一台Kafka机器就是一个Broker;集群有多个Broker组成
  • Topic:将消息分类
  • Partition
  • Replica
    • Leader
    • Follower
  • offset:消费者消费的位置信息
  • Zookeeper:Kafka集群的正常工作依赖于Zookeeper存储和管理集群信息
 

Kafka工作流程

notion image
 

Kafka存储机制

notion image
 
notion image
 

数据可靠性保证

notion image
Kafka提供三种可靠性,用户根据可靠性与延迟需求进行权衡。
ACK参数配置:
  • 0:Producer不等待Broker的ACK。保证数据不重复
  • 1:Producer等待Broker的ACK,Leader落盘成功返回ACK,如果Follower同步成功之前Leader故障,那么数据丢失。
  • -1(all):ProducerBroker的ACK,partition和Follower全部落盘成功才返回ACK。保证数据不丢失
notion image
 
  • At Least Once
  • At Most Once
  • Exactly Once
  • 0.11版本后,引入幂等性,只会持久化一次
💡
At Least Once + 幂等性 = Exactly Once
 
 

Kafka消费者—消费方式

  • push
  • pull(更适合kafka)

Kafka消费者—分区分配策略

  • Range
    • 只针对于每个topic,每个topic没有关联
  • RoundRobin轮询方式
    • 消费者按字典排序

Kafka消费者—offset维护

  • 0.9版本前保存在Zookeeper,0.9版本开始,Consumer默认保存在Topic。