MongoDB 是比较世界上热门的文档型数据库, 支持 ACID 事务、分布式等特性.社区上大部分对 MongoDB 举行混沌(故障)测试的文章大多都是外围通过对 monogd 或 mongos 举行做处理举行模拟的. 好比如果想要让 MongoDB 自己触发副本集切换, 可以通过一下如许一段 shell 脚本:
etcd 是一个开源的、高可用的分布式键值存储系统, 它主要用于共享设置和服务发现.之前我们提到了 MongoDB 内置了可控的故障点注入机制方便我们做故障点测试, 那么 etcd 是否也提供了呢?
值的一提的是 pingcap 重新基于 gofail 重新造了个轮子, 做了不少优化:接下来我们看看怎样在 etcd 中启用这些故障埋点。
failpoint 干系代码不应该有任何额外开销;
不能影响正常功能逻辑,不能对功能代码有任何侵入;
failpoint 代码必须是易读、易写并且能引入编译器检测;
终极生成的代码必须具有可读性;
生成代码中,功能逻辑代码的行号不能发生变革(便于调试);
如果想要了解它的实现原理, 可以查看这篇官方文章: Golang Failpoint 的设计与实现
这篇深度分析的博客也值得一读: 在 Go 中使用 Failpoint 注入故障
故障点的描述语法见: https://github.com/etcd-io/gofail/blob/master/doc/design.md#syntax至此, 已经可以利用 etcd 内置的故障点做一些故障模拟测试了, 具体怎么使用这些故障点可以参考下 etcd 官方的集成测试实现 -> etcd Robustness Testing. 通过故障点名称搜索干系代码即可.
本文由博客一文多发平台 OpenWrite 发布!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |