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

相关推荐
萧鼎9 分钟前
深度探索 Py2neo:用 Python 玩转图数据库 Neo4j
数据库·python·neo4j
m0_653031361 小时前
腾讯云认证考试报名 - TDSQL数据库交付运维专家(TCCE MySQL版)
运维·数据库·腾讯云
power 雀儿1 小时前
集群聊天服务器---MySQL数据库的建立
服务器·数据库·mysql
骑着王八撵玉兔3 小时前
【性能优化与架构调优(二)】高性能数据库设计与优化
数据库·性能优化·架构
想要入门的程序猿4 小时前
Qt写入excel
数据库·qt·excel
Q_970956394 小时前
java+vue+SpringBoo校园失物招领网站(程序+数据库+报告+部署教程+答辩指导)
java·数据库·vue.js
Wyc724094 小时前
Maven
java·数据库·maven
程序猿小D4 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的电影小说网站管理系统,推荐!
java·数据库·mysql·spring·毕业设计·ssm框架·电影小说网站
羊小猪~~4 小时前
数据库学习笔记(十七)--触发器的使用
数据库·人工智能·后端·sql·深度学习·mysql·考研
幼稚园的山代王5 小时前
RabbitMQ 4.1.1初体验-队列和交换机
分布式·rabbitmq·ruby