kafka 简介
1.kafka 集群的架构
Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。
image-202001291054432741.broker: 服务器集群的节点
2.topic : 专题
3.partition分区: 把一个 topic 分成不同的分区,提高负载,表现形式就是文件夹
1.leader:分区主节点(老大)
2.follower: 分区的从节点(小弟)
4.Consumer Group
2.生产者往 kafka发送数据的流程(6 步)
image-202001291057051471、producer 从 kafka 集群获取信息,知道谁是 leader
2、procucer 向 leader 发送数据
3、leader 存储数据
4、leader 往 follwer 发送数据
5、follwer 告诉 leader 自己存储完毕
6、leader 告诉 producer 自己存储完毕
3.kafka 选择分区模式
1.指定往哪个分区写
2.指定 key,kafka 根据 key 做 hash 然后决定写哪个分区
3.轮询方式
4.生产者往 kafka 发送数据模式(3 种)
1.0
:把数据发给 leader 就成功,不等回复,效率最高,安全性最低
2.1
:把数据发送给 leader,等待 leader 回复 ACK
3.all
:把数据发送给 leader,确保 follower 从 leader 拉取到数据并回复 ACK 给 leader,leader 再回复 ACK;安全性最高
5.kafka为什么快
image-20200129112412411每个 partition 都是一个有序并且不可变的消息记录集合。当有新的数据写入时,就被追加到 partition 的末尾。在每个 partition 中,每条消息都会被分配一个顺序的 唯一标识,这个标识称为 offset,即偏移量。注意,kafka 只保证在同一个partition 内部消息是有序的,在不同 partition 之间,并不保证消息有序。