Kafka 的实现原理

2017-05-03 11:17:59 +08:00
 lml12377

最近在用 kafka 实在有点懵逼

之前用的是 https://github.com/weiboad/kafka-php 一直用的 0.1.x 版本,今天发现升级到了 0.2.x 版本,之前一直作为 producer 推送没有任何问题,但是 comsumer 消费一直提示 timeout,errcode -7。

一直不太明白 kafka 的实现原理,时间也不允许慢慢抠,有没有大哥帮忙稍微讲解一下~

4091 次点击
所在节点    Kafka
7 条回复
lovedebug
2017-05-03 11:33:09 +08:00
kafka 的官方文档十分的详细,已经到发指了。另外不想看英文的网上有很多中文版的文档啊。
kafka 可以视作中间件,消息队列,客户端,服务端,完全看你怎么用。
zookeeper 用于分布式管理的。
lml12377
2017-05-03 11:43:37 +08:00
@lovedebug 上面那个 git,0.1.x 版本消费者是强制装 zookeeper.so 扩展的,这个扩展是什么目的啊? zk 不是用来给 kafka server 做负载的吗?为啥我客户端还要装这个扩展啊? kafka 不是基于 tcp 连接的吗,那我 socket 能连上去原则上就能用了啊
billlee
2017-05-03 12:40:25 +08:00
kafka 的 comsumer 比较复杂,有 group/partition 等概念,如果挂了需要重新分发消息什么的,需要要维护状态,依赖 zookeeper.
Producer 就简单多了,挂了就挂吧,又不影响其他组件。
k9982874
2017-05-03 13:13:05 +08:00
印象中 zookeeper 好像是用来在 leader 挂掉以后选举新 leader 时用
sampeng
2017-05-03 13:17:20 +08:00
1.zk 不用理解太复杂,理解成一个云里的配置文件就好。这个配置文件发生任何变化,所有观察者都马上能知道。其他的什么分配原理,如果有时间再去深入即可。
2.答案是是。但是和 zk 配合后就不是传统 cs 的概念,是一个无中心系统。任何一个节点都能提供服务。至于怎么发现的,通过 zk。php 连上的后的角色是看你做什么,不是简单的概念,你要拉,你就是 comsumer。你要推,就是 producer。
3.librdkakfa 应该是 native 写的扩展。php 没有扩展就不能做 socket 操作了?只是没长连接而已。。。。
lovedebug
2017-05-03 14:25:38 +08:00
@lml12377 zk 的配置很复杂,建议看 kafka 的文档,里面有推荐配置还有解释,比我说的要权威多了。
Fishdrowned
2017-05-03 22:54:39 +08:00
kafka consumer 0.8 和 0.9 不兼容。如果你服务端是 0.8 那只能用 weiboad/kafka-php 0.1.x。

librdkafka 0.3 以上才支付 php7。

版本兼容,这个到处都充满恶意的世界

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358739

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX