2023年4月6日

摘要: DAY6 :ETCD的leasing机制 前文说过lease与leasing的区别,今天就来看leasing具体是什么: leasing是指在ETCD中使用lease进行资源分配和管理的过程。当一个client希望使用某个资源时,它可以请求ETCD分配一个lease,并在这个lease的有效期内保持 阅读全文
posted @ 2023-04-06 16:43 夕午 阅读(80) 评论(0) 推荐(0) 编辑

2023年4月5日

摘要: DAY5 :ETCD的Lease机制 Lease 机制简介 除了前面文章中提到的分布式锁,lease机制还广泛应用于服务注册与发现场景,需要与watch机制相配合。本文主要做对Lease部分的源码分析。 一个租约可以关联ETCD集群中的一个或多个key。当租约过期或者被撤销时,关联的key会被自动删 阅读全文
posted @ 2023-04-05 21:25 夕午 阅读(179) 评论(0) 推荐(0) 编辑

2023年4月4日

摘要: DAY4 :ETCD的WAL WAL(Write-Ahead Logging)是数据库中保证数据持久化的常用技术。每次真正操作数据之前,先往磁盘上追加一条日志。由于日志是追加的(顺序写,而不是随机写),所以写入性能非常高。 如果在写入日志之前,发生系统崩溃,那么数据肯定是没有写入磁盘的;如果在写入日 阅读全文
posted @ 2023-04-04 15:40 夕午 阅读(215) 评论(0) 推荐(0) 编辑

2023年4月2日

摘要: DAY3 :ETCD分布式锁: etcd/contrib/lock 这一部分代码主要是为了展示ETCD实现分布式锁的原理(Lease),并且贴出了 DDIA作者的一篇博文作为应用场景建模。那么我们就先来读这篇博文吧。 为什么要使用分布式锁 防止数据竞争:多个分布式下节点可能会同时修改同一份数据,如果 阅读全文
posted @ 2023-04-02 15:37 夕午 阅读(136) 评论(0) 推荐(0) 编辑

2023年3月31日

摘要: DAY0: ETCD 架构 下图中展示了 etcd 如何处理一个客户端请求涉及到的模块和流程。图中淡紫色的矩阵表示 etcd ,它包括如下几个模块: etcd server: 对外接受客户端的请求,请求 etcd 代码中的 etcd server 目录,其中还有一个 raft.go 的模块与 etc 阅读全文
posted @ 2023-03-31 19:00 夕午 阅读(158) 评论(0) 推荐(0) 编辑
摘要: DAY1 :阅读raftexample:etcd/contrib/raftexample raftexample 包括三个组件:一个基于 raft 的kv store、一个 REST API Server、一个基于 etcd raft 实现的 Raft Node。其中Raft Node也拥有一个Ht 阅读全文
posted @ 2023-03-31 19:00 夕午 阅读(78) 评论(0) 推荐(0) 编辑
摘要: DAY2 :阅读raftexample: etcd/contrib/raftexample serveChannels() func (rc *raftNode) serveChannels() { snap, err := rc.raftStorage.Snapshot() if err != n 阅读全文
posted @ 2023-03-31 18:57 夕午 阅读(45) 评论(0) 推荐(0) 编辑