之前一直是是用MetaQ,虽然知道MetaQ就是Kafka的Java版本。但是一直在公司环境用MetaQ就好了, 因为有专业的团队开发和维护,所以就没必要去折腾Kafka了。
不过出去之后就不同了,所以今天就开始搭建Kafka集群进行练手,同时写一点测试的Demo,测试下Kafka 的Performance。
先说下搭建的过程

1、Kafka依赖Zookeeper,当然如果你是单机环境,它似乎有内嵌的一个Zookeeper,不过我推荐实战中
  还是自己搭建一个Zookeeper集群比较好。至于怎么搭建,可以参考Zookeeper的Apache page。比较
  简单。
2、安装Kafka,可以参见[这里](http://kafka.apache.org/documentation.html#quickstart)
3、需要改的地方,第一个是server.properties里面的broker.id,这个id是你的这个broker在集群中
  的唯一编号。第二个是log.dir,这个也请注意,默认是/tmp目录下。好了,你懂得。这样会让你的数据
  丢掉的。
4、让后就是启动broker,注意一定要用-daemon模式启动

再说下遇到的问题

1、一个非常诡异的问题,其实每个broker启动起来都会把自己的broker.id写到zookeeper中,而且应该
  是一个非持久化节点。让后我用一个脚本ssh到每一台集群去启动所有的broker,诡异的现象出现了。所有
  的broker都启动了,而且日志没有错误。但是broker节点写入到zookeeper竟然是随机个数。也就是有些
  broker没有注册成功~orz...虽然没有看kafka的代码,但是按照经验,这玩意用zk肯定存alive信息的
  没有自然就认为它not alive了。各种诡异之后只好,不用脚本,一个个去启动,然后每个启动完。我还稍微
  Wait一定时间,发现竟然是OK了。好吧,继续修改脚本,在每个动作完成之后sleep 30。我也是醉了啊。
  没有细看代码,但是从个人揣测来看是注册那段代码有bug.多进程操作同一个zookeeper节点有问题~。
  好吧,有空仔细看下代码。
2、在了一个Producer,竟然死活写入不成功。而且也没看到啥异常。而且测试发现我可以拿到topic的partition
  信息,那就说明可以连接上了~。纠结很久以后,想起来。尼玛,每个节点到zookeeper中注册的是域名。
  而我本地的/etc/hosts是识别不了这些域名的。改完之后发现确实ok了。
3、第三点就是性能测试了~。这个后续可以把Consumer这块搞完一起发出来~

done…