kafka 非常非常非常难用

2020-03-25 20:44:50 +08:00
 fumeboy

// 如果我说它不好,应该会有大佬走出来告诉我它应该怎么用,嗯!

我通过 docker 在本地部署 kafka,之后在容器内部用 console-producer 和 console-consumer 脚本试了一下,功能是正常的,但容器外使用 golang 程序( sarama )连接却无法成功

zookeeper 中的注册信息是这样的:

get /brokers/ids/1001

{"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://localhost:9092"],"jmx_port":-1,"host":"localhost","timestamp":"1585138788130","port":9092,"version":4}

docker 部署时使用的参数是:

KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_CREATE_TOPICS: "test:1:2"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

kafka 版本 2.4.0, zookeeper 版本 3.4.13

sarama 反馈信息:“kafka: client has run out of available brokers to talk to (Is your cluster reachable?)”

sarama log:

[sarama] 2020/03/25 20:41:02 client/metadata fetching metadata for all topics from broker 127.0.0.1:9092
[sarama] 2020/03/25 20:41:02 Connected to broker at 127.0.0.1:9092 (unregistered)
[sarama] 2020/03/25 20:41:02 client/metadata got error from broker -1 while fetching metadata: read tcp 127.0.0.1:52260->127.0.0.1:9092: read: connection reset by peer
[sarama] 2020/03/25 20:41:02 Closed connection to broker 127.0.0.1:9092
[sarama] 2020/03/25 20:41:02 client/metadata no available broker to send metadata request to
[sarama] 2020/03/25 20:41:02 client/brokers resurrecting 1 dead seed brokers
[sarama] 2020/03/25 20:41:02 Closing Client
kafka: client has run out of available brokers to talk to (Is your cluster reachable?)

7461 次点击
所在节点    Kafka
16 条回复
ysjiang4869
2020-03-26 00:09:06 +08:00
advwrtised host name,去查一下,仅仅因为配置不了解就说难用,也太张口就来了
nvkou
2020-03-26 01:14:21 +08:00
此 localhost 非彼 local host ?
ysmood
2020-03-26 01:46:47 +08:00
我觉是单纯只是设计上不友好,一般系统默认配置就能跑示例代码,而 kafka 非要设置额外的东西。而且在 docker 里还容易泄漏 pid 的 lock 文件。
所以我做了个 image 来处理这些琐碎的事,感兴趣可以试试 https://github.com/ysmood/kafka-image

这里注释了为什么我们要这样做 https://github.com/ysmood/kafka-image/blob/e58ee2c466890ba2d86d82a25def0d6828faa382/cmd/run/main.go#L24
vindurriel
2020-03-26 04:36:55 +08:00
这里介绍了一种方法 开两个 listeners 以及为什么要这样做 rmoff.net/2018/08/02/kafka-listeners-explained/
jiezhi
2020-03-26 07:20:43 +08:00
小伙子真会问问题,激发了程序员不服的心理,马上好多人过来教你。
noqwerty
2020-03-26 07:39:57 +08:00
@jiezhi 类似那种“1k 以下的耳机都只能听个响,不服来辩”的贴子😂
ArtIsPatrick
2020-03-26 08:06:10 +08:00
有勇气,就算我觉得难用,我也不敢来发帖。。。
locoz
2020-03-26 08:21:12 +08:00
好好好,对对对。下一个。
huiyifyj
2020-03-26 08:49:47 +08:00
@ArtIsPatrick #7
+1 。是的呢,即使某些项目再难使用,文档再简陋,都不好意思发帖 bb,因为不清楚会引来多少程序员的不服和反驳😂。
PS: 个人觉得程序员最喜欢去反驳别人的观点,虽然我也是程序员
yianing
2020-03-26 11:12:29 +08:00
东西是好东西,难用也是真的😂
rrfeng
2020-03-26 11:32:22 +08:00
虽然楼主这个问题有点简单,但是 kafka 是真的难维护。
STRRL
2020-03-26 11:35:25 +08:00
你正好踩到了在 docker 里跑 kafka 的一个坑, 参考下这个吧

https://github.com/wurstmeister/kafka-docker/wiki/Connectivity

在用一个轮子之前请确保理解了这个轮子, 要不然很容易犯错的
Mrpasserby
2020-03-26 12:44:21 +08:00
+1,难用的一笔,完全是 Java 工程师岗位创造机器
whisky221
2020-03-26 12:52:48 +08:00
@jiezhi 笑死,让我想起了
“3000 预算,不知道买什么耳机,就去发帖 ‘ 3000 已下的耳机听个响 ’ ,然后有一堆人不服来安利’”的梗

然后收到回复“一万以下听个响”
Vegetable
2020-03-26 12:56:32 +08:00
网上得到问题答案的最好办法不是虚心请教,而是发布一个错误的答案等大佬来反驳。
julyclyde
2020-03-26 17:59:29 +08:00
说白了这不都怪你用 docker 么
跟 kafka 有啥关系?

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

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

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

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

© 2021 V2EX