kafka那些事
Crazy丶Mark
这个作者很懒,什么都没留下…
展开
-
Topic和Partition
Topic是一个逻辑上的概念,可以看成是一类消息的聚合。从物理上来说,一个Topic是由分散在各个服务节点上的Partition组成的,每个Topic可以有多个Producer向他发送消息,也可以有多个Consumer消费其中的消息。如图所示,一个Topic是由分散在多台broker上的Pratition组成的,多台Produer按照一定的算法把消息发送给各个Partition上,cons...原创 2018-09-14 08:59:11 · 3038 阅读 · 0 评论 -
kafka的分区分配策略
分区在集群中的分配策略将所有broker(n个)和partition排序将第i个Partition分配到第(i mode n)个broker上Producer如何把消息发送给对应分区当key为空时,消息随机发送到各个分区(各个版本会有不同,有的是采用轮询的方式,有的是随机,有的是一定时间内只发送给固定partition,隔一段时间后随机换一个)用key的ha’sh值对pa...原创 2018-09-14 09:15:38 · 21658 阅读 · 5 评论 -
kafka的offset
offset是什么?每一条消息在进入partition的时候都会为其分配一个编号,这个编号被称为offset,offset是一个64位long类型的,是递增的,在partition中,offset是唯一存在的,kafka能够保证在同一个partition中消息是有序的offset维护在哪里?kafka提供了一个__consumer_offsets的一个Topic,offset信息会写入...原创 2018-09-14 09:20:43 · 1061 阅读 · 0 评论 -
kafka的消息存储
消息的保存路径:默认情况下是保存在 /temp/kafka-log中存储方式使用日志文件+索引的方式消息写入使用了顺序写入和零拷贝来提升写入性能,consumer和producer都是使用的二进制数据,避免了格式的转化日志的分片当日志文件过大的时候,会严重影响性能,于是当日志文件达到一定的大小的时候会对日志文件进行分片,这个大小默认是1GB,可以通过 long.seg...原创 2018-09-14 09:24:50 · 3429 阅读 · 2 评论 -
kafka的副本机制
partition的副本被称为replica,每个分区可以有多个副本,并且在副本集中会存在一个leader副本,所有的读写请求都会通过leader完成,follower复制只负责备份数据。副本会均匀分配到多台broker上,当leader节点挂掉之后,会从副本集中重新选出一个副本作为leader继续提供服务副本分配算法:n个broker 将第i个partition的第j个副本分配...原创 2018-09-14 09:29:54 · 9111 阅读 · 2 评论 -
kafka消息的批量发送
生产者发送多个消息到同一个分区的时候,为了减少网络带来的系能开销,kafka会对消息进行批量发送batch.size 通过这个参数来设置批量提交的数据大小,默认是16k,当积压的消息达到这个值的时候就会统一发送(发往同一分区的消息) linger.ms 这个设置是为发送设置一定是延迟来收集更多的消息,默认大小是0ms(就是有消息就立即发送)当这两个参数同时设置的时候,只要两个条件中满...原创 2018-09-14 09:31:33 · 29694 阅读 · 3 评论