1. Etcd 介绍

简介: 1. Etcd 介绍

什么是 Etcd

etcd是一个Go语言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值( key-value)存储、配置共享和服务发现等功能。

应用场景

分布式系统中的数据分为控制数据和应用数据。etcd的使用场景默认处理的数据都是控制数据,对于应用数据,只推荐数据量很小,但是更新访问频繁的情况。常见的etcd使用场景包括:服务发现、分布式锁、分布式队列、分布式通知和协调、主备选举等。

架构

上图是etcd基础架构图,按照分层模型,etcd可分为Client层、API网络层、Raft算法层、逻辑层和存储层。 这些层的功能如下:

  • Client层: 提供了简洁易用的API,同时支持负载均衡、节点间故障自动转移,可极大降低业务使用etcd复杂度,提升开发效率、服务可用性。
  • API网络层: API网络层主要包括client访问server和server节点之间的通信协议。 一方面,client访问etcd server的API分为v2和v3两个大版本。v2API使用HTTP/1.x协议,v3API使用gRPC协议。同时v3通过etcd grpc-gateway组件也支持HTTP/1.x协议,便于各种语言的服务调用。另一方面, server之间通信协议,是指节点间通过Raft算法实现数据复制和Leader选举等功能时使用的HTTP协议
  • Raft算法层: Raft算法层实现了Leader选举、日志复制、ReadIndex等核心算法特性,用于保障etcd多个节点间的数据一致性、提升服务可用性等,是etcd的基石和亮点
  • 功能逻辑层: etcd核心特性实现层,如典型的KVServer模块、MVCC模块、Auth鉴权模块、Lease租约模块、Compactor压缩模块等,其中MVCC模块主要由treelndex模块和boltdb模块组成。
  • 存储层:存储层包含预写日志(WAL)模块、快照(Snapshot)模块、boltdb模块。其中WAL可保障etcd crash后数据不丢失,boltdb则保存了集群元数据和用户写入的数据。


相关文章
|
存储 JSON Kubernetes
查看k8s的etcd数据
查看k8s的etcd数据
1786 0
查看k8s的etcd数据
|
存储 JSON NoSQL
ETCD教程-4.深入ETCD
目前etcd主要经历了3个大的版本,分别为etcd 0.4版本、etcd 2.0版本和etcd 3.0版本。
893 0
ETCD教程-4.深入ETCD
|
4月前
|
存储 Kubernetes 算法
在K8S中,etcd 及其特点?
在K8S中,etcd 及其特点?
|
4月前
|
存储 Kubernetes API
在K8S中,etcd 适应的场景?
在K8S中,etcd 适应的场景?
|
4月前
|
存储 Kubernetes 负载均衡
在K8S中,etcd适应的场景有哪些?
在K8S中,etcd适应的场景有哪些?
|
4月前
|
存储
coredns使用etcd
coredns使用etcd
|
存储 Kubernetes 算法
【K8S系列】深入解析etcd
【K8S系列】深入解析etcd
337 0
|
JSON API Go
etcd的安装和使用
etcd的安装和使用
226 0
|
7月前
|
算法 Java Go
ETCD(六)ETCD和Zookeeper
ETCD(六)ETCD和Zookeeper
173 0
|
存储 Unix Linux
etcd集群搭建
etcd集群搭建