之前分享了一个英文版的变化,一直没时间去翻译,今天上了下kafka的官网发现0.8的代码能下载了,更值得关注的是0.8的相关文档也更新上来了,上面的一些变化还是很可喜的,说明这套系统还是有很大的利用价值的。
最重要的一个变化体现在一张图上:
还记得之前kafka0.7版本的时候这张图的样子么:
箭头的指向不同了,之前版本的kafka的consumer只支持pull的模式来抓取数据,而现在在consumer端的数据获取方式改变了,可以支持push的方式了。这个改变是不是更贴近了现在一些主流的消息系统。另外,Consumer已经支持”long poll”这种方式,这种方式的好处就是减少了不必要的轮询,使得端到端的数据传输更快捷。
对consumer的更新比较突出,特别是0.7版本,需要根据partition和offset获取数据都只能使用low level的api,而在0.8版本中都支持了high level的API了,这样使得编程就更加方便了。不变的是,consumer还是采用consumer group的方式来同时支持queue和publish-subscribe两种方式。每个partition每次只允许一个consumer消费来确保消费的顺序性。
Partitions可以有独立的副本了,这使得之前在服务器宕机情况下,partition丢失的情况不在发生,这些通过配置replication factor进行调整。
更多的内容可参考kafka官网关于0.8版本的叙述。之前的文章都是在0.7x版本上写的,所以如果你要按照之前文章进行参考学习的话请下载0.7x的版本。之后kafka所有的文章都会按照0.8版本的新内容来更新。