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的作用是什么;这些会在后面补充。

相关推荐
子非鱼92121 分钟前
MyBatisPlus快速上手
数据库·spring boot·mybatisplus
DBA小马哥22 分钟前
从传统数据库到金仓数据库:时序数据迁移的挑战与解决方案
数据库·时序数据库·dba
什么都不会的Tristan27 分钟前
redis-原理篇-Dict
数据库·redis·缓存
数据知道30 分钟前
亿级图片链接存入 PostgreSQL,URL链接字段数据类型用哪个最合适?
数据库·postgresql
马克学长30 分钟前
SSM学生综合素质评价系统wy345(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·学生综合素质评价系统·家校协同
煎蛋学姐32 分钟前
SSM学生宿舍管理系统a55l1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学生宿舍管理系统·ssm 框架
xuefuhe33 分钟前
PG权限privilege
数据库
重生之绝世牛码39 分钟前
Linux软件安装 —— Redis集群安装(三主三从)
大数据·linux·运维·数据库·redis·数据库开发·软件安装
陌路201 小时前
RPC分布式通信(5)--发布 RPC 服务、处理客户端调用请求
分布式·qt·rpc
知识分享小能手1 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 过程、函数、触发器和包详解(7)
数据库·学习·oracle