使用场景
- 异步处理
- 流量控制(令牌桶)
- 服务解耦
局限
- 增加系统复杂度
- 增加部分延迟
- 可能导致数据不一致
思考
- CPU的运算速度 远大于 内存读写速度 –> CPU缓存(L1 / L2 / L3)
- 内存的读写速度 远大于 硬盘 –> 内存缓存系统 (redis / memcache 等) 和 本地缓存 、线程缓存
- 上游系统的处理速度大于下游依赖系统 –> mq(缓存上游请求)
- 网络请求、磁盘操作比较耗时 –> 出现了缓存系统 / 协程 / 多线程等概念来解决
- CPU写内存的速度小于写cache -> 先写cache、定时刷新 -> 出现了线程同步问题
- 写内存的速度大于写磁盘 –> redis 、mysql等系统应用的日志都是先写cache、按照指定规则刷新 –> 有了系统崩溃短时间内log不能恢复的问题
- 生产者和消费者速度不一致 –> 有了broker暂存消息