Skip to content

中间件专栏导览 ​

标签
中间件
字数
997 字
阅读时间
4 分钟

本专栏收录「夹在应用与存储之间的那类基础设施」:消息队列、数据库与缓存。它们的共同点是应用不直接面对被封装的东西,而是通过一层抽象(topic / table / key)去使用,代价与收益都藏在这一层里——消费位点提交的语义、事务的隔离级别、索引的组织方式、缓存与数据库的双写顺序,都是这一层自己定的规矩。

不收去哪看本专栏只关心
共识协议、副本一致性、一致性模型分布式单个中间件进程内部怎么组织数据与请求
内核的 IO 栈、页缓存、收发包路径基本功中间件在通用机制之上自己实现了哪一套
具体业务的表结构与缓存方案选型架构设计中间件的机制能给业务带来什么约束

目录 ​

子专栏:

  • MQ —— 消息中间件:Kafka 的生产者、broker、消费者与协调四条线,含批拉取参数、位点提交语义,以及它与 RocketMQ 在 ack 粒度上的对照
  • MySQL —— 关系型数据库:一条 SQL 的执行链路、InnoDB 的存储结构、索引与 B+ 树、事务与 MVCC、锁与死锁、日志与崩溃恢复
  • Redis —— 内存键值数据库:数据类型与底层数据结构、AOF 与 RDB 两条落盘路径、过期删除与内存淘汰、分布式锁、主从与哨兵与 Cluster 三种高可用,以及缓存三兄弟与双写一致性

阅读顺序 ​

三个子专栏各自成线,之间没有先后依赖,按需要选一条进:

  • MQ 从 Kafka 进入。它覆盖生产者、broker、消费者与协调四条线,把批拉取、ISR、位点提交、幂等与事务串在一起;总入口与边界见 MQ 专栏导览。
  • MySQL 从 架构与执行流程 进入,编号即阅读顺序:先立骨架,再看数据落在磁盘上的哪一格,然后是索引与查询优化,最后是事务、锁与日志这三块并发与持久化的机制。
  • Redis 从 Redis 基础与线程模型 进入,同样是编号即阅读顺序:先看执行模型(单线程、I/O 多路复用),再是数据类型与底层数据结构,接着是持久化、内存淘汰、分布式锁,最后是高可用与缓存设计。

三者的交集在两处。其一是「消息的可靠投递」:数据库的 binlog 是 CDC 的数据来源,而消息队列的位点提交语义决定了下游能不能幂等重放——一边的产出正好是另一边的输入。其二是 Redis 与另外两者的边界:它常被放在 MySQL 前面当缓存(于是有了双写一致性问题),也常被拿来当轻量消息队列(于是有了 Stream 与位点语义的对照)。

相关 ​

  • 分布式 —— 消息队列的副本与数据库的分布式形态都在那里:共识协议、副本组织与一致性模型是这一栏单机机制的上层问题
  • 架构设计 —— 中间件被用进具体系统时的取舍:数据模型怎么选、缓存放几层

贡献者 ​

文件历史 ​