Kubernetes CSI-基本原理 发表于 2023-02-16 | 分类于 Kubernetes | 0 | 阅读次数 2012 问题在学习之前,对 PV 的理解是,它是存储的抽象,它将存储从底层基础设施中解耦出来,提供了一种对存储资源的管理方式。对 PVC 的理解是,它是开发人员或者集群使用人员对存储需求的声明,这些人员通过 PVC 来描述他们需要多少存储空间,比如声明他们需要 2GB SSD,而不需要对存储介质等相关细节有 阅读全文 »
Etcd Compact 发表于 2023-02-03 | 分类于 Etcd | 0 | 阅读次数 2387 整体架构etcd 中每一次更新、删除 key 的操作,treeIndex 的 keyIndex 索引中都会追加一个版本号,boltdb 中也都会生成一个新版本的 boltdb key 和 value。随着不停更新、删除,etcd 进程内存占用和 db 文件会越来越大,最终导致 etcd OOM 和 阅读全文 »
Etcd DB Quota 发表于 2023-01-15 | 分类于 Etcd | 0 | 阅读次数 3525 DB Quota 概述Etcd DB 的 quota 是由参数 --quota-backend-bytes 决定:填 0 的话,使用的是 etcd 默认的 2GB。当填小于 0 的话,会禁用 quota 功能。不建议这么做,因为这会让 db 处于失控状态,导致性能下降。填大于 0 的值时,社区建议不 阅读全文 »
boltdb 介绍 发表于 2023-01-06 | 分类于 Etcd | 0 | 阅读次数 3220 基本概述BoltDB 是一个纯 Go 语言编写的嵌入式键/值数据库。它提供了一种简单、高效的方式来存储键值对。BotlDB 的特点有:单文件数据库:BoltDB 使用单个文件存储所有数据,方便备份和复制。对于 Etcd 来说,etcd 数据目录下的 member/snap/db 文件就是该数据库文件 阅读全文 »
Etcd MVCC 机制 发表于 2022-12-19 | 分类于 Etcd | 0 | 阅读次数 2806 前言etcd v3 中 MVCC(Multiversion Concurrency Control) 机制的核心思想是保存 key-value 的多个历史版本。在 MVCC 中,更新一个 key-value 数据的时候,并不会直接覆盖原来的数据,而是会新增一个版本号来存储新的数据。当删除数据的时候, 阅读全文 »
Etcd WAL 日志&&Snapshot 发表于 2022-12-13 | 分类于 Etcd | 0 | 阅读次数 2718 前言之前讲 Raft 协议的提过,用户提交写请求之后,etcd 会将用户请求打包成一个 proposal,交给 raft 模块。raft 模块会将 proposal 打包成一条日志条目,之后会将该日志条目会发送给其他 follower 节点,同时也会将日志条目持久话存储到 WAL 日志中。因此,本文 阅读全文 »
Etcd 中 Raft 实现的概述 发表于 2022-12-03 | 分类于 Etcd | 0 | 阅读次数 2571 实现概述Leader 选举针对 leader 选举,etcd 基本是按照 Raft 协议中的方式实现的,其中有几点需要关注下,etcd 默认的心跳间隔时间(heartbeat-interval)是 100ms, 默认 election timeout 时间是 1000ms。需要根据实际部署环境、业务 阅读全文 »
Raft 算法原理 发表于 2022-11-25 | 分类于 Etcd | 0 | 阅读次数 3380 Raft 简介复制状态机(Replicated State Machine)是一种分布式系统架构模式,系统由一组相同的状态机组成,它们在多个服务器(节点)上运行,并确保即使在出现故障的情况下也能够保持一致的状态。复制状态机确保数据一致性的核心思想是:相同的初始化状态+相同的输入=相同的结束状态。它通 阅读全文 »
Etcd gRPC API 简介 发表于 2022-11-17 | 分类于 Etcd | 0 | 阅读次数 3426 基础Etcd 提供了以下几个 gRPC Service 和相关 API,详见 官方文档-etcd3 API。相关的 gRPC Service 定义可见 etcd 源码的 api/etcdserverpb/rpc.proto 文件(源码版本为 v3.5.1)。KV:创建/更新/删除/获取 key-va 阅读全文 »
Etcd 事务介绍 发表于 2022-11-06 | 分类于 Etcd | 0 | 阅读次数 3590 事务事务(Transaction)是数据库管理中的一个概念。指一系列的操作步骤,要么完全执行,要么完全不执行。事务用于保证数据库的完整性和一致性。事务具有四个主要特性,通常称为 ACID 特性:原子性(Atomicity):事务作为一个整体被执行,事务中的所有操作要么全部完成,要么全部不完成。如果事 阅读全文 »