1.8k 2 分钟

本篇环境使用阿里云服务器,操作系统是 Ubuntu 22.04。会从 Hexo 安装开始,到最终浏览器通过域名访问博客,如有遗漏,欢迎指出。

# 环境准备

  • 一台服务器
  • 一个域名指向服务器

964 1 分钟

# 可靠性保证

  • 保证分区消息的顺序性
  • 只有当消息被写入分区的所有同步副本时,才会被认为是已提交的
  • 只要还有一个副本是活跃的,已提交的消息就不会丢失
  • 消费者只能读到已经提交的消息

778 1 分钟

# 集群成员关系

每个 broker 拥有一个 ID,加入或退出集群时会在 zk /brokers/ids 路径上注册或删除自己的 ID。

# 控制器

broker 启动时会在 zk /controller 路径上注册成为控制器,第一个成功注册的 breker 会成为控制器,负责分区首领的选举。

313 1 分钟

# 基本概念

消息:Kafka 的数据单元
批次:一组消息
模式:消息的结构定义
主题:消息通过主题分类
分区:一个主题有多个分区
生产者:创建消息发送到一个主题
消费者:读取一个或多个主题的消息

899 1 分钟

# 介绍

RDB 文件中保存了内存中的数据库状态,也可以从 RDB 文件中还原出一个完整的数据库状态,避免数据意外丢失。

# RDB 文件的创建与载入

生成文件命令:

  • SAVE,会阻塞服务器进程,期间服务器不能处理任何命令请求
  • BGSAVE,派生出一个子进程,不会阻塞服务器进程,期间服务器会拒绝 SAVE 和 BGSAVE,避免竞争,BGSAVE 也不能和 BGREWRITEAOF 同时执行,避免同时执行大量的磁盘写入操作。

载入是在服务器启动时自动执行的,没有命令进行手动载入,期间服务器一直处于阻塞状态。不过如果服务器启动了 AOF,会优先使用 AOF 还原数据库状态。

386 1 分钟

# 介绍

RDB 文件中保存的是数据库状态,AOF 文件中保存的数据执行命令,是数据库过程。

# 持久化的实现

# 命令追加

执行完一个写命令后,会以协议格式将命令追加到服务器状态的 aof_buf 缓冲区的末尾。