# 170. 商品详情页动态渲染系统:消息队列架构升级之刷数据与高优先级队列

# 什么是刷数据?

刷数据就是全量刷新 redis 中的数据,那么此操作一般在以下场景中需要:

  1. 代码 bug
  2. 上线新功能
  3. 某个对象字段改动,如 status 字段,以前存储的是数值,现在要改成 open、send 等字符串

这个时候就需要全量的刷新数据了,而且一般都是在晚上凌晨时,依赖服务会大量的更新数据,大量的请求会进入到消息队列中, 此时系统压力会非常大,可能会影响夜间一些正常用户的购买行为等

解决这个场景,就是单独开一个刷数据队列,选择在晚上凌晨时来消费该队列中的请求

# 高优先级队列

所谓高优先级,比如一些活动促销,希望快速的响应。那么这个时候就可以单独开一个高优先级队列, 来单独处理这种加急的场景。

# 业务实现

总之,以上两个队列基本上是在消息队列架构中比较重要和基础的队列, 一个是等待时机消息,一个是能让加急的消息能快速处理; 核心原理就是,合理拆分消息,不和普通消息混合在一起。

新增以下队列

  • refresh-data-change-queue
  • refresh-aggr-data-change-queue
  • hight-priority-data-change-queue
  • hight-priority-aggr-data-change-queue
  1. 在商品服务的增删改中就要支持 3 中队列事件的操作

视频中是给了一个 operationType 标识,选择走哪个队列就走哪个队列。 2. 数据同步中也是需要单独创建一个消费者来消费,然后投递到聚合服务队列中 3. 数据聚合服务中也是需要单独的消费者来消费

总的来说,与普通消息处理流程类似,只是从源头事件上走了不同的队列

本章就不练习了,因为没有太理解这样做在实际业务场景中要怎么去解决什么业务? 原理是明白,拆分不同的队列,支持不同的特性业务。