这 2 个月用下来的体验就是 go 开发者建议还是使用 nsq,没有入坑的别踩这个坑了
阿里的组件还是别碰的好
1
fantastM 2021-01-15 11:31:26 +08:00
对于第一点,据我了解,Kafka 中的分区和消费者也是这种设计。这样做的原因估计是在实现上会简单很多吧
|
2
hun2008hun 2021-01-15 11:38:48 +08:00
推荐下 pulsar 吧,前三个问题都可以解决。go sdk 不了解,我只用过 java client
|
3
ylsc633 2021-01-15 11:51:09 +08:00
go rmq sdk 问题挺多的 当然了,也可能是我菜, 不会用..
|
4
ddxx200 2021-01-15 12:10:12 +08:00
我一直用 RocketMQ,不过是 Java 的,没什么问题哈
|
5
bigpigeon OP @ylsc633 是啊
go sdk 我还遇到 一个 go 进程的 producer 关了,consumer 也不可用 一个进程无法创建多个 consumer 对象,等等问题,如果不是老大拍板,我肯定换回 nsq 了 |
6
rnicrosoft 2021-01-15 12:25:22 +08:00 via Android
关于第一个,我觉得没啥问题,1 个 topic 下面多个 queue 本身就是实现一种负载均衡了。多个消费者可以扔进一个消费 group 里,不需要去做每个消费者和 queue 之间的绑定,可以按负载随时启动新的消费者实例
|
7
young1lin 2021-01-15 12:29:41 +08:00 via Android
ons client[doge],用过加 tag 的 topic,不好用。
|
8
yzbythesea 2021-01-15 12:33:28 +08:00
@bigpigeon 慢任务下为什么不好做负载均衡?
|
9
joesonw 2021-01-15 12:50:28 +08:00
对数据有保障性要求的话还是 rabbitmq 吧. nsq 没 persistence, 每次都落盘的话性能就爆炸了.
|
10
duwan 2021-01-15 12:52:19 +08:00
前两点在 kafka 中不也是一样的嘛?
第三点为了生产环境的资源考虑的吧,只有运维人员可以操作,不允许开发人员随意创建 topic,开发环境可以配置自动创建不存在的 topic 后两点不了解 |
11
cassyfar 2021-01-15 12:59:35 +08:00
貌似整个 topic management 都不支持。。。阉割版 go client
是不是 go 在阿里是五等公民,没人用,没人做? |
12
bigpigeon OP @yzbythesea 恰好有些耗时长的任务丢到某个队列,导致堆积的很长这种情况
我们这边需求是想要一些竞争去取任务方法 |
13
no1xsyzy 2021-01-15 14:10:46 +08:00
@young1lin 你触发了我的眼 parse,觉得是用 ons 包管理器安装一个叫做 client 的包,并具有参数 [doge] ……
|
14
bigpigeon OP @duwan 而且创建 topic 只能发送方创建,我开发环境订阅一个不存在的 topic 直接报错
再说非要运维手动管理也不方便吧,比如调整个 topic queue 的操作都没法自动化 |
17
shuangchengsun 2021-01-15 14:40:45 +08:00
关于第一个点,consumer 只要指定 group 了貌似就没有这个烦恼了吧,再就是 create topic 的事儿,我记得是可以通过配置来实现是否允许自己创建 Topic,只不过一般都是关闭的,一般来说部署的时候都是不允许自己创建 Topic,无论是在什么环境都会是关闭的,不然管理起来会很混乱。在阿里里面,有一个运维平台去创建 Topic,只不过在开发环境做的配置,会随着开发流程的推进,同步到测试环境,集成环境直到生产环境。不过我倒是没有用过 go 的 sdk 。
|
18
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 不清楚 |
19
yukong 2021-01-15 14:56:31 +08:00
关于配置或者日志设置这一方面 可能 go 的 sdk 支持的不是很到位,比较 go 的生态才刚刚起来 要理解一下
|
20
TypeError 2021-01-15 15:00:37 +08:00
MQ 选用的人多的,
传统金融业务小吞吐选 RabbitMQ 、大吞吐高性能的选 Kafka |
21
bigpigeon OP @shuangchengsun 不同的 group 消息是互相独立的,也就是说一条消息在 2 个组会分别被消费一次,相当于 redis 的 pub sub,我们的需求是消费消息的负载均衡
|
22
bigpigeon OP @yukong 特别是文档方面的,rocketmq 的文档写的感觉也很简单,特别是 go sdk 的文档,基本等于没有,全靠阅读源码找用法
还有就是 rocketmq 的容器化部署也不方便 日志还是默认打到文件里面而不是 stdout 而且 dashboard 是第三方的,还得自己想办法构造 Docker image 相比之下 nsq 这方面就做的好很多 |
23
YouLMAO 2021-01-18 16:15:42 +08:00
kpi 3.25
|
24
cominghome 2021-01-22 17:28:28 +08:00
凑合用吧,毕竟 KPI 产物,文档写得鬼一样
|
25
bthulu 2021-07-03 10:29:07 +08:00
@hun2008hun pulsar 的 java client 太大了, 加上它自身的依赖, 高达 36.1M. 我本身项目其余所有依赖加起来都没这家伙大, 不知道 pulsar 在搞什么
|