消息队列|秒杀时如何处理每秒上万次的下单请求?

如何理解消息队列

我一直把消息队列看作暂时存储数据的一个容器,认为消息队列是一个平衡低速系统和高速系统处理任务时间差的工具
 

消息队列在高并发系统中起到的作用

  • 削峰填谷。是消息队列最主要的作用,但是会造成消息延迟
  • 异步处理。是提升性能的神器,但是需要区分清楚同步和异步的边界,同时消息存在丢失的风险
  • 解耦合可以提升系统鲁棒性。
 
消息队列虽然可以解决现有问题,但是系统复杂度会上升。
如果采用消息队列,有两个主要的问题需要解决:
  1. 如何处理消息的丢失和重复
  1. 如何减少消息的延迟
引入消息队列的同时也会引入了新的问题,需要新的方案来解决,这也是系统设计的挑战。
 

开发过程中使用消息队列的场景

  1. 生产者消费者模型,Sampler 采样系统,单机,采用 Redis
  1. Tracking 调度系统,使用 lmstfy,分布式,基于 Redis
 

调度系统

Legacy:
  • time labeled topic
  • 多个组件
New: