kafka知识小结

本文介绍了Kafka的分区数量为何只能增加不能减少,涉及消息可靠性、顺序性等问题。接着讲解了Kafka的三种ACK机制,平衡持久性和延迟。最后讨论了Kafka不支持读写分离的原因,主要考虑到操作型业务的延迟敏感性、数据丢失风险和已有的流量分摊机制。
摘要由CSDN通过智能技术生成
1.为什么分区数只能增加,不能减少?

按照Kafka现有的代码逻辑而言,此功能完全可以实现,不过也会使得代码的复杂度急剧增大。

另外实现此功能需要考虑的因素很多,比如删除掉的分区中的消息该作何处理?

  • 如果随着分区一起消失则消息的可靠性得不到保障;

  • 如果需要保留则又需要考虑如何保留,直接存储到现有分区的尾部,消息的时间戳就不会递增,如此对于Spark、Flink这类需要消息时间戳(事件时间)的组件将会受到影响;

  • 如果分散插入到现有的分区中,那么在消息量很大的时候,内部的数据复制会占用很大的资源,而且在复制期间,此主题的可用性又如何得到保障?

  • 同时,顺序性问题、事务性问题、以及分区和副本的状态机切换问题都是不得不面对的。

由此可知这个功能的收益点是很低的,如果真的需要实现此类的功能,完全可以重新创建一个分区数较小的主题,然后将现有主题中的消息按照既定的逻辑复制过去即可。

2、Kafka的ack机制

kafka的ack机制有3种:0,1,-1;这3种会围绕持久性和延时性来比较

  • 0:最差的持久性,最低的延时性

这一操作提供了一个最低的延迟,partition的leader副本接收到消息还没有写入磁盘就已经返回ack,当leader故障时有可能丢失数据

例如leader已经死亡,producer不知情,还会继续发送消息broker接收不到数据就会数据丢失

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值