现在有很多云服务供应商,比如AWS、阿里云,提供消息队列服务。我一直有个困惑,所以就去提问了,有几个回复很不错。

Q:
首先,大家使用消息队列的原因有很多,其中一个常见的原因是稍后处理耗时任务,比如发邮件,短信等。这个是很基本的,就不多说了。
那么,这个处理的核心是,快速把任务加入到队列里, 比如保存在 mysql 或者 redis,缩短用户的响应时间,然后快速把 response返回给用户。
所以,快速,就是关键。毕竟发送邮件需要好几百 ms,写入到 redis 也许 10ms 就够了。但现在很多云服务推出消息队列的功能,我猜测,你要调用 他们的api 的,这个 api 肯定是 http 请求啊,这个请求会很耗时吧。这样使用一个云端消息队列有何意义呢?和在 localhost 或者内网搭建消息队列相比,云服务的消息队列有什么更值得使用的理由?

网友回复摘要:

  • 即便是 HTTP,也可以是毫秒级的,再加上批量处理,吞吐量也可以用
  • 如果用阿里云的服务,通常就是面向阿里编程,部署的服务往往也在阿里里面,通过内网连接服务,吞吐量和速度还可以。
  • 另外,要是你每年给阿里几十万或更多,会有专门的 agent 和你联系。你可以选择微信 :) 。打算加机器,不会用,出现各种相关问题都可以在线喊人,对方会帮你联系他们的团队调度。
  • 如果你用的是云服务的主机,那没道理自己买机器搭 MQ。买云服务的 MQ 在量少的时候更便宜,在量大的时候更稳定,还可以省掉一份运维工资。至于延迟,都在一个机房的,和你的内网速度一样。
  • 使用过云端消息队列,如果是内网(即和主服务器同区) http 也很稳定,速度基本和自建没差别。如果是跨区,速度其实可以接受,但是有一定几率请求失败(低于千分之一),要 2 次请求。
  • 并发量高 延迟也不是那么重要吧 单线程要等上一个请求返回 可以用多线程 协程之类的呗

标签: 消息队列

添加新评论