12 2015 档案
摘要:purgatory的超时检测当一个DelayedOpeartion超时(timeout)时,它需要被检测出来,然后调用它的回调方法。这个事情看起来很简单,但做好也并不容易。0.8.x的Kafka的实现简单明了,但是效率不高。这些版本的Kafka的delayed request实现了java.util...
阅读全文
摘要:Purgatory是Kafka server中处理请求时使用的一个重要的数据结构。正好研究ReplicaManager源码的时候发现了这篇文章,顺便翻译下。由于这个proposal里的很多东西需要看源码才能理解得比较清楚,但是代码还是比较多的,所以先大概讲一下其中的一些概念和原理,以便于阅读接下来的...
阅读全文
摘要:purgatory就是炼狱的意思。当一个DelayedOperation需要被delay时,它就被放到DelayedOperationPurgatory,相当于进行一个等待池。上一篇blog提到过,DelayedOperation想要摆脱delay状态,需要由事件来触发对它状态的检查,或者是超时时间...
阅读全文
摘要:DelayedOperation包括两种:DelayedFetch和DelayedProduce,它们的存在是由Kafka Protocol决定的,而Kafka Protocol是由实际需求决定的…… 存在DelayedFetch是为了更有效率的fetch,也就是batch fetch;存在Dela
阅读全文
摘要:基于Kafka 0.9.0版ReplicaManager需要做什么Replicated LogsKafka的partition可以看成是一个replicated log, 每个replica就是这个replicated log其中的一个log。多个replica是为了容忍机器故障,因此同一个part...
阅读全文