全书目录

数据档案与物流系统

第十二章:缓存、搜索、消息和分析 —— 城市物流系统

2 分钟 613 字 第 12 / 962 个阅读单元

这一章里,把缓存、搜索、消息和分析看成“城市物流系统”。档案馆存真相,物流系统负责让信息更快流、更快找、更快算。

#Redis —— 城市临时仓库

bash
SET user:1:name mizzen
GET user:1:name

Redis 适合:

  • 缓存
  • 会话
  • 计数器
  • 分布式锁
  • 排行榜
  • 简单队列与流

#Elasticsearch / OpenSearch —— 城市检索中心

json
{
  "query": {
    "match": { "title": "react tutorial" }
  }
}

搜索系统不是数据库替代品。

它擅长的是:

  • 全文检索
  • 排序
  • 聚合
  • 向量检索和近实时查询

#Kafka —— 城市高速货运干线

text
producer -> topic -> consumer group

Kafka 适合:

  • 事件流
  • 日志流
  • 高吞吐异步解耦
  • 长期保留和回放事件

#RabbitMQ —— 城市邮局

text
exchange -> queue -> consumer

RabbitMQ 更像传统消息队列。

它更擅长:

  • 投递
  • 路由
  • ack
  • 重试
  • 任务分发

#NATS —— 城市广播系统

text
publisher -> subject -> subscriber

NATS 更轻、更快,更像系统内部高速通信总线。

#ClickHouse —— 城市统计局

sql
select count(*) from events where created_at >= today()

ClickHouse 适合:

  • 分析查询
  • 事件统计
  • BI
  • 高速聚合
  • 日志/埋点/风控分析

什么时候别乱用

text
别拿 Redis 当长期主库
别拿 Elasticsearch 当事务主库
别拿 Kafka 当任务队列默认替代品
别拿 ClickHouse 当 OLTP 主库

这一章的分工关系

类型 代表 作用
数据库 PostgreSQL / MySQL / MongoDB 存正式数据
缓存 Redis 加速、临时状态
搜索 Elasticsearch / OpenSearch 搜索和检索
流平台 Kafka 大规模事件流
消息队列 RabbitMQ / NATS 异步解耦与通信
分析库 ClickHouse 分析与报表

现代系统里很常见的一条主干链路是:

text
OLTP 主库
  ├──> Redis 做热点加速
  ├──> Kafka 推事件
  ├──> Elasticsearch / OpenSearch 建搜索索引
  └──> ClickHouse 做统计分析