ETCD源码剖析
  • 前言
  • 修订记录
  • 分布式系统介绍
    • 分布式系统模型
    • CAP理论
    • 分布式系统通信
    • 分布式系统八大问题
    • 分布式存储
      • 一致性问题
      • 共识算法
      • Raft协议
      • 事务ACID
      • 分布式事务
      • 并发控制
    • 小结
  • 架构解析
    • 表现层
      • 命令行
    • 网络层
      • Proxy代理
      • SDK
    • 应用层
      • Raft协议
      • 复制状态机
      • 多版本并发控制
      • K-V存储
      • 发布订阅
      • 分布式事务
    • 数据层
      • 内存数据
        • 索引
      • 磁盘数据
        • 日志
        • 快照
        • 数据文件
    • 小结
  • 集群部署
    • 单节点部署
      • 源码编译安装
      • yum 安装
      • Docker部署
      • K8s部署
    • 多节点部署
      • 源码编译安装
      • yum 安装
      • Docker部署
      • K8s部署
    • 小结
  • 源码阅读
    • 从简单的例子开始
      • 实现一个简单的分布式kv数据库
    • 核心代码
      • raft源码解析
      • wal源码解析
      • mvcc源码解析
        • b-tree索引
      • kv-store源码解析
      • proxy源码解析
      • clientV3源码解析
      • etcdv3事务STM
      • etcd watch源码解析
    • 小结
  • 使用案例
    • 分布式锁
    • 分布式队列
    • 配置中心
    • 分布式k-v
    • 消息订阅
    • 小结
  • 运维指南
    • 集群监控
    • 数据备份
    • 其他
    • 小结
  • 总结
  • 附录
Powered by GitBook
On this page
  • 表现层
  • 网络层
  • 应用层
  • 数据层

Was this helpful?

架构解析

Previous小结Next表现层

Last updated 6 years ago

Was this helpful?

如下图所示,ETCD三节点集群简易架构图。 从图可以看出,ETCD中节点之间是通过对等网络的方式进行通信的。但是在不同的时期每个节点所扮演的角色不一样。 严格来说,ETCD节点有三种角色:

  • Leader

  • Flower

  • Candidate

    节点角色会在以上三种角色中进行切换。其中每个节点又主要有以下几个核心模块:

  • 接口层

  • Raft协议

    • 选主

    • wal日志

    • snap快照

  • 复制状态机

  • 持久存储K-V数据库

当然以上也仅仅是粗略的划分, 但也能大概说明问题。 这里我们结合上述架构图来解释各个模块的功能,以及一个完整的ETCD集群的工作流程。

下面是一个更为细致的划分,通过分层的方式,将etcd划分为4层,依次为表现层、网络层、应用层、数据层。

表现层

主要包含了命令行工具,以及restful的api。客户端可以通过命令行或者是restful api的方式与etcd集群进行通信。

网络层

主要包含代理和SDK,ETCD提供了三种协议的通信方式,分别为HTTP、TCP、gRPC。

应用层

应用层包含了Raft协议、复制状态机、多版本并发控、Watch、K-V数据存储、分布式事务等核心功能。

数据层

数据层有两部分,一部分为内存数据,一部分是磁盘数据。 其中内存中维护的数据主要是Key与revision之间的B-tree索引。 磁盘里面存储的文件有三部分,一部分就是核心的数据文件,在snap下面的db文件中保存,还有就是raft协议依赖的wal日志文件 和snap快照文件。