Kafka

分布式、基于发布订阅模式 的存储队列

使用场景

大数据下的负载均衡、缓冲

发布、订阅模式:上游数据统一推送,下游按需拉取数据

kafka最新定义:开源的分布式事件流平台(event streaming Platform),用于高性能数据管道、流分析、数据集成和关键任务应用

消息队列

常用消息队列:kafka、ActiveMQ、RabbitMQ、RocketMQ等

在大数据场景主要采用Kafka作为消息队列

传统消息队列的应用场景:缓存/消峰解耦异步通信

缓存/消峰:

解耦:

异步处理:

消息队列的两种模式

点对点

订阅/发布

Kafka的基础架构

Producer(生产者)

Consumer(消费者)

Topic(主题)

  1. 为方便拓展,并提高吞吐量,一个topic分为多个partition

如图:TopicA分为三个partition,放在三台服务器上broker0、broker1、broker2

  1. 配合分区的设计,提出消费者组的概念,组内每个消费者并行消费

  1. 为提高可用性,为每个partition增加若干副本,类似NameNode HA

kafka的副本分为leader和follower,正常情况下消费者只消费leader,如果leader挂掉,follower有条件成为leader,被消费者消费

  1. Zookeeper 记录Kafka的信息,2.8.0版本之后可以配置不采用ZK

zookeeper记录的信息包括:

  1. 节点状态:/brokers/ids/[0,1,2] 表示有0,1,2三台服务器在使用
  2. leader信息:/brokers/topics/first/partitions/0/state “leader”:0,”isr”:[0,2] 表示partition0的leader是broker0上的副本,在broker0、和broker2上均有副本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hc5HeGUY-1660635771486)(…/AppData/Roaming/Typora/typora-user-images/image-20220816151354117.png)]