etcd入门(一)基础架构及写入流程

一、什么是ETCD

1.1、etcd简介

etcd,可以读成etc-d,也就是分布式的配置文件。同理可以知道etcd的作用就是一个分布式的配置文件系统,也就是配置中心。

1.2、etcd应用场景

用来实现分布式系统中的配置管理和服务注册与发现;具体场景有:

  1. 配置管理,比如多个客户端可以从etcd中读取到统一的配置,类似于NoSQL数据库。
  2. 服务注册与发现,比如微服务架构中,服务向etcd注册自己的状态,其他服务就可以通过etcd发现。
  3. 分布式锁,比如多个客户端通过获取etcd实现的分布式锁避免数据竞争和并发问题。
  4. 分布式系统的一致性协调,比如分布式事务管理。

二、etcd基础架构

网上图很多,我选了一个新手比较好理解的(后面自己画一个)。

根据上面的图,可以简单理解etcd的架构如下:

  1. Client层,etcd客户端,支持以api的形式操作etcd系统。

  2. API网络层:声明客户端访问etcd server的通信协议,支持gRPC、HTTP。

  3. 逻辑层

    1. Raft,通过Raft算法实现系统中的多个节点间的Leader选举、日志复制,保证节点间的数据一致性。
    2. 功能逻辑层,实现了etcd系统的很多特性,比如MVCC、KV Server,Auth鉴权、限流等。
  4. 存储层:包含WAL日志模块、快照等模块;其中WAL和MySQL的WAL一样,是用来保证系统Crash时写入的数据不丢失的。

三、etcd执行一个写操作

根据上面的模型来分析etcd的写操作,可以将其分成以下流程:

  1. etcd client选择一种通信方式,如gRPC请求etcd系统,请求到达逻辑层;
  2. etcd系统会在逻辑层进行请求的校验,如系统的配额(Quota)是否达到上限;
  3. 逻辑层校验完成后,通过KV Server向Raft模块发起执行请求,Raft后根据选举算法找到主节点,并在大部分节点同意后,让请求真正开始修改,也就是到达存储层。
  4. etcd 存储层执行请求时,会先先WAL日志,用来保证数据不丢失;之后把请求放到一个先进先出的队列(Apply 模块)中,再依次更新MVCC模块、写boltdb等。

下面是更加清晰的etcd架构图,分析写请求涉及到哪些模块,可以帮助我们更好理解。

四、总结

上面只是分析了etcd的简单架构以及写流程,并没有介绍一些模块的具体作用,如哪些模块保证etcd的数据一致性、MVCC的作用是什么;这些会在后面补充。

相关推荐
jiayou6418 小时前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
初次攀爬者3 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1773 天前
《从零搭建NestJS项目》
数据库·typescript
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest3 天前
数据库SQL学习
数据库·sql