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…
Purgatory是Kafka server中处理请求时使用的一个重要的数据结构.正好研究ReplicaManager源码的时候发现了这篇文章,顺便翻译下.由于这个proposal里的很多东西需要看源码才能理解得比较清楚,但是代码还是比较多的,所以先大概讲一下其中的一些概念和原理,以便于阅读接下来的文章. 1. purgatory是用于缓存一些 delayed request的.这些请求因为一些条件得不到满足,所以需要先放到purgatory里,等到条件满足了,再从里边移出来. 2. 这些req…
1.引子 游戏的灵感萌生于2015年,当时只有一些概念性的设计图. 后来我利用资源商店的素材搭建了最早的原型. 游戏的最终画面: 早期以D.P作为代号进行开发,来源于两个单词的缩写 Devil Prototype. 去年秋季我离开了当时的公司开始全职开发这款游戏,鉴于游戏的体量和一定的情怀原因,我选择了线上开发的形式招募一些队友 在群内发了一些信息以及一阵子磨合后,最终拉拢了3名小伙伴入伙,总共4人. 期间遇到了许许多多的难题,以及若干未解决的问题.但最终仍然发布到了steam商店上(即将解锁)…
0. 关键概念 关键概念 Concepts Function Topic 用于划分Message的逻辑概念,一个Topic可以分布在多个Broker上. Partition 是Kafka中横向扩展和一切并行化的基础,每个Topic都至少被切分为1个Partition. Offset 消息在Partition中的编号,编号顺序不跨Partition(在Partition内有序). Consumer 用于从Broker中取出/消费Message. Producer 用于往Broker中发送/生产Me…
在KafkaServer启动过程的入口中,会启动Replica Manager,众所周知,这是一个副本管理器.replica在Kafka中扮演的角色很重要,是保证消息不丢失的一个重要概念. replica的个人理解概念如下:producer发送的消息给broker,broker是分为多个partition的,对于同一个partition中的broker,这些机器是有主从的概念的.producer只会向leader写入消息,consumer只会从leader读取消息,(leader负责读写,rep…
一.单节点 1.上传Kafka安装包到Linux系统[当前为Centos7]. 2.解压,配置conf/server.property. 2.1配置broker.id 2.2配置log.dirs 2.3配置zookeeper.connect 3.启动Zookeeper集群 备注:zookeeper集群启动时,先启动的节点因节点启动过少而出现not running这种情况,是正常的,把所有节点都启动之后这个情况就会消失! 3.启动Kafka服务 执行:./kafka-server-start.sh…
reference: http://kafka.apache.org/quickstart  http://dblab.xmu.edu.cn/blog/1096-2/ hadoop@iZuf68496ttdogcxs22w6sZ:/usr/local$ sudo tar zvxf /home/hadoop/kafka_2.10-0.10.1.0.tgz  -C  /usr/local/ hadoop@iZuf68496ttdogcxs22w6sZ:/usr/local$ sudo mv kafk…
1.安装zookeeper # 解压缩 [root@localhost zookeeper]# .tar.gz [root@localhost zookeeper]# zk_simple # 复制zoo_simple.cfg到zoo.cfg [root@localhost zookeeper]# cd zk_simple/ [root@localhost zk_simple]# cp conf/zoo_sample.cfg conf/zoo.cfg -R # 启动 [root@localhost…
首先,说明,我kafk的server.properties是 kafka的server.properties配置文件参考示范(图文详解)(多种方式) 问题详情 然后,我启动时,出现如下 [hadoop@master kafka_2.-0.9.0.1]$ nohup bin/kafka-server-start.sh config/server.properties & [] [hadoop@master kafka_2.-0.9.0.1]$ nohup: ignoring input and a…