从零构建记忆增强系统:基于间隔重复与知识图谱的实践
2026/5/3 12:02:51
基于 Erlang 语言开发,遵循 AMQP(高级消息队列协议),核心组件分工明确:
| 组件 | 核心作用 |
|---|---|
| Broker | MQ 服务节点 / 集群,是消息转发、存储的核心载体 |
| Exchange | 交换机,接收生产者消息,根据路由规则将消息路由到指定 Queue |
| Queue | 消息队列,存储消息,是消费者的消费目标(点对点核心载体) |
| Binding | 绑定关系,关联 Exchange 和 Queue,定义路由规则(如通配符、精准匹配) |
| VHost | 虚拟主机,隔离不同租户的资源(Exchange/Queue/ 用户),实现多租户隔离 |
| Channel | 轻量级 TCP 连接,一个 Connection 可创建多个 Channel,减少 TCP 连接开销 |
*/#匹配);基于 Scala/Java 开发,面向大数据流处理,核心设计围绕「高吞吐」:
| 组件 | 核心作用 |
|---|---|
| Broker | 集群节点,存储 Topic 的 Partition 数据,处理生产 / 消费请求 |
| Topic | 消息主题,逻辑上的消息分类(如「用户行为日志」「订单消息」) |
| Partition | 分区,Topic 的物理拆分(每个 Partition 是有序日志文件),提升并行处理能力 |
| Replica | 副本,Partition 的备份(Leader/Follower),Leader 处理读写,Follower 同步数据 |
| Consumer Group | 消费者组,组内消费者共同消费一个 Topic 的不同 Partition(一个 Partition 仅被组内一个消费者消费) |
| KRaft/Zookeeper | 集群元数据管理(Kafka 2.8 + 用 KRaft 替代 Zookeeper),负责选主、节点发现 |
阿里开源(已捐 Apache),基于 Java 开发,融合 RabbitMQ 和 Kafka 的优点:
| 组件 | 核心作用 |
|---|---|
| NameServer | 轻量级注册中心,无状态,管理 Broker 节点信息(集群部署,无需主从) |
| Broker | 核心节点,分 Master/Slave,存储消息、处理生产 / 消费请求,支持消息过滤 |
| Topic | 消息主题,逻辑分类 |
| Queue | 队列,Topic 的物理拆分(对应 Kafka 的 Partition),分布在多个 Broker 上 |
| Producer/Consumer | 生产者 / 消费者,支持集群部署、批量发送、集群消费 / 广播消费 |
Apache 开源,老牌 MQ,基于 Java 开发,兼容 JMS(Java 消息服务)规范:
| 组件 | 核心作用 |
|---|---|
| Broker | MQ 服务节点,包含连接器(支持多协议)、消息存储、目的地(Queue/Topic) |
| Queue/Topic | 点对点队列 / 发布订阅主题(严格遵循 JMS 规范) |
| Message Store | 消息存储,支持内存、文件(KahaDB)、数据库(如 MySQL) |
Apache 开源,新一代云原生 MQ,基于 Java/Go 开发,融合消息队列和流处理:
| 组件 | 核心作用 |
|---|---|
| Broker | 无状态节点,处理生产 / 消费请求,可弹性扩缩(不存储消息) |
| BookKeeper | 分布式存储集群,专门存储消息(分层存储:热数据存 SSD,冷数据存对象存储) |
| Topic | 分区主题,支持多租户、跨地域复制 |
| ZooKeeper | 管理集群元数据(Broker/BookKeeper 节点信息) |
| 特性 | RabbitMQ | Kafka | RocketMQ | ActiveMQ | Pulsar |
|---|---|---|---|---|---|
| 开发语言 | Erlang | Scala/Java | Java | Java | Java/Go |
| 核心协议 | AMQP | 自定义协议 | 自定义(兼容 JMS) | JMS/AMQP/MQTT 等 | 自定义(兼容 Kafka) |
| 核心优势 | 路由灵活、低延迟、可靠性高 | 超高吞吐、持久化好 | 功能全(事务 / 延时)、国产适配 | 兼容 JMS、易上手 | 云原生、分层存储、多租户 |
| 吞吐量 | 中(万级 / 秒) | 极高(十万级 / 秒) | 高(十万级 / 秒) | 低(千级 / 秒) | 极高(十万级 / 秒) |
| 延迟消息 | 插件支持(精度低) | 不支持(需上层实现) | 原生支持(精准到秒) | 支持 | 原生支持 |
| 事务消息 | 支持 | 基础支持(幂等 + 事务) | 原生高可靠支持 | 支持 | 原生支持 |
| 消息回溯 | 有限支持 | 基于 Offset 回溯 | 基于 Offset 回溯 | 有限支持 | 任意时间回溯 |
| 高可用机制 | 镜像队列 | Partition 副本 | Master-Slave | Master-Slave | BookKeeper 多副本 |
| 运维复杂度 | 中 | 高(分区 / 副本管理) | 中 | 低 | 高(Broker+BookKeeper) |
| 适用场景 | 电商订单、即时通知、路由复杂场景 | 日志采集、监控数据、大数据流 | 电商交易、金融、国产大厂生态 | 小型系统、兼容 JMS 场景 | 云原生、跨地域、流批一体 |
| 缺点 | 高吞吐性能弱、Erlang 门槛高 | 功能简单、运维复杂 | 生态不如 RabbitMQ/Kafka | 高并发易宕机、性能差 | 生态新、架构复杂 |