面试题答案
一键面试异步处理场景
- 场景描述:在一些业务流程中,部分操作并非紧急且对主流程执行结果无直接影响,例如用户注册成功后发送欢迎邮件、短信通知等。这些操作如果同步执行会延长主流程的响应时间,影响用户体验。
- 选择RocketMQ原因:RocketMQ具有高吞吐量,能够快速接收和处理大量消息,保证异步任务消息不会积压。其可靠性高,采用多副本机制,消息不易丢失,确保异步任务能够可靠执行。
削峰填谷场景
- 场景描述:在电商大促活动,如“双11”“618”等期间,短时间内会有大量的订单请求涌入。如果直接将这些请求发送到数据库进行处理,数据库可能因无法承受瞬间高并发而崩溃。
- 选择RocketMQ原因:RocketMQ可以在高并发流量到达时,快速接收大量订单消息进行缓存,然后按照数据库能够承受的速率,逐步将消息发送给数据库进行处理,起到削峰的作用。同时,在流量低谷期,也能保证消息按照一定速率处理,实现填谷。
系统解耦场景
- 场景描述:以一个大型电商系统为例,订单系统、库存系统、物流系统之间存在业务关联。传统方式下,订单创建成功后,需要直接调用库存系统扣减库存,再调用物流系统安排发货,系统间耦合度高。若其中某一个系统出现故障,可能影响整个业务流程。
- 选择RocketMQ原因:通过RocketMQ,订单系统创建订单成功后,只需向消息队列发送消息,库存系统和物流系统分别从消息队列订阅相关消息进行处理。这样各个系统之间通过消息队列进行通信,降低了系统间的耦合度,提高了系统的可维护性和扩展性。
数据分发场景
- 场景描述:在数据采集系统中,需要将采集到的各种数据,如用户行为数据、业务交易数据等,分发给不同的数据分析系统、数据仓库等进行后续处理。
- 选择RocketMQ原因:RocketMQ支持发布 - 订阅模式,一个消息可以被多个订阅者消费。它能够根据不同的主题(Topic)对数据进行分类,不同的数据分析系统可以根据自身需求订阅相应主题的数据,实现数据的灵活分发。