请教各位,一个关于云端消息队列的疑惑

2019-07-17 05:02:55 +08:00
 ericgui

首先,大家使用消息队列的原因有很多,其中一个常见的原因是稍后处理耗时任务,比如发邮件,短信等。这个是很基本的,就不多说了。

那么,这个处理的核心是,快速把任务加入到队列里, 比如保存在 mysql 或者 redis,缩短用户的响应时间,然后快速把 response 返回给用户。

所以,快速,就是关键。毕竟发送邮件需要好几百 ms,写入到 redis 也许 10ms 就够了。

但现在很多云服务推出消息队列的功能,我还没用过。

我猜测,你要调用 api 的,这个 api 肯定是 http 请求啊,这个请求会很耗时吧。这样使用一个云端消息队列有何意义呢?

请指教,谢谢。

1848 次点击
所在节点    程序员
16 条回复
yuikns
2019-07-17 05:11:31 +08:00
1. 快速是指标,执行并只执行一次才是关键。
2. “这个 api 肯定是 http 请求啊”,API==HTTP 这个 assertion 第一次听说。
3. 快慢都是相对的。
ericgui
2019-07-17 05:30:46 +08:00
@yuikns 我说的是调用云服务消息队列这个服务的 api,难道不是 http 吗?
izoabr
2019-07-17 05:42:43 +08:00
不是走 AMQP 的么?
yuikns
2019-07-17 05:57:04 +08:00
首先,https://help.aliyun.com/document_detail/29532.html 可以不
其次,即便是 HTTP,也可以是毫秒级的,再加上批量处理,吞吐量也可以用
最后,这个主要是共享运维开销和 scale out。比如开始某个小团队每天调用几千次,后来增加三四个数量级,都有一个服务帮忙兜底。
理论上和自己准备队列相比,可以少养一帮运维团队,以及出大事可以甩锅分担风险。这是银行总是用 MS,以及很多公司订阅 RH 的原因。不过实际上对方可能就把你交的钱给退了,公司还是会死。
yuikns
2019-07-17 06:01:04 +08:00
@yuikns 另外,如果用阿里云的服务,通常就是面向阿里编程,部署的服务往往也在阿里里面,通过内网连接服务,吞吐量和速度还可以。
yuikns
2019-07-17 06:08:18 +08:00
另外,要是你每年给阿里几十万或更多,会有专门的 agent 和你联系。你可以选择微信 :) 。打算加机器,不会用,出现各种相关问题都可以在线喊人,对方会帮你联系他们的团队调度。
ericgui
2019-07-17 06:14:38 +08:00
@yuikns 早说嘛,“加钱,世界触手可及”,这个我懂

哈哈

感谢高人赐教!
binux
2019-07-17 06:50:16 +08:00
返回延迟和吞吐量是两回事,即使延迟会增大,但是吞吐量是可以水平拓展的。
jadec0der
2019-07-17 08:31:21 +08:00
如果你用的是云服务的主机,那没道理自己买机器搭 MQ。买云服务的 MQ 在量少的时候更便宜,在量大的时候更稳定,还可以省掉一份运维工资。至于延迟,都在一个机房的,和你的内网速度一样。
lhx2008
2019-07-17 08:33:56 +08:00
他们只是帮你开个 VPS,装个 Redis 而已,别想太多了。根本不是中心式的。
www5070504
2019-07-17 09:11:59 +08:00
并发量高 延迟也不是那么重要吧 单线程要等上一个请求返回 可以用多线程 协程之类的呗
ericgui
2019-07-17 09:22:15 +08:00
@www5070504 有道理
ericgui
2019-07-17 09:22:24 +08:00
@jadec0der 有道理
okwork
2019-07-17 09:23:23 +08:00
使用过云端消息队列,如果是内网(即和主服务器同区) http 也很稳定,速度基本和自建没差别。如果是跨区,速度其实可以接受,但是有一定几率请求失败(低于千分之一),要 2 次请求。
ericgui
2019-07-17 09:25:19 +08:00
@okwork 感谢分享
flowfire
2019-07-17 10:41:46 +08:00
没太懂。。。
意思是加到队列里,还没执行就给一个执行成功的回调然后再后面有时间再执行吗
这样真的不会给调用者带来困扰吗。。。

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

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

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

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

© 2021 V2EX