Kafka
分布式、基于发布订阅模式 的存储队列
使用场景
大数据下的负载均衡、缓冲
发布、订阅模式:上游数据统一推送,下游按需拉取数据
kafka最新定义:开源的分布式事件流平台(event streaming Platform),用于高性能数据管道、流分析、数据集成和关键任务应用
消息队列
常用消息队列:kafka、ActiveMQ、RabbitMQ、RocketMQ等
在大数据场景主要采用Kafka作为消息队列
传统消息队列的应用场景:缓存/消峰、解耦和异步通信
缓存/消峰:
解耦:
异步处理:
消息队列的两种模式
点对点
订阅/发布
Kafka的基础架构
Producer(生产者)
Consumer(消费者)
Topic(主题)
- 为方便拓展,并提高吞吐量,一个topic分为多个partition
如图:TopicA分为三个partition,放在三台服务器上broker0、broker1、broker2
- 配合分区的设计,提出消费者组的概念,组内每个消费者并行消费
- 为提高可用性,为每个partition增加若干副本,类似NameNode HA
kafka的副本分为leader和follower,正常情况下消费者只消费leader,如果leader挂掉,follower有条件成为leader,被消费者消费
- Zookeeper 记录Kafka的信息,2.8.0版本之后可以配置不采用ZK
zookeeper记录的信息包括:
- 节点状态:/brokers/ids/[0,1,2] 表示有0,1,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)]