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

相关推荐

  1. HDFS体系架构&文件写入/下载流程

    2024-07-22 06:22:01       21 阅读
  2. Spark运行流程架构设计

    2024-07-22 06:22:01       22 阅读
  3. Etcd实战()-部署etcd集群

    2024-07-22 06:22:01       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 06:22:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 06:22:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 06:22:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 06:22:01       55 阅读

热门阅读

  1. redis+spring面试题

    2024-07-22 06:22:01       17 阅读
  2. 线段树分治+可撤销并查集 学习笔记

    2024-07-22 06:22:01       16 阅读
  3. 含有罗马字母的txt转换为csv文件读取-报错

    2024-07-22 06:22:01       12 阅读
  4. go标准库---net/http服务端

    2024-07-22 06:22:01       13 阅读
  5. python多进程库(multiprocessing)

    2024-07-22 06:22:01       17 阅读