首页 > 其他 > 详细

kafka

时间:2020-04-14 22:06:07      阅读:77      评论:0      收藏:0      [点我收藏+]

先下载

http://kafka.apache.org/downloads   

技术分享图片

 

技术分享图片
kafka cluster: kafka集群,一台或多 台服务器组成
    Broker: Broker是指部署了Kafka实例的服务器节点。每个服务器.上有-个或多个kafka的实
            例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有  -个不重复的
            编号,如图中的broker-0、broker-1等.....
    Topic: 消息的主题,可以理解为消息的分类,kafka的数据就保存在topic。 在每个broker.上
            都可以创建多个topic。实际应用中通常是一个业务线建一 个topic。
    Partition: Topic的分区, 每个topic可以有多个分区,分区的作用是做负载,提高kafka的吞
            吐量。同一个topic在不同的分区的数据是不重复的,partition的表现形式就是一个一 个的文
            件夹!
    Replication:每一 个分区都有多个副本,副本的作用是做备胎。当主分区(Leader) 故障的
            时候会选择一个备胎(Follower). 上位, 成为Leader。 在kafka中默认副本的最大数量是10
            个,且副本的数量不能大于Broker的数量, follower和leader绝对是 在不同的机器,同一机
            器对同一个分区也只可能存放一个副本(包括自己)。



1. Kafka集群的架构
    1. broker
    2. topic
    3. partition:分区,把同一个topic分成不同的分区,提高负载
    1. leader:分区的主节点(老大)
    2. follower:分区的从节点(小弟)
    4. Consumer Group
kafka集群

生产者往Kafka发送数据的流程(6步)

1.生产者从Kafka集群获取分区leader信息
2.生产者将消息发送给leader
3. leader将消息写入本地磁盘
4. follower从leader拉 取消息数据
5. follower将消息写入本地磁盘后向leader发送ACK
6. leader收到所有的follower的ACK之后向生产者发送ACK

技术分享图片

 

3. Kafka选择分区的模式(3种)
    1.指定往哪个分区写
    2.指定key, kafka根据key做hash然后决定写哪个分区
    3.轮询方式
4.生产者往kafka发送数据的模式(3种)
    1.0:把数据发给leader就成功, 效率最高、安全性最低。
    2.1: 把数据发送给leader,等待leader回ACK
    3. a11 :把数据发给leader确保follower从leader拉取数据回复ack给leader, leader再回复ACK; 安全性最
    高

技术分享图片

 

技术分享图片
每个partition都是一个有序并且不可变的消 息记录集合。当新的数据写入时,就被追加到partition的末
尾。在每个partition中,每条消息都会被分配一个顺序的唯一 标识, 这个标识被称为offset,即偏移
量。注意,Kafka只保证在同一个partition内部消息是有序的,在不同partition之间, 并不能保证消息
有序。
Kafka可以配置一个保留期限,用来标识日志会在Kafka集群内保留多长时间。Kafka集群会保留在保留
期限内所有被发布的消息,不管这些消息是否被消费过。比如保留期限设置为两天,那么数据被发布到
Kafka集群的两天以内,所有的这些数据都可以被消费。当超过两天,这些数据将会被清空,以便为后
续的数据腾出空间。由于Kafka会将数据进行持久化存储(即写入到硬盘上),所以保留的数据大小可
以设置为一个比较大的值。

Partition结构
Partition在服务器上的表现形式就是一个一个的文件夹,每个partition的文件夹 下面会有多组segment
文件,每组segment文件又包含.index文件、( . 1og文件、| . timeindex文件三个文件,其中.1og文
件就是实际存储message的地方,而. index和. timeindex文件为索引文件,用于检索消息。
消费数据
多个消费者实例可以组成一-介消费者组,并用一个标签来标识这个消费者组。一个消费者组中的不同消
费者实例可以运行在不同的进程甚至不同的服务器上。
如果所有的消费者实例都在同一个消费者组中,那么消息记录会被很好的均衡的发送到每个消费者实
例。
如果所有的消费者实例都在不同的消费者组,那么每一条消息记录会被广播到每-一个消 费者实例。
partition

技术分享图片

 

kafka

原文:https://www.cnblogs.com/The-Meaning-of-Life111/p/12700901.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!