现在公司系统在做微服务化,很多人在设计服务间通信时都会想到用MQ,然而有些人居然说不清楚为啥要用MQ?

其实用它主要是两点考虑:

1、应用解耦:两个服务间通过MQ通信,可以不用完全知道对方的存在,实现多生产者、多消费者通讯。比如用户服务在有增、删、改时将通知发给MQ,其它关心用户变更的服务订阅MQ这个通知即可,用户服务不用关心要向哪些服务发送变更通知,其它服务也不用关心向哪个用户服务实例获取通知。

2、流量削峰:将用户或其它服务的请求放到MQ中,服务在有处理能力时从MQ队列中取出处理,然后根据需要再将结果通知放到MQ中,关心处理结果的服务订阅这个通知即可。比如我们在很多应用中都有接受手机验证码的场景(60s后才能重新获取新的验证码),就是用户发送验证请求后,主服务将要验证的请求写入MQ然后立即返回,验证码服务从MQ中取出验证请求处理给用户发送验证码。这样处理更稳定也能应对大并发的问题,否则如果用户收到验证请求都发完验证码再返回的话就会阻塞过程中其它用户的验证请求,或者用户收到验证请求新建一个线程发送验证码的话在大并发时会遇到创建线程数有限的瓶颈。

最新文章

  1. LINUX最大线程数及最大进程数
  2. linkedin开源的kafka-monitor安装文档
  3. 制作rpm包步骤
  4. lgy -oracle
  5. CentOS 6.5升级Python和安装IPython(亲测可用)
  6. webDriver中的alert
  7. MSM8909平台 LED背光的控制
  8. POJ 2431 Expedition(探险)
  9. js webstorm用法
  10. 【转】winform退出代码:Application.Exit和Environment.Exit(0)
  11. MEF 编程指南(十):重组
  12. Compiling aSmack
  13. as。 对象和数组
  14. 模仿TMALL搜索,下拉提示 优化 用户keypress停顿200毫秒间隔时,在执行异步取数据操作 通过underscore的函数debounce来实现
  15. http://riddle.arthurluk.net walkthrough
  16. 获取TBitMap图像缓冲区,提高图像处理速度
  17. Egret 学习之 从HelloWorld项目开始 (二)
  18. php 引用一点要小心使用
  19. Objective-C 编码风格指南
  20. ecshop PC版本智能跳转到对应手机版页面

热门文章

  1. tomcat8w.exe 运行 提示 指定的服务未安装 unable to open the service 'tomcat8'
  2. 基础最短路(模板 dijkstra)
  3. 查询(sqlSuger)
  4. WinForm窗体下Excel的导入
  5. vue input框数字后保留两位小数正则
  6. UVALIve 5987 素数
  7. POJ 2263 最短路Floyd_warshall算法
  8. learning uboot part command
  9. SQL Server SqlCacheDependency 缓存依赖
  10. PHP打开空白的解决办法