Etcd 初步认识

简介: 近期在接触的新项目中在使用Etcd,但是在使用的过程中公司对其的使用仅使用服务注册的功能,并未将其发挥真正的用处。学习一波,将来可以在项目中使用进行改进。

近期在接触的新项目中在使用Etcd,但是在使用的过程中公司对其的使用仅使用服务注册的功能,并未将其发挥真正的用处。学习一波,将来可以在项目中使用进行改进。

什么是Etcd

官网对Etcd的解释:

  • A highly-available key value store for shared configuration and service discovery.
    即一个用于配置共享和服务发现的键值存储系统。

从定义上可发现,

  • Etcd是一个存储组件,以键值的方式进行存储
  • 用于配置共享 和 服务发现

为什么需要Etcd

Etcd是一款实现元数据信息可靠存储的组件。在分布式系统中,数据一致性是比较大的难点,所以需要一个基于一致性的存储组件来构建可靠的分布式系统。集中管理各种服务的配置信息,共享,以及用于服务发现。

Etcd特性

  • 简单:安装简单,且因提供HTTP API,使用也很简单
  • 存储:数据分层存储在文件系统中,类似我们平常使用的文件系统
  • Watch机制:监测指定的键、前缀目录的更改,并对更改时间进行通知
  • 安全通信:支持SSL证书验证
  • 高性能:单实例Etcd支持2K/s读操作
  • 一致可靠:基于Raft算法,实现分布式系统内部数据存储、服务调用的一致和高可用

使用场景

  • 键值对存储

    • 存储功能
  • 服务注册与发现

    • 各服务启动时都注册到etcd上,客户端可以从etcd上获取服务列表,实现服务发现功能
  • 消息发布与订阅

    • 服务提供者发布对应主题消息,消费者订阅他们关心的主题。有发布则就有订阅事件,通知给订阅者
  • 分布式锁

    • 存储在etcd上的值是全局一致的,可将其作为锁使用

核心架构

image-20210520222454478.png

  • etcd Server:对外接收和处理客户端请求
  • grpc Server:处理ectd各节点间的通信和信息同步
  • MVCC 对版本控制,每次的对存储模块和键值对的操作都会记录存储
  • WAL:预写式日志,即数据提交前会先记录到日志
  • Snapshot:快照,存储某一时刻的etcd数据,防止WAL日志过多(Snapshot和WAL结合使用有效进行数据存储和节点故障恢复)
目录
相关文章
|
存储 JSON Kubernetes
查看k8s的etcd数据
查看k8s的etcd数据
1782 0
查看k8s的etcd数据
|
存储 JSON NoSQL
ETCD教程-4.深入ETCD
目前etcd主要经历了3个大的版本,分别为etcd 0.4版本、etcd 2.0版本和etcd 3.0版本。
891 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
|
7月前
|
存储 负载均衡 算法
1. Etcd 介绍
1. Etcd 介绍
|
JSON API Go
etcd的安装和使用
etcd的安装和使用
226 0
|
7月前
|
算法 Java Go
ETCD(六)ETCD和Zookeeper
ETCD(六)ETCD和Zookeeper
172 0