etcd
文章平均质量分 92
etcd
wanghaichao1234
这个作者很懒,什么都没留下…
展开
-
ETCD 十六 服务注册与发现
微服务架构中的服务注册与发现在微服务架构中,多个微服务间的通信需要依赖服务注册与发现组件获取指定服务实例的地址信息,才能正确地发起 RPC 调用,保证分布式系统的高可用、高并发。服务注册与发现主要包含两部分:服务注册的功能与服务发现的功能。服务注册是指服务实例启动时将自身信息注册到服务注册与发现中心,并在运行时通过心跳等方式向其汇报自身服务状态;服务发现是指服务实例向服务注册与发现中心获取其他服务实例信息,用于远程调用。下面我们来看服务注册与发现中心的职责和服务实例进行服务注册的基本流程,...原创 2022-03-03 15:54:28 · 3050 阅读 · 0 评论 -
ETCD 十五 分布式锁
为什么需要分布式锁?在分布式环境下,数据一致性问题一直是个难点。相比于单进程,分布式环境的情况更加复杂。分布式与单机环境最大的不同在于它不是多线程而是多进程。由于多线程可以共享堆内存,因此可以简单地采取内存作为标记存储位置。而多进程可能都不在同一台物理机上,就需要将标记存储在一个所有进程都能看到的地方。例如秒杀场景就是一个常见的多进程场景。订单服务部署了多个服务实例,如秒杀商品有 4 个,第一个用户购买 3 个,第二个用户购买 2 个,理想状态下第一个用户能购买成功,第二个用户提示购买失败,反...原创 2022-03-03 15:22:45 · 1545 阅读 · 1 评论 -
ETCD 十四 服务端处理客户端请求过程
请求过程概述客户端层如 clientv3 库和 etcdctl 等工具,用户通过 RESTful 方式进行调用,降低了 etcd 的使用复杂度;API 接口层提供了客户端访问服务端的通信协议和接口定义,以及服务端节点之间相互通信的协议。etcd v3 使用 gRPC 作为消息传输协议;etcd Raft 层负责 Leader 选举和日志复制等功能,除了与本节点的 etcd server 通信之外,还与集群中的其他 etcd 节点进行交互,实现分布式一致性数据同步的关键工作;etcd 的业务逻辑层,包..原创 2022-03-03 14:36:29 · 985 阅读 · 0 评论 -
ETCD 十三 启动ETCD Server过程
etcd Server 启动总览etcd 服务端的启动包括两大块: etcdServer 主进程,直接或者间接包含了 raftNode、WAL、Snapshotter 等多个核心组件,可以理解为一个容器; 另一块则是 raftNode,对内部 Raft 协议实现的封装,暴露简单的接口,用来保证写事务的集群一致性。 etcd 可分为 Client 客户端层、API 网络接口层、etcd Raft 算法层、逻辑层和 etcd 存储层。如下图所示:etcd 服务端对 Etc..原创 2022-03-03 09:17:32 · 4724 阅读 · 0 评论 -
ETCD 十二 Lease租约
ETCD的Lease 租约,它类似 TTL(Time To Live),用于 etcd 客户端与服务端之间进行活性检测。在到达 TTL 时间之前,etcd 服务端不会删除相关租约上绑定的键值对;超过 TTL 时间,则会删除。因此我们需要在到达 TTL 时间之前续租,以实现客户端与服务端之间的保活。Lease 也是 etcd v2 与 v3 版本之间的重要变化之一。etcd v2 版本并没有 Lease 概念,TTL 直接绑定在 key 上面。每个 TTL、key 创建一个 HTTP/1.x 连...原创 2022-03-02 09:26:52 · 2924 阅读 · 0 评论 -
ETCD 十一 watch机制
etcd v2 和 v3 版本之间发生的其中一个重要变化就是 watch 机制的优化。etcd v2 watch 机制采用的是基于 HTTP/1.x 协议的客户端轮询机制,历史版本则通过滑动窗口存储。在大量的客户端连接场景或集群规模较大的场景下,etcd 服务端的扩展性和稳定性都无法保证。etcd v3 在此基础上进行优化,满足了 Kubernetes Pods 部署和状态管理等业务场景诉求。watch 可以用来监听一个或一组 key,key 的任何变化都会发出事件消息。某种意义上讲,etcd 也是..原创 2022-03-01 15:27:14 · 4659 阅读 · 0 评论 -
ETCD 十 分布式事务
etcd 实现了在一个事务中,原子地执行冲突检查、更新多个 keys 的值。除此之外,etcd 将底层 MVCC 机制的版本信息暴露出来,根据版本信息封装出了一套基于乐观锁的事务框架 STM,并实现了不同的隔离级别。etcd 使用了不到四百行的代码实现了迷你事务,其对应的语法为If-Then-Else。etcd 允许用户在一次修改中批量执行多个操作,即这一组操作被绑定成一个原子操作,并共享同一个修订号。其写法类似 CAS,如下所示:Txn().If(cond1, cond2, ...).The..原创 2022-03-01 14:58:44 · 1500 阅读 · 0 评论 -
ETCD 九 MVCC
etcd v2 版本存在丢弃历史版本数据的问题,仅保留最新版本的数据。但是这样做引起了一系列问题,比如 watch 机制依赖历史版本数据实现相应功能,因此 etcd v2 又采取了在内存中建立滑动窗口来维护部分历史变更数据的做法,然而在大型的业务场景下还是不足以支撑大量历史变更数据的维护。到了 etcd v3 版本,该功能得到了更新,etcd v3 支持 MVCC,可以保存一个键值对的多个历史版本。MVCC 模块是 etcd 的核心模块。MVCC 作为底层模块,为上层提供统一的调用方法。这一讲我们将..原创 2022-02-28 14:02:05 · 979 阅读 · 0 评论 -
ETCD 八 分布式一致性raft模块
etcd 集群中的多个节点不可避免地会出现相互之间数据不一致的情况。但不管是同步复制、异步复制还是半同步复制,都会存在可用性或者一致性的问题。我们一般会使用共识算法来解决多个节点数据一致性的问题,常见的共识算法有 Paxos和Raft。ZooKeeper 使用的是 ZAB 协议,etcd 使用的共识算法就是Raft。etcd raft模块 对外提供的接口raft模块中的主要对象是节点。可以使用 raft.StartNode 创建新的Node节点 ,也可以使用 raft.RestartNode..原创 2022-02-28 10:08:52 · 1542 阅读 · 0 评论 -
ETCD 七 gRPC 通信接口以及客户端
client/v3 client定义// Client provides and manages an etcd v3 client session.type Client struct { Cluster // 向集群里增加 etcd 服务端节点之类,属于管理员操作。 KV //我们主要使用的功能,即操作 K-V。 Lease //租约相关操作,比如申请一个 TTL=10 秒的租约。 Watcher //观察订阅,从而监听最新的数..原创 2022-02-26 11:10:55 · 876 阅读 · 0 评论 -
ETCD 六 etcd总体架构
etcd 源码结构etcd 项目代码的目录结构:包名 用途 api原创 2022-02-26 10:05:45 · 944 阅读 · 0 评论 -
ETCD 五 动态配置etcd集群和调优
etcd 集群部署之后,动态调整集群是经常发生的情况,比如增加 etcd 节点、移除某个 etcd 节点,或者是更新 etcd 节点的信息,这些情况都需要我们动态调整 etcd 集群。集群运行时重配置集群运行时重配置的前提条件是只有在大多数集群成员都在正常运行时,etcd 集群才能处理重配置请求。从两个成员的集群中删除一个成员是不安全的,因为两个成员的集群中的大多数也是两个,如果在删除过程中出现故障,集群就可能无法运行,需要从多数故障中重新启动。因此 etcd 官方建议:生产环境的集群大..原创 2022-02-23 14:14:42 · 1985 阅读 · 0 评论 -
ETCD 四 etcd 网关与 gRPC-Gateway
etcd 网关什么是etcd 网关etcd 网关是一个简单的TCP 代理,可将网络数据转发到 etcd 集群。网关是无状态且透明的,它既不会检查客户端请求,也不会干扰集群响应,支持多个 etcd 服务器实例,并采用简单的循环策略。etcd 网关将请求路由到可用端点,并向客户端隐藏故障,使得客户端感知不到服务端的故障。后期可能会支持其他访问策略,例如加权轮询。我们使用客户端连接到 etcd 服务器时,每个访问 etcd 的应用程序必须知道所要访问的 etcd 集群实例的地址,即用来提供客户端服..原创 2022-02-22 10:46:42 · 2306 阅读 · 1 评论 -
ETCD 三 etcdctl
etcdctl常用命令:etcdctl 支持的命令大体上分为数据库操作和非数据库操作两类,其中数据库的操作命令是最常用的命令 。数据库操作数据库操作基本围绕着对键值和目录的 CRUD 操作(即增删改查),及其对应的生命周期管理。我们上手这些操作其实很方便,因为这些操作是符合 REST 风格的一套 API 操作。键操作键操作包括最常用的增删改查操作,包括 PUT、GET、DELETE 等命令。PUT 设置或者更新某个键的值GET 命令还提供了根据指定的键(key)...原创 2022-02-21 16:04:09 · 965 阅读 · 0 评论 -
ETCD 一 什么是ETCD
etcd简介云原生架构中重要的基础组件,因为etcd 项目是 Kubernetes 内部的一大关键组件,目前有很多项目都依赖 etcd 进行可靠的分布式数据存储。云原生中的微服务应用属于分布式系统的一种落地实践。在分布式环境中,由于网络的复杂性、不确定性以及节点故障等情况,会产生一系列的问题。最常见的、最大的难点就是数据存储不一致的问题,即多个服务实例自身的数据或者获取到的数据各不相同。因此我们需要基于一致性的存储组件构建可靠的分布式系统。那什么是etcd呢?etcd是一个分布式、可靠...原创 2022-02-21 10:41:04 · 4199 阅读 · 0 评论