关键技术决策

1. 消息队列:RabbitMQ

选 RabbitMQ 的原因:

  • 延迟队列:支持定时发送(如免打扰后的补发)。
  • 消息确认:消费失败可重试,不丢消息。
  • 优先级队列:私信 / 系统公告走高优先级。

2. 缓存:Redis

Redis 在通知系统中承担多个职责:

  • 用户偏好缓存:发送前毫秒级读取。
  • 未读计数:高频查询。
  • 推送限流:时间窗口计数。
  • 分布式锁:防并发重复推送。

3. 数据库:MySQL 分表

站内信表按用户 ID 分 16 张表:

  • 按 user_id 取模分表,单表数据可控。
  • 用户查询只落到一张表,避免全表膨胀。
  • 分表键选择:必须按查询条件(user_id)。

决策的原则

每个技术选型都要回答「为什么」:

  • 队列:要延迟、确认、优先级 → RabbitMQ。
  • 缓存:要毫秒级、多职责 → Redis。
  • 分表:要控制单表规模 → user_id 分表。

一句话

关键技术决策 = 需求驱动选型:**RabbitMQ 解决可靠异步,Redis 解决高频状态,MySQL 分表解决规模增长。**每个决策都能追溯到具体问题。

发现内容有问题?

告诉我们哪里需要改进。