异步的常见形态:
- 通知:单向请求,你对他放电,他为你绝缘
- 请求/异步相应:客户端发送请求到服务端,服务端异步响应请求,客户端不会阻塞,而且被设计成默认相应,不会立刻送达
- 消息:利用消息可以实现一对多的交互,比如发布-订阅模式
MQ的应用场景:
- 异步处理:比如用户注册之后,需要发短信和加积分,注册信息写入数据库后通过异步消息让短信服务和积分服务去做他们的事,提升用户体验
- 流量削峰:常见于秒杀场景,访问过大导致流量剧增甚至挂掉。一般在应用前端加入消息队列控制用户数量,如果超出,则抛弃用户请求,或者让他跳转到错误页面,再做控制处理
- 日志处理:最典型的就是kafka,这个消息队列设计的时候就是用户日志处理
- 应用解耦:用户下单后,订单服务通知商品服务,订单持久化处理,消息写入队列,让商品服务来订阅这个消息,再做对应操作。