Kafka知识点总结

好记性不如赖笔头,通过写博客可以梳理自己的知识,也能够加深记忆,这个只是做了简单的总结,推荐一个更加详细的文章:

http://www.importnew.com/25247.html

1.topic&partition

Topic是用于存储消息的逻辑概念,可以看作一个消息集合。

每个topic可以划分多个分区(每个Topic至少有一个分区),同一topic下的不同分区包含的消息是不同的。每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量),它是消息在此分区中的唯一编号,kafka通过offset保证消息在分区内的顺序,offset的顺序不跨分区,即kafka只保证在同一个分区内的消息是有序的;

Partition是以文件的形式存储在文件系统中,存储在kafka-log目录下,命名规则是:<topic_name>-<partition_id>

2.kafka的高性能

顺序写入写出,提升了吞吐量。

允许批量的消息发送,先将消息缓存到内存中打包一次性的发送,减少了磁盘IO和网络IO

zeroCopy,减少copy过程的无用功


3.日志保留策略

日志是kafka中数据保留的主体,提供了两种数据保留的策略:

按照指定的保留时间进行删除;

按照设置的日志文件阈值删除Old的数据。


4.日志压缩策略

日志中只保留最新的key值对应的value值,类似于redis的AOF重写的机制


5.kafka中的消息副本leader

https://blog.csdn.net/liuao107329/article/details/70213599 点击打开链接



6.kafka消息可靠性机制

1)消息发送的可靠性  

当producer向leader发送数据时,可以通过request.required.acks参数来设置数据可靠性的级别:

  • 1(默认):这意味着producer在ISR中的leader已成功收到的数据并得到确认后发送下一条message。如果leader宕机了,则会丢失数据。
  • 0:这意味着producer无需等待来自broker的确认而继续发送下一批消息。这种情况下数据传输效率最高,但是数据可靠性确是最低的。
  • -1:producer需要等待ISR中的所有follower都确认接收到数据后才算一次发送完成,可靠性最高。但是这样也不能保证数据不丢失,比如当ISR中只有leader时(前面ISR那一节讲到,ISR中的成员由于某些情况会增加也会减少,最少就只剩一个leader),这样就变成了acks=1的情况。可以通过设置min.insync.replicas这个参数设定ISR中的最小副本数是多少,默认值为1,当且仅当为-1时min.insync.replicas才会生效。

2)消息存储的可靠性

kafka为每个topic设置了分区partition,又为每个分区设置了副本,来保障了数据的可靠性和高可用性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值