Purgatory是Kafka server中处理请求时使用的一个重要的数据结构.正好研究ReplicaManager源码的时候发现了这篇文章,顺便翻译下.由于这个proposal里的很多东西需要看源码才能理解得比较清楚,但是代码还是比较多的,所以先大概讲一下其中的一些概念和原理,以便于阅读接下来的文章. 1. purgatory是用于缓存一些 delayed request的.这些请求因为一些条件得不到满足,所以需要先放到purgatory里,等到条件满足了,再从里边移出来. 2. 这些req…
kafka 权威指南中文版 问题导读 1. 为什么数据管道是数据驱动企业的一个关键组成部分? 2. 发布/订阅消息的概念及其重要性是什么? 第一章 初识 kafka 企业是由数据驱动的.我们获取信息,分析它,处理它,并创造更多的产出.每一个应用程序都会产生数据,无论是日志消息.指标.用户行为.输出报文或者其他类型.每一个字节的数据都有它的作用,传入的数据会告诉接下来需要做什么.为了知道数据的意义,我们需要把数据从它产生的地方,传输到它能够被分析的地方.然后把分析的结果返回到它们能够被执行的地方.…
purgatory的超时检测 当一个DelayedOpeartion超时(timeout)时,它需要被检测出来,然后调用它的回调方法.这个事情看起来很简单,但做好也并不容易. 0.8.x的Kafka的实现简单明了,但是效率不高.这些版本的Kafka的delayed request实现了java.util.concurrent.DelayQueue要求的DelayedItem接口.这些请求被放个DelayQueue, 然后有一个专门的线程从DelayQueue里poll这些请求出来,所以被poll…
purgatory就是炼狱的意思. 当一个DelayedOperation需要被delay时,它就被放到DelayedOperationPurgatory,相当于进行一个等待池.上一篇blog提到过,DelayedOperation想要摆脱delay状态,需要由事件来触发对它状态的检查,或者是超时时间到了. 这个逻辑看起来挺简单,但高效实现却挺复杂.0.9.0版本的Kafka重新设计了这个purgatory(相比0.8版本),设计思路在Kafka的这篇文档Purgatory Redesign P…
转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容集中在底层原理和架构上,属于理论知识范畴.这次我们站在应用和运维的角度,聊一聊集群到位后要怎么才能最好的配置参数和进行测试性能.Kafka的配置详尽且复杂,想要进行全面的性能调优需要掌握大量信息,我也只是通过工作中的一些实战经验来筛选出对集群性能影响最大的几个要点,接下来要阐述的观点也仅限于我所描述…
前一篇Kafka框架设计来自英文原文(Kafka Architecture Design)的翻译及整理文章,非常有借鉴性,本文是从一个企业使用Kafka框架的角度来记录及整理的Kafka框架的技术资料,也非常有借鉴价值,为了便于阅读与分享,我将其整理一篇Blog. 本文内容文件夹摘要例如以下: 1)apache kafka消息服务 2)kafka在zookeeper中存储结构 3)kafka log4j配置 4)kafka replication设计机制 5)apache kafka监控系列-监…
Kafka是一个分布式的消息队列,学习见Apache Kafka文档,中文翻译见Kafka分享,一个简单的入门例子见kafka代码入门实例.本文只针对自己感兴趣的点记录下. 1.架构 Producer/Consumer:消息的生成者和使用者. Broker:kafka server充当broker角色,起到消息队列的作用. topic/partion:topic是一类消息的名称,一个topic下的消息可以分成多区(partion)存储,一个分区是一个有序队列(消息按接收时间依次追加,利用offs…
首先kafka的throughput 很牛逼,参考:http://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines   接着主要谈一下,Kafka的可靠性问题,有哪些机会可能丢数据? 从producer,broker,consumer的角度,分别看看 a. Producer到broker     把request.required.acks设为…
apache kafka在数据处理中特别是日志和消息的处理上会有很多出色的表现,这里写个索引,关于kafka的文章暂时就更新到这里,最近利用空闲时间在对 kafka做一些功能性增强,并java化,虽然现在已经有很多这样的版本,但是根据实际需求来改变才是最适合的. 首先当然推荐的是kafka的官网 http://kafka.apache.org/ 在官网最值得参考的文章就是kafka design:http://kafka.apache.org/design.html,我的文章也基本都是参照这里的…
转自:http://blog.csdn.net/chunlongyu/article/details/52791874 单线程的consumer 在前面我们讲过,KafkaProducer是线程安全的,同时其内部还有一个Sender,开了一个后台线程,不断从队列中取消息进行发送. 而consumer,是一个纯粹的单线程程序,后面所讲的所有机制,包括coordinator,rebalance, heartbeat等,都是在这个单线程的poll函数里面完成的.也因此,在consumer的代码内部,没…