← [ BACK_TO_NOTES ]

Backend 常用中间件与基础设施 MOC

后端常用基础设施组件总入口,按缓存、消息、搜索、反向代理、分布式协调和对象存储组织 Redis、Kafka、RabbitMQ、Elasticsearch、Nginx、etcd、ZooKeeper、MinIO 的学习与选型。

#moc #growing #backend #architecture

[!info] related notes

Backend 常用中间件与基础设施 MOC

知识总览

filters:
  and:
    - 'file.ext == "md"'
    - 'file.inFolder("z")'
    - 'this.file.links.contains(file)'
    - 'file.path != this.file.path'
formulas:
  knowledge: 'file.asLink(title)'
properties:
  formula.knowledge:
    displayName: 知识
  note.description:
    displayName: Description
  note.mastery:
    displayName: Mastery
views:
  - type: table
    name: 知识总览
    order:
      - formula.knowledge
      - note.description
      - note.mastery
    columnSize:
      formula.knowledge: 280
      note.description: 760
      note.mastery: 56

[!abstract] 学习目标 “中间件”在这里采用宽泛工程用法:业务服务之外,为缓存、消息、搜索、流量入口、协调和对象存储提供通用能力的基础设施组件。

不从安装和命令开始,而从数据模型、可靠性语义、扩展方式和失败边界开始。

一张图看组件位置

Client
  ↓
Nginx: proxy / TLS / load balancing
  ↓
Application Services
  ├─ Redis: cache / shared transient state
  ├─ Kafka: replayable event log / CDC
  ├─ RabbitMQ: routed queue / job / retry
  ├─ Elasticsearch: search projection
  ├─ etcd / ZooKeeper: coordination metadata
  └─ MinIO: binary object storage

组件定位表

组件核心模型最适合解决首要风险
Redis内存数据结构服务Cache、Session、Counter、短期状态内存、热 Key、一致性、误当事实库
Kafka分区持久日志Event Stream、CDC、ReplayLag、Hot Partition、磁盘与顺序边界
RabbitMQExchange + Queue + ACKJob、路由、Retry / DLQUnacked、重投递、积压与错误重试
Nginx事件驱动代理TLS、反向代理、LB、流量治理路径、buffering、timeout、upstream 故障
ElasticsearchLucene 分布式索引全文搜索、聚合、日志检索Mapping、Shard、Heap、派生数据同步
etcd强一致 KV + Revision / Lease选主、配置、协调元数据Quorum、容量、Lease 与 stale owner
ZooKeeperZNode + Session + Watch传统协调、成员关系、选主Session、Watch、ZNode 规模
MinIOS3 对象存储图片、视频、附件、模型文件容量、Quorum、元数据一致性

推荐学习顺序

P0:高频后端与面试

  1. Redis:缓存语义、TTL / Eviction、持久化、复制与集群;项目驱动学习见 BodySense Redis 从零到一课程 MOC。
  2. Kafka:Topic / Partition / Offset、Consumer Group、Retention / Replay、ISR、KRaft。
  3. RabbitMQ:Exchange / Queue / Binding、Confirm / ACK、Prefetch、DLQ、Quorum Queue。
  4. Nginx MOC:请求匹配、反向代理、LB、TLS、buffering 与流式连接。
  5. Elasticsearch:倒排索引、Mapping、Analyzer、Segment、Shard / Replica、NRT。

P1:分布式与生产架构

  1. etcd:Revision、Watch、Lease、Txn / CAS、Raft。
  2. MinIO:S3 API、Presigned URL、Multipart、Erasure Coding。
  3. ZooKeeper:Session、Ephemeral / Sequential ZNode、Watch 与协调 recipe。

先按需求选类别

需要低延迟共享状态?              → Redis
需要可保留、可重放的事件流?      → Kafka
需要一个任务被某个 Worker 完成?   → RabbitMQ / Redis-backed queue
需要全文搜索与相关性排序?         → Elasticsearch
需要 TLS、反代和负载均衡?         → Nginx
需要强一致协调元数据?             → etcd / ZooKeeper
需要保存大文件或二进制对象?        → MinIO / S3

三个最常混淆的边界

Redis Stream、RabbitMQ 与 Kafka

  • Redis Stream:已有 Redis、规模较小、希望获得 ID / Consumer Group / Pending。
  • RabbitMQ:Work Queue、复杂路由、ACK、Retry / DLQ 更自然。
  • Kafka:高吞吐事件日志、长保留、多个独立下游和 Replay 更自然。

详见 Kafka 与 RabbitMQ 的选型边界。

数据库、Redis 与 Elasticsearch

Database      → 业务事实、约束、事务
Redis         → 可丢或可重建的加速/短期状态
Elasticsearch → 从事实层同步出的搜索投影

数据库与 MinIO

Database → object id / owner / status / metadata
MinIO     → actual bytes

跨两者的上传、删除和补偿必须显式设计,不能假设天然事务一致。

统一学习框架

学习任何中间件时依次回答:

  1. 它解决什么问题,哪些问题明确不解决?
  2. 核心数据模型和顺序边界是什么?
  3. 一次写入与读取怎样经过系统?
  4. ACK / commit / durability 到底保证到哪一层?
  5. 如何复制、分片、选主和故障切换?
  6. 什么时候会丢失、重复、乱序或读旧?
  7. 如何限流、背压、重试、恢复和降级?
  8. 关键容量指标、健康指标和告警是什么?
  9. 数据是否可重建,备份与灾难恢复如何做?
  10. 为什么当前业务选择它,而不是更简单的方案?

掌握标准

  • 能在白板上放对每个组件的位置。
  • 能说清 Redis、Kafka、RabbitMQ 的数据模型差异。
  • 能说明 Elasticsearch 与业务数据库为何通常是派生关系。
  • 能解释 etcd / ZooKeeper 的 Lease 或 Session 为什么还需要 fencing。
  • 能把每个组件的指标连接到具体故障,而不只背指标名。
  • 能为个人项目做“先不用某中间件”的合理减法。

相邻地图

创建于 2026/9/4 更新于 2026/9/18
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本