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 没屌用

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

🌀 使用 Exchangefanout

💡 典型案例

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

🎯 要点

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

🧠 面试话术

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


3. 路由模式(Routing)

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

🌀 使用 Exchangedirect

💡 典型案例

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

🎯 要点

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

🧠 面试话术

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


4. 主题模式(Topics)

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

🌀 使用 Exchangetopic

🪄 通配符规则

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

💡 典型案例

  1. 物联网消息总线sensor.kitchen.tempsensor.# → 灵活订阅多级数据。
  2. 微服务事件系统user.login.successorder.payment.fail,模块可订阅特定主题。
  3. 多层级日志系统logs.api.errorlogs.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. 唇型驱动和视频合成