lichuang / lichuang.github.io

lichuang.github.io
Apache License 2.0
10 stars 0 forks source link

post/20181125-etcd-server/ #11

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

Etcd存储的实现 - codedump

在前面已经分析了Raft算法原理、etcd raft库的实现,接着就可以看etcd如何使用raft实现存储服务的了。 以下的分析主要针对etcd

https://codedump.info/post/20181125-etcd-server/

zhaocheng-dev commented 4 years ago

灰常感谢。写的很棒。

yudidi commented 4 years ago

awesome!

vision9527 commented 4 years ago

如果raft提交后,写WAL那步失败系统怎样处理?

akzj commented 4 years ago

https://github.com/etcd-io/etcd/blob/master/etcdserver/raft.go#L244 这个存储 entries 到 wal,这个时候应该 还没有committed https://github.com/etcd-io/etcd/blob/master/etcdserver/raft.go#L212 这个是同步到多数raft node,已经committed了,这个时候不再写wal。

simplelovexb commented 2 years ago

generation结构体存放以下数据:

ver:当前generation中存放了多少次修改,其实就是revs数组的大小-1(因为需要去掉tombstone)。 created:创建该generation时的revision。 revs:存放该generation中存放的revision数组。

这一段 感觉不太对把 ver其实就是数组的数量, 我看了 源码中的单元测试,tombstone 好像并没有存在于 revs 中