rocketmq 踩坑和吐槽

2021-01-15 10:54:50 +08:00
 bigpigeon

这 2 个月用下来的体验就是 go 开发者建议还是使用 nsq,没有入坑的别踩这个坑了

阿里的组件还是别碰的好

4661 次点击
所在节点    Linux
25 条回复
fantastM
2021-01-15 11:31:26 +08:00
对于第一点,据我了解,Kafka 中的分区和消费者也是这种设计。这样做的原因估计是在实现上会简单很多吧
hun2008hun
2021-01-15 11:38:48 +08:00
推荐下 pulsar 吧,前三个问题都可以解决。go sdk 不了解,我只用过 java client
ylsc633
2021-01-15 11:51:09 +08:00
go rmq sdk 问题挺多的 当然了,也可能是我菜, 不会用..
ddxx200
2021-01-15 12:10:12 +08:00
我一直用 RocketMQ,不过是 Java 的,没什么问题哈
bigpigeon
2021-01-15 12:14:04 +08:00
@ylsc633 是啊
go sdk 我还遇到 一个 go 进程的 producer 关了,consumer 也不可用
一个进程无法创建多个 consumer 对象,等等问题,如果不是老大拍板,我肯定换回 nsq 了
rnicrosoft
2021-01-15 12:25:22 +08:00
关于第一个,我觉得没啥问题,1 个 topic 下面多个 queue 本身就是实现一种负载均衡了。多个消费者可以扔进一个消费 group 里,不需要去做每个消费者和 queue 之间的绑定,可以按负载随时启动新的消费者实例
young1lin
2021-01-15 12:29:41 +08:00
ons client[doge],用过加 tag 的 topic,不好用。
yzbythesea
2021-01-15 12:33:28 +08:00
@bigpigeon 慢任务下为什么不好做负载均衡?
joesonw
2021-01-15 12:50:28 +08:00
对数据有保障性要求的话还是 rabbitmq 吧. nsq 没 persistence, 每次都落盘的话性能就爆炸了.
duwan
2021-01-15 12:52:19 +08:00
前两点在 kafka 中不也是一样的嘛?
第三点为了生产环境的资源考虑的吧,只有运维人员可以操作,不允许开发人员随意创建 topic,开发环境可以配置自动创建不存在的 topic
后两点不了解
cassyfar
2021-01-15 12:59:35 +08:00
貌似整个 topic management 都不支持。。。阉割版 go client

是不是 go 在阿里是五等公民,没人用,没人做?
bigpigeon
2021-01-15 14:08:17 +08:00
@yzbythesea 恰好有些耗时长的任务丢到某个队列,导致堆积的很长这种情况
我们这边需求是想要一些竞争去取任务方法
no1xsyzy
2021-01-15 14:10:46 +08:00
@young1lin 你触发了我的眼 parse,觉得是用 ons 包管理器安装一个叫做 client 的包,并具有参数 [doge] ……
bigpigeon
2021-01-15 14:11:53 +08:00
@duwan 而且创建 topic 只能发送方创建,我开发环境订阅一个不存在的 topic 直接报错
再说非要运维手动管理也不方便吧,比如调整个 topic queue 的操作都没法自动化
rainfd
2021-01-15 14:34:46 +08:00
@bigpigeon 你订阅一个不存在的 topic 报错这逻辑没啥不对的吧
bigpigeon
2021-01-15 14:38:29 +08:00
@rainfd 所以要 api 啊,在开发的时候方便创建 topic
shuangchengsun
2021-01-15 14:40:45 +08:00
关于第一个点,consumer 只要指定 group 了貌似就没有这个烦恼了吧,再就是 create topic 的事儿,我记得是可以通过配置来实现是否允许自己创建 Topic,只不过一般都是关闭的,一般来说部署的时候都是不允许自己创建 Topic,无论是在什么环境都会是关闭的,不然管理起来会很混乱。在阿里里面,有一个运维平台去创建 Topic,只不过在开发环境做的配置,会随着开发流程的推进,同步到测试环境,集成环境直到生产环境。不过我倒是没有用过 go 的 sdk 。
yukong
2021-01-15 14:55:14 +08:00
1. 用过 kafka 都知道 消费者跟消费者组的区别
2.生成产者的路由规则可以根据 key 与 tag 设置 消费者跟消费者组设置
3. 从运维层面来看 api 创建 topic 跟删除 topic 都是很危险的行为
4. go 的 sdk 没有用过 你可以检查一下是不是官方的 反正 java 可以设置
5. 日志配置 java 配置还是很灵活的 go 不清楚
yukong
2021-01-15 14:56:31 +08:00
关于配置或者日志设置这一方面 可能 go 的 sdk 支持的不是很到位,比较 go 的生态才刚刚起来 要理解一下
TypeError
2021-01-15 15:00:37 +08:00
MQ 选用的人多的,
传统金融业务小吞吐选 RabbitMQ 、大吞吐高性能的选 Kafka

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

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

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

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

© 2021 V2EX