Skip to content

项目总结 ​

RabbitMQ 的工作模式 ​

1. 工作队列模式(Work Queues) ​

Luca 总结
  • 满足大部分场景,JoggAI 任务队列用的就是这个模式
  • 默认 direct 交换机

📦 核心目标:让多个消费者分担耗时任务,实现异步解耦与负载均衡。

🌀 使用 Exchange:默认(direct 类型)

💡 典型案例:

  1. 图片处理任务:上传图片 → 放进队列 → 多个 worker 并行压缩。
  2. 发送邮件短信:前端触发事件 → 放入队列 → 异步发送,不阻塞主流程。
  3. 爬虫任务分发:一个生产者投递 URL,多台机器轮流爬取。

🎯 要点:

  • 消息被轮询分配(Round-Robin)
  • 配合 ack + 持久化保障可靠性
  • 一个消息只被一个消费者消费

🧠 面试话术:

“工作队列模式适合高并发下解耦主流程的异步任务,比如日志入库、文件转码、通知推送等。常用 direct exchange,让多个 worker 平均分摊任务。”


2. 发布/订阅模式(Publish/Subscribe) ​

Luca 总结
  • 广播模式
  • fanout 交换机
  • routing key 没屌用

📦 核心目标:让消息广播给多个消费者,每个消费者都能收到副本。

🌀 使用 Exchange:fanout

💡 典型案例:

  1. 日志系统:一条日志广播给数据库存储服务、实时监控服务、告警系统。
  2. 全局通知推送:后台发布“系统维护公告”,所有客户端都收到。
  3. 分布式缓存刷新:一台机器修改缓存 → fanout 广播 → 所有节点同步更新。

🎯 要点:

  • routing key 被忽略
  • 所有绑定队列都能收到
  • 典型广播型通信

🧠 面试话术:

“发布订阅模式适合多模块监听同一事件,比如系统广播、日志同步等。它用 fanout exchange,把消息复制给所有订阅者。”


3. 路由模式(Routing) ​

📦 核心目标:根据不同的 routing key 精确选择队列,做到定向投递。

🌀 使用 Exchange:direct

💡 典型案例:

  1. 日志分级:error → 队列 A,info → 队列 B。
  2. 多业务分流:order.create 发给订单服务,user.register 发给用户服务。
  3. 多渠道消息分发:短信、邮件、微信,各自独立消费。

🎯 要点:

  • routing key 必须精确匹配
  • 不同队列绑定不同 binding key
  • 常用于分类消费

🧠 面试话术:

“路由模式常用于日志分级、任务分流这类精确匹配场景。direct exchange 通过 routing key 实现点对点定向消息投递。”


4. 主题模式(Topics) ​

📦 核心目标:通过通配符匹配 routing key,实现灵活的多级订阅

🌀 使用 Exchange:topic

🪄 通配符规则:

  • *:匹配一个单词
  • #:匹配多个单词

💡 典型案例:

  1. 物联网消息总线:sensor.kitchen.temp、sensor.# → 灵活订阅多级数据。
  2. 微服务事件系统:user.login.success、order.payment.fail,模块可订阅特定主题。
  3. 多层级日志系统:logs.api.error、logs.db.info,可模糊匹配。

🎯 要点:

  • 支持层级化主题
  • 模糊匹配,最灵活
  • 常用于微服务事件流

🧠 面试话术:

“主题模式最灵活,适合多层级业务事件,比如 IoT、微服务系统的事件订阅。用 topic exchange,支持通配符匹配 routing key。”


总结 ​

模式Exchange 类型消息分发逻辑典型场景特点
工作队列direct轮询分发异步任务、后台处理解耦主流程
发布订阅fanout广播分发日志系统、通知推送一发多收
路由模式direct精确匹配日志分级、任务分流精细化控制
主题模式topic通配符匹配微服务事件、IoT 系统灵活多层级

Kafka ​

TODO

视频翻译 ​

  1. 提取视频音频
  2. 音轨分离

为啥做音轨分离?音频的轨道分为人声轨、低音轨和节奏轨等,而接下来的声音克隆只需要人声轨

  1. 声音克隆
  2. 音频转录 ElevenLabs 的声音转文本
  3. 文本翻译
  4. TTS
  5. 基于 TTS 后音频的时候做视频加减速
  6. 唇型驱动和视频合成