第一章、Kafka 概述
1.1、定义
Kafka
是一个分布式的基于公布 / 订阅模式的音讯队列,用于大数据实时处理畛域
1.2、音讯队列
1.2.1、利用场景
异步解决、解耦、削峰
1.2.2、应用音讯队列的益处
解耦
:容许你独立批改和扩大两边的处理过程,只有他们遵循雷同的接口标准 可恢复性
:零碎的一部分组件生效后,不会影响到整个零碎。音讯队列升高了过程之间的耦合度,所以即便一个解决音讯的过程挂掉后,退出到队列的音讯依然可能在零碎复原后被解决 缓冲
:无效管制音讯流的速度,解决生产和生产数据速度不统一的状况 削峰
:能够在突发流量的时候扛住压力 异步通信
:
1.2.3、音讯队列的两种模式
点对点:消费者被动拉取数据,音讯收到后将音讯从队列中革除
音讯生产者生产音讯发送到 Queue 中 而后音讯消费者从 Queue 中取出并且生产音讯。音讯被生产当前,Queue 中不再有存储,所以音讯消费者不可能生产到曾经被生产的音讯。Queue 反对存在多个消费者,然而对一个音讯而言,只会有一个消费者能够生产。
公布订阅:一对多模式,消费者生产数据之后不会革除数据;生产者将数据生产到 topic 中,订阅了该 topic 的消费者被动从该 topic 生产数据。公布到 topic 的音讯会被所有消费者生产
1.3、kafka 架构
1.3.1 要害概念
producer:生产数据的客户端
consumer:生产数据的客户端
consumer group:一组生产数据的客户端, 一个消费者只能生产一个分区的数据,消费者之间互不影响
kafka cluster:Kafka 的服务器集群
broker:一个 broker 就是一个 kafka 服务器。一个集群能够有多台 broker,一个 broker 能够包容多个 topic
topic:相当于一个队列
partition:为了实现零碎的延展性,会将一个 topic 散布到多台 broker 下,散布到每台 broker 下的队列就是一个 partition。每个 partition 都是一个有序的队列
replica:为了保障 kafka 集群的高可用,避免一个 broker 宕机之后 partition 的数据失落,须要对 partition 做备份
leader:master partition 主分区。生产者生产和消费者生产数据的对象都是 leader
follower:slave partition 从分区。从主分区中同步数据;当 leader 挂掉之后,某个 follower 会变成新的 leader