面试题答案
一键面试常见应用场景
- 事件驱动
- 解耦系统组件:在Serverless架构中,不同的服务可能由不同团队开发维护。例如,一个电商平台中,商品上架事件触发库存更新、价格同步等多个操作。通过消息队列,商品上架服务只需将上架事件发送到消息队列,而库存更新和价格同步服务从队列接收消息并处理,彼此解耦,降低依赖。
- 实现异步通信:以物联网(IoT)场景为例,大量设备实时产生数据,如温度、湿度等。设备将数据发送到消息队列,后端Serverless函数异步从队列获取数据进行处理,避免因实时处理大量数据导致系统过载。
- 异步处理
- 任务队列:对于一些耗时操作,如文件处理(视频转码、图片压缩等)。当用户上传文件后,将处理任务发送到消息队列,Serverless函数从队列中取出任务进行处理,用户无需等待处理完成,提高用户体验。
- 流量削峰:在电商大促等高峰时段,大量订单请求涌入。将订单请求放入消息队列,后端Serverless服务按自身处理能力从队列消费订单,避免瞬间高流量压垮系统。
工作原理
- 生产者 - 消费者模型
- 生产者:在Serverless架构中,通常是产生事件或任务的服务或函数。它将消息发送到消息队列,消息包含事件数据、任务描述等信息。例如,商品上架服务作为生产者,将商品上架相关信息封装成消息发送到消息队列。
- 消息队列:负责存储消息,起到缓冲作用。它按一定规则(如先进先出)管理消息,确保消息不会丢失,并提供可靠的消息传递机制。
- 消费者:即处理消息的Serverless函数。它从消息队列中拉取或订阅消息,然后执行相应的处理逻辑。如库存更新函数作为消费者,从消息队列获取商品上架消息,更新库存数据。
- 消息持久化与可靠性
- 消息队列通常采用持久化存储机制,将消息写入磁盘等持久化介质,即使系统故障重启,消息也不会丢失。同时,通过复制、备份等技术保证数据的可靠性和高可用性。
- 消息传递模式
- 点对点(Queue)模式:一条消息只能被一个消费者接收处理。例如订单处理,每个订单消息只会被一个订单处理函数消费。
- 发布 - 订阅(Topic)模式:生产者发布消息到主题,多个订阅该主题的消费者都能收到消息。如商品上架事件,库存更新、价格同步等多个服务都订阅商品上架主题,都能获取该消息进行处理。