摘要:
DAY6 :ETCD的leasing机制 前文说过lease与leasing的区别,今天就来看leasing具体是什么: leasing是指在ETCD中使用lease进行资源分配和管理的过程。当一个client希望使用某个资源时,它可以请求ETCD分配一个lease,并在这个lease的有效期内保持 阅读全文
2023年4月6日
2023年4月5日
摘要:
DAY5 :ETCD的Lease机制 Lease 机制简介 除了前面文章中提到的分布式锁,lease机制还广泛应用于服务注册与发现场景,需要与watch机制相配合。本文主要做对Lease部分的源码分析。 一个租约可以关联ETCD集群中的一个或多个key。当租约过期或者被撤销时,关联的key会被自动删 阅读全文
2023年4月4日
摘要:
DAY4 :ETCD的WAL WAL(Write-Ahead Logging)是数据库中保证数据持久化的常用技术。每次真正操作数据之前,先往磁盘上追加一条日志。由于日志是追加的(顺序写,而不是随机写),所以写入性能非常高。 如果在写入日志之前,发生系统崩溃,那么数据肯定是没有写入磁盘的;如果在写入日 阅读全文
2023年4月2日
摘要:
DAY3 :ETCD分布式锁: etcd/contrib/lock 这一部分代码主要是为了展示ETCD实现分布式锁的原理(Lease),并且贴出了 DDIA作者的一篇博文作为应用场景建模。那么我们就先来读这篇博文吧。 为什么要使用分布式锁 防止数据竞争:多个分布式下节点可能会同时修改同一份数据,如果 阅读全文
2023年3月31日
摘要:
DAY0: ETCD 架构 下图中展示了 etcd 如何处理一个客户端请求涉及到的模块和流程。图中淡紫色的矩阵表示 etcd ,它包括如下几个模块: etcd server: 对外接受客户端的请求,请求 etcd 代码中的 etcd server 目录,其中还有一个 raft.go 的模块与 etc 阅读全文
摘要:
DAY1 :阅读raftexample:etcd/contrib/raftexample raftexample 包括三个组件:一个基于 raft 的kv store、一个 REST API Server、一个基于 etcd raft 实现的 Raft Node。其中Raft Node也拥有一个Ht 阅读全文
摘要:
DAY2 :阅读raftexample: etcd/contrib/raftexample serveChannels() func (rc *raftNode) serveChannels() { snap, err := rc.raftStorage.Snapshot() if err != n 阅读全文