最新 最热

golang源码分析:etcd(13)

我们来看下lease目录,了解下租约是如何实现的。首先我们还是从server的初始化地方开始:server/etcdserver/server.go,调用了NewLessor来初始化租约管理器

2023-09-20
5

golang源码分析:btree

github.com/google/btree是golang实现的一个平衡多叉树。它是etcd索引使用的树形结构。它使用起来非常简单。

2023-09-20
4

golang源码分析:etcd(12)

etcd后端存储用的是bolt,在分析完server如何初始化raftNode流程后,我们看下后端存储bolt-db的初始化流程。

2023-09-20
3

Rust源码分析——Rc 和 Weak 源码详解

rust 通过使用引用计数智能指针 Rc 和 Arc 来解决上面的问题。当我们对一个被 Rc 所标识的数据进行 clone() 的时候,并不会复制其内部数据,只是增加引用计数,而当一个 Rc 被 drop 的时候,只会减少其引用计数,直到引用计数...

2023-09-11
2

当注入的 Bean 存在冲突时,到底有多少种解决方案?松哥总结了 5 种!

在前面的文章中,松哥和小伙伴们分享了 @Primary、@Qualifier 注解在处理该问题时的一些具体的方案,但是都是零散的,今天咱们来把这些方案总结一下,顺便再来看看是否还存在其他方案?...

2023-09-09
1

golang源码分析:etcd(11)

我们继续在文件 server/etcdserver/server.go 中分析EtcdServer的初始化流程,它会先调用bootstrap函数初始化后端存储bolt-db然后初始化raftNode,最后初始化transport,调用start开始raft协议的网络传输。具体实现如下...

2023-09-09
4

golang源码分析:raft(12)

下面我们来到更底一层,分别分析下pipeline和stream的实现,pipeline通过固定数量的goroutine 来分发处理消息:

2023-09-07
3

golang源码分析:raft(11)

前面提到transport将远程对象分为两类:remote和peer,分别代表新建立的连接和已经加入集群的节点,下面简单分析下它们的核心逻辑:

2023-09-07
4

golang源码分析:boltdb(5)

在分析完核心数据结构后,我们结合使用boltdb的核心过程了解下上述数据结构建立的过程,总结下来核心过程如下:

2023-09-06
2

golang源码分析:boltdb(4)

通过前面源码分析,我们差不多了解了boltdb的核心数据结构了,逻辑视图上是通过Bucket组建的嵌套结构来管理数据的,每一层都可以存储一一系列key和value,也是使用boltdb的用户需要关注的。物理视图上是通过node来定义B+树来...

2023-09-06
1