不奢望岁月静好 只希望点滴积累

0%

mq何时使用

使用场景

  • 异步处理
  • 流量控制(令牌桶)
  • 服务解耦

局限

  • 增加系统复杂度
  • 增加部分延迟
  • 可能导致数据不一致

思考

  1. CPU的运算速度 远大于 内存读写速度 –> CPU缓存(L1 / L2 / L3)
  2. 内存的读写速度 远大于 硬盘 –> 内存缓存系统 (redis / memcache 等) 和 本地缓存 、线程缓存
  3. 上游系统的处理速度大于下游依赖系统 –> mq(缓存上游请求)
  4. 网络请求、磁盘操作比较耗时 –> 出现了缓存系统 / 协程 / 多线程等概念来解决
  5. CPU写内存的速度小于写cache -> 先写cache、定时刷新 -> 出现了线程同步问题
  6. 写内存的速度大于写磁盘 –> redis 、mysql等系统应用的日志都是先写cache、按照指定规则刷新 –> 有了系统崩溃短时间内log不能恢复的问题
  7. 生产者和消费者速度不一致 –> 有了broker暂存消息