1
Jepsen 简介
2
Jepsen 的测试流程
3
如何使用 Jepsen
4
如何使用 Jepsen
single-register
multi-register
:invoke :read [[:r 1 nil]]就是读取 key 为 1 的值,因为是 invoke,操作刚刚开始,还不知道值是什么,所以后面是 nil。:ok :read [[:r 1 4]]中的 ok 则表示操作成功,可以看到读取到键 1 对应的值是 4。
:nemesis :info :start nil标志着 nemesis 的开始,后面的的内容(:isolated ...)表示了节点 n5 从整个集群中被隔离,无法与其他 DB 节点进行网络通信。
cas-register
-
:invoke :read nil表示开始一次读取 “f” 的值的操作,因为刚开始操作,所以结果是 nil(空)。 -
:ok :read 0表示成功读取到了键 “f” 的值为 0。 -
:invoke :cas [1 2]意思是进行 CAS 操作,当读到的值为 1 时,将值改为 2。
cas[0 2] 会将 value 变为 2。在第 14 行当值为 0时,17 行的 cas[2 2] 就失败了。
kill-node
5
测试结束后
6
小结
7
参考文献
-
Jepsen 主页:https://jepsen.io/ Jepsen GitHub:https://github.com/jepsen-io/jepsen
Raft Understandable Distributed Consensus
The Raft Consensus Algorithm
Nebula Graph GitHub:https://github.com/vesoft-inc/nebula

