Kafka 就这么点东西,不难,直接拿走
Posted 香菜聊游戏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka 就这么点东西,不难,直接拿走相关的知识,希望对你有一定的参考价值。
1、单机和集群的区别
这个问题其实很简单,唯一的区别就是一个和多个的关系,
集群的情况下只要连接到同一个zookeeper,并且每个的brokerId 唯一
2、partition分配策略
partition是物理上的概念,每个topic包含一个或多个partition。kafka分配的单位是partition
partition和topic的关系就像高速公路的车道和高速公路的关系一样,起始点和终点相同,每个车道都可以独立实现运输,不同的是kafka中不存在车辆变道的说法,入口时选择的车道需要从一而终。而kafka的吞吐量显而易见,在资源足够的情况下,partition越多速度越快。
我们可以粗略地通过吞吐量来计算kafka集群的分区数量。假设对于单个partition,producer端的可达吞吐量为p,Consumer端的可达吞吐量为c,期望的目标吞吐量为t,那么集群所需要的partition数量至少为partition数=max(t/p,t/c)。在producer端,单个分区的吞吐量大小会受到批量大小、数据压缩方法、 确认类型(同步/异步)、复制因子等配置参数的影响。经过测试,在producer端,单个partition的吞吐量通常是在10MB/s左右。在consumer端,单个partition的吞吐量依赖于consumer端每个消息的应用逻辑处理速度。因此,我们需要对consumer端的吞吐量进行测量
3、副本的分配策略:
- 将所有 broker(假设共 n 个 broker)和待分配的 partition 排序
- 将第 i 个 partition 分配到第(i mod n)个 broker 上
- 将第 i 个 partition 的第 j 个 replica 分配到第((i + j) mode n)个 broker上
4、副本复制逻辑
副本是针对一分区而言的,一个分区可以有多个副本。每个分区有一个leader,零或多个follower。Leader处理此分区的所有的读写请求,而follower被动的复制数据。如果leader宕机,其它的一个follower会被推举为新的leader。 一台服务器可能同时是一个分区的leader,另一个分区的follower。 这样可以平衡负载,避免所有的请求都只让一台或者某几台服务器处理
5、kafka消息保存时间
保留7天,kafka可以配置。默认7天,消息积压有处理。
6、动态修改partition数量
动态修改 partition
./bin/kafka-topics.sh --zookeeper 10.0.210.152:2181 --alter --topic test --partitions 6
注意:分区数量只能增加不能减少,自身 也是副本
Kafka 分区数据不支持减少是由很多原因的,比如减少的分区其数据放到哪里去?是删除,还是保留?删除的话,那么这些没消费的消息不就丢了。如果保留这些消息如何放到其他分区里面?追加到其他分区后面的话那么就破坏了 Kafka 单个分区的有序性。如果要保证删除分区数据插入到其他分区保证有序性,那么实现起来逻辑就会非常复杂。
7、kafka消费者和分区的关系
在Kafka消费组中,要求消费者组中的消费者实例个数不能超过分区的数量,否则会出现部分消费者闲置的情况发生。所以当我们增加消费者数量时,对应可能需要调整分区数量。
在kafka集群中,每一个broker都有均等 分配partition的learder的机会,kafka是先随机挑选一个broker放置分区0,然后在按顺序放置其他分区,副本也是一样的情况。第一个放置的分区副本一般都是leader,其余的都 是follower
8、kafka 的注意点
由于是批量发送,数据并非真正的实时;
9、kafka制定offset如何找到消息
通过index文件快速定位到消费的位置:
第一步:通过二分查找发定位到.index文件
第二步:扫描index文件,找到数据在.log文件中具体的物理偏移量
10、__consumer_offsets 的作用
它是一个内部主题,无需手动干预,由 Kafka 自行管理。当然,我们可以创建该主题。
它的主要作用是负责注册消费者以及保存位移值。可能你对保存位移值的功能很熟悉, 但其实该主题也是保存消费者元数据的地方。千万记得把这一点也回答上。另外,这里 的消费者泛指消费者组和独立消费者,而不仅仅是消费者组。
Kafka 的 GroupCoordinator 组件提供对该主题完整的管理功能,包括该主题的创建、 写入、读取和 Leader 维护等。
经验总结,如果对你有用,记得点赞,称赞别人是一种美德
以上是关于Kafka 就这么点东西,不难,直接拿走的主要内容,如果未能解决你的问题,请参考以下文章