deepwzh的技术笔记
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • Golang
  • Python
  • Cpp
杂项
前端开发
  • 计算机网络
  • 操作系统
  • 数据库
云原生
Devops
AIGC
关于作者
  • 云原生
  • Helm
  • Etcd
  • harbor
  • 学习资料
  • Fass
  • argo

    • argo
    • Argo cli 用法
  • Docker

    • Docker
    • docker 镜像打包
    • docker 镜像加速
    • 常用命令
    • 进阶 docker 资料
    • distribution/distribution
    • Docker
    • dockerfile 与镜像构建
  • K8s

    • K8s
    • 日志收集
    • 服务网格
    • 常用命令
    • 污点与容忍度
    • Kubectl
    • 应用发布
    • 存储
    • Cert-Manager
    • K8s Pod 生命周期与健康检查
    • 负载均衡器
    • 压力节点驱逐
    • Helm chart
    • 准入控制器

Etcd

概述

etcd 是一个高可用的分布式键值存储系统,由 CoreOS 团队于 2013 年发起,采用 Go 语言实现。它主要用于配置管理、服务发现和分布式协调,广泛应用于 Kubernetes 等云原生系统中。

特点

• 简单:安装配置简单,提供 HTTP API 进行交互。

• 安全:支持 SSL 证书验证。

• 快速:单实例支持每秒 2k+ 读操作。

• 可靠:基于 Raft 算法,保证数据的一致性和高可用性。

• 高可用:支持多节点集群,容错能力强。

核心概念

• Raft 协议:etcd 使用 Raft 算法保证数据一致性,包含 Leader、Follower 和 Candidate 三种角色。Raft 算法

• Node:一个 Raft 状态机实例。

• Member:一个 etcd 实例,管理一个 Node 并为客户端提供服务。

• Cluster:由多个 Member 组成的协同工作集群。

• WAL:预写式日志,用于持久化存储。

• Snapshot:快照,防止 WAL 文件过多。

数据读写

• 读写顺序:所有数据流向从 Leader 流向 Follower,保证强一致性。

• Leader 选举:通过 Raft 协议选举 Leader,Leader 处理所有数据提交。

• 数据写入:写入请求被 Leader 处理并分发给多数节点后,视为成功写入。

应用场景

• 服务注册与发现:用于分布式系统中的服务注册与发现。

• 消息发布与订阅:支持消息的发布与订阅机制。

• 分布式锁:基于 Raft 算法实现分布式锁。

• 配置管理:存储和管理分布式系统的配置信息。

安装与部署

• 单机部署:适用于开发和测试环境。

• 集群部署:推荐至少 3 个节点,保证高可用性和容错能力。

运维与监控

• 备份与恢复:使用 etcdctl snapshot 命令进行备份和恢复。

• 健康检查:定期检查集群健康状态,确保高可用性。

• 性能优化:针对环境情况调整选举超时时间,使用高性能磁盘。

Prev
Helm
Next
harbor