首页 > 其他分享 >1、etcd基础介绍

1、etcd基础介绍

时间:2023-05-03 17:34:24浏览次数:56  
标签:存储 etcd 基础 介绍 API 模块 节点 分布式

互联网技术发展真的快,层出不穷的新技术。最近项目使用到了etcd,自己之前在部署k8s集群的时候玩过,但是并没有系统的学习。正好趁这个机会,系统性的学习下。文章中的内容有些是来自官方文档,有些是来自网上的资料,有些是自己的思考。如果有不错的地方,请不吝赐教,大家有好的教程,也欢迎评论区留言,学习学习。感谢感谢!

这一系列文章是etcd的入门教程,并不是深入的教程,适合像我这种对 etcd 了解不深入或者完全不了解的同学,大牛请绕道。

1、什么是etcd

etcd官网

etcd-github地址

对于 etcd 的定义,我们来看一看官方是如何描述的。描述如下:A distributed, reliable key-value store for the most critical data of a distributed system。翻译过来就是:一个分布式、可靠的键值存储系统,用于存储分布式系统中最关键的数据。

对于上面这句话,我们可以提取出来几个关键词,分布式、可靠的、键值存储系统、最关键的数据。对于在互联网行业待过一段时间的同学,应该对前面三个词比较熟悉,最后一个最关键的数据如何理解呢?我说说自己的理解。

etcd 中存储的是这个分布式系统中最重要的数据,例如配置信息、元数据等,这些数据对于整个分布式系统而言是至关重要的,一旦出现问题,就可能导致系统出现故障或者问题。

通过上面,我们知道了 etcd 是分布式系统中的基础设施,为分布式系统提供了可靠的数据存储和管理能力。它是由CoreOS开发的,k8s 中的信息就是存储在 etcd 中,是 k8s 集群管理工具的核心组件之一。

etcd采用 Raft一致性算法来保证数据的一致性和可靠性,支持多节点部署,可以容忍节点故障和网络分区等故障情况。etcd的使用非常广泛,除了作为 k8s 的核心组件之一,还可以用于服务发现、配置管理、分布式锁等场景。etcd提供了简单易用的API,支持多种语言的客户端,可以方便地集成到各种应用中。

2、etcd的应用场景

通过上面的了解,感觉 etcd 还是挺牛逼的,那 etcd的应用场景一般在那些地方呢?

  • 服务发现:etcd可以存储服务的地址和端口信息,例如Web服务、数据库服务等。客户端可以通过etcd API查询服务的地址和端口信息,从而实现服务发现和负载均衡。

  • 分布式锁:etcd可以实现分布式锁,多个进程可以通过etcd API竞争锁资源,从而实现分布式同步和协调。

  • 集群管理:etcd可以存储集群的状态信息,例如节点状态、领导者选举结果等。应用程序可以通过etcd API查询集群状态信息,从而实现集群管理和监控。

  • 分布式任务调度:etcd可以存储任务的状态信息,例如任务的执行状态、执行结果等。应用程序可以通过etcd API查询任务状态信息,从而实现分布式任务调度和监控。

  • 配置管理:etcd可以存储应用程序的配置信息,例如数据库连接信息、日志级别、缓存大小等。应用程序可以通过etcd API读取这些配置信息,从而实现动态配置管理。

  • 容器编排:k8s中集群管理的核心组件之一就是etcd。

上面是 etcd 的一些常用的场景,等大家熟悉 etcd 后,可以根据自己的实际需求,来选择是否需要使用到 etcd 这个组件。

3、为什么使用etcd

下面再来说说 etcd 的优点,这样跟同事吹牛的时候或者面试的时候,可以吹一吹,哈哈!

  • 可靠性:etcd采用Raft算法实现分布式一致性,保证数据的可靠性和一致性。
  • 高可用性:etcd支持多节点部署,节点之间通过Raft协议进行数据同步和选举,保证系统的高可用性。
  • 灵活性:etcd提供了RESTful API和gRPC API,可以方便地与各种编程语言进行交互。
  • 安全性:etcd支持TLS加密和访问控制,可以保证数据的安全性。
  • 可扩展性:etcd支持水平扩展,可以通过添加更多的节点来提高系统的性能和容量。

