首页 > 其他分享 > etcd学习笔记-组件架构

etcd学习笔记-组件架构

时间:2023-02-18 23:31:59浏览次数:46  
标签:架构 etcd 组件 raft 日志 交互 节点 客户端

etcd项目结构

 etcd学习笔记-组件架构_Server

其中核心模块etcdserver,lease,mvcc,raft

整体架构

 etcd学习笔记-组件架构_数据_02


客户端层

包括clientv3和etcdctl等客户端,用户通过命令行或者客户端通过restful api降低了etcd客户端的使用复杂度。除此之外,客户端使用负载均衡和故障转的特性提供了高可用性。

API接口层

API接口层提供了客户端访问服务端的通信协议和接口定义,以及服务端节点之间的相互通信的协议。etcd v2版本使用基于http的restful api, etcd v3 使用gRPC通信协议。

etcd v3提供了grpc-gateway提供 restful代理,转换HTTP/JSON 请求为gRPC 的protocal  buffer格式的消息。

etcd raft层

负责leader选举和日志复制等功能,除了与本节点的etcd通信之外,还与其他节点进行交互,实现分布式一致性。

逻辑层

etcd的业务逻辑层,包括鉴权,租约,KVserver,MVCC和Compactor压缩等核心功能特性。

etcd存储

实现了快照,预写式日志WAL(write ahead log)

etcd交互总览

通过读写数据来查看各个组件交互过程。

#命令行写入键值对
etcdctl --endpoints httpd://127.0.0.1:2379 put foo bar

 以下为etcd组件交互流程

 etcd学习笔记-组件架构_数据_03

客户端->API接口层->etcd Server ->etcd raft算法库

etcd Server

接收客户端的请求,在kvserver进行拦截,实现如日志,监控,校验等功能。etcd Server中的raft模块,用于与etcd-raft库进行通信。WAL预写式日志中保存了任期号,投票索引,提案内容等等。etcd根据wal中的内容,启动时恢复,以此来保持数据一致性。

etcd raft

raft库,raft log来保存单个节点的日志,存在内存中。raft库更重要的是负责与集群中的其他etcd server进行交互,实现分布式一致性。

  •  首先是写数据到etcd节点中
  • 其次是当前 etcd节点与集群中其他的 etcd节点之间进行通信,确认数据存储成功之后,回复客户端。

client->etcd交互流程


 etcd学习笔记-组件架构_客户端_04

在raft中会将数据封装成raft日志的形式提交给raft模块。

在以上流程中,在raft协议中写入数据的etcd必定是leader节点,如果客户端提交数据到非 leader节点的时候,该节点需要将请求转发到etcd leader节点进行处理。

etcd->client应答流程

 etcd学习笔记-组件架构_数据_05

当多数etcd节点持久化日志数据成功并进行应答,提案的状态就会变成已提交。在应答某条日志数据是否已经提交的时候,raft会将日志先写入wal中,原因如下:

  • 该过程仅仅添加一条日志,一方面开销小,速度会很快
  • 另一方面,如果在后面applier V3写入失败,etcd服务端在重启的时候也可以根据wal模块中的日志数据进行回复。

raft模块中的raftlog数据在内存中存储,在服务重启后失效,客户端请求的数据则会被持久化保存到wal中,不会在重启后丢失。












标签:架构,etcd,组件,raft,日志,交互,节点,客户端
From: https://blog.51cto.com/u_11555417/6065717

相关文章

  • 购物车案例&v-model进阶&与后端交互&vue生命周期&vue组件
    目录购物车案例&v-model进阶&与后端交互&vue生命周期&vue组件今日内容概要今日内容详细1购物车案例1.1基本购物车1.2带全选全不选1.3带加减2v-model进阶3与后端交互3......
  • 软件架构师该如何工作
    软件架构师基本要求:1.对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等;2.具备领导素质,以在各小组之间推进技术工作,......
  • 23春第一周学习总结--软件架构入门
    软件架构(softwarearchitecture)就是软件的基本结构。合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。......
  • 【系统架构设计师】计算机组成与体系结构 ② ( 冯诺依曼结构 | 哈佛结构 | 常见的芯片
    文章目录​​一、冯诺依曼结构​​​​二、哈佛结构​​​​三、常见的芯片​​一、冯诺依曼结构冯诺依曼结构:指令存储器与数据存储器应用场景:PC机,使用i3,i......
  • 【系统架构设计师】计算机组成与体系结构 ① ( 计算机组成 | CPU | 存储器 | 总线 | I
    文章目录​​一、计算机组成与体系结构​​​​二、计算机组成结构​​​​三、CPU组成​​​​1、运算器​​​​2、控制器​​一、计算机组成与体系结构计算机组成与体......
  • Istio从入门到精通——Istio 架构
    Istio架构https://istio.io/latest/docs/ops/deployment/architecture/Istio服务网格在逻辑上分为 数据平面 和 控制平面。The dataplane iscomposedofa......
  • 架构师
    怎么定义架构呢?以上面这个例子为例,把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有......
  • 架构漫谈读后感
    今天阅读了架构漫谈,下面是读后感     第一节讲的是什么是架构,在文中,他首先列举了Wikepadia上的定义。然后他从早期人们为了生命的延续分工合作来解释了为什么要产......
  • 架构漫谈感想
     什么是架构?根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并......
  • 架构漫谈1-4
    第一篇的标题叫做什么是架构,这是一个很基础的问题第一篇中提出架构在Wikipedia上定义是Architecture isboththeprocessandtheproductofplanning,designing,an......