4、etcd架构图

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

  • Client层:Client层包括client v2 和v3两个大版本API客户端,提供了简介易用的API,同时支持负载均衡、节点间故障自动转移,可极大降低业务使用etcd复杂度,提升开发效率、增强服务的可用性。

  • API网络层:API网络层主要包括client访问server和server节点之间的通信协议。一方面,client访问etcd server 的API分为V2和V3两大版本。V2 API使用http/1.x协议,v3 API使用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模块主要由treeIndex模块和boltdb模块组成。

  • 存储层:存储层包含预习日志(WAL)模块、快照(Snapshot)模块、boltdb模块。其中WAL可保障etcd crash后数据不丢失,boltdb则保存了集群元数据和用户写入数据。

参考资料:

bilibili视频教程

标签:存储,etcd,基础,介绍,API,模块,节点,分布式
From: https://www.cnblogs.com/huageyiyangdewo/p/17369354.html

相关文章

  • Docker Swarm介绍及搭建集群
    1、前言    相信Docker技术大家都有所了解,单个Docker能发挥的作用毕竟有限,也不便于管理,所以Docker得组集群来使用才能发挥强大的技术优势。既然要组集群那就涉及诸如Docker的资源调度、管理等等一系列问题。目前涉及Docker集群的三个主要的技术无外乎Swarm、Kubernetes、Mes......
  • Salesforce LWC学习(四十三) lwc 零基础学习路径的视频已上传B站
    本篇参考:https://www.bilibili.com/video/BV1QM411G7pN/还记得salesforce零基础学习(一百二十五)零基础学习SF路径 中描述的那样,预计今年年底以前基于0基础学习的内容录制成视频,更好的更方便的进行学习和互动。当时的一个动机是以前公司做veeva的同事或者java以及.net转过来的同事......
  • Java基础
    目录Java基础注释标识符数据类型变量包机制JavaDoc生成文档Java基础注释单行//,多行/*注释/文档注释/**@Description*@Author*/标识符数据类型longnum=30L;floatnum=10.1F;最好完全避免用浮点数进行比较(用Bigdecimal)强制类型转换(不能对boolean转换):(类型)......
  • Etcd选主源码分析
    Etcdv3.4.0Raft角色Raft集群中节点分为3种状态:领导者Leader、追随者Follower、候选者Candidate。正常情况下,集群中的节点只存在Leader与Follower这2种状态。Leader:负责日志的同步管理,处理写请求,与Follower保持心跳。Follower:响应Leader的日志同步请求和Candidate的投票请求,把......
  • 【web 开发基础】PHP 中的递归函数
    前言什么是递归?递归做为一种算法在程序设计语言中广泛应用。所谓的递归简单地概括就是程序调用自身的编程技巧称为递归(recursion)。递归在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学......
  • 分布式kv存储系统之etcd集群管理
    etcd简介etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 官方网站:https://etcd.io/;github地址:https://github.com/etcd-io/etcd;官方硬件......
  • TiCDC 源码解读(5)-- TiCDC DDL 事件处理逻辑 与 Filter 实现介绍
    作者:asddongmen内容概要本文是TiCDC源码解读的第五篇,本文将会介绍TiCDC对DDL的处理方式和Filter功能的实现(基于TiCDCv6.5.0版本代码),文章将会围绕以下4个问题展开。为什么TiCDC只用Owner节点来同步DDL?DDL事件会对同步任务的进度有什么影响?TiCDC是怎么在内......
  • 2023-05-02 量学基础 换挡买点
    1.放量上攻,缩量下跌,阳盖阴买入  1.放量上攻,缩量下跌,阳盖阴买入案例1:李16期答疑课2020年5月2号271.位置:攻守冲防的冲的位置2.压力:上方还有一堆套牢盘,所以无法直接上攻3.当下:(1)高量(2)第二天缩量站上高量(3)第三天首阴,放量阴,压力位(4)之后缩量调整。4.买入:(1)底部阳盖......
  • java基础-流程控制语句,顺序结构、分支结构、循环结构
    一、循序结构顺序结构语句是java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。二、分支结构-if、switch1、if的三种语法结构//1if(关系表达式){表达体内容;}//2if(关系表达式1){表达体内容;}elseif(关系表达式2){表达体内容;}//3if(......
  • java基础-原码、反码、补码
    原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。例如,56,它的原码是00111000反码:正数的补码反码是其本身,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。补码:正数的补码反码是其本身,负数的补码是在其反码的基础上+1。计算机中的存储和计算都是以补码的形式进......