雪橇模拟指南(耶普森证明工程)

  • sled 相关链接:有github 仓库介绍页面文档激励经验页面书店页面支持 sled 页面,以及博客相关链接,还有github 星标文档徽章discord 链接赞助信息
  • 概述内容:包含分布式等系统确定性测试的基本信息,[Jepsen]多次成功摧毁测试的分布式系统,说明当前构建分布式系统方式易出 bug,多数分布式数据系统因测试未模拟真实条件而崩溃,在分布式和消息系统中要注意消息混合等问题。
  • 构建 Jepsen 证明系统步骤

    • 以可确定性测试的方式编写代码,确保应用依赖倒置原则,状态机可在各种网络传输上运行,能快速发现 race 条件。
    • 构建模拟真实消息传递行为的模拟器,不这样做会构建出有很多 bug 的系统,可从[FoundationDB]等成功案例中学习。
    • 编写代码围绕接收和响应消息的状态机,可实现 tick 方法处理周期性功能,将消息放入优先级队列按时间交付,对每个消息进行断言等操作,这就是“离散事件模拟”。
  • 成功案例:[FoundationDB]因应用此技术基本“Jepsen 证明”,还有[Riak]、[Partisan]、[Dropbox]、航空航天和汽车工程师等也取得成功。
  • 呼吁行动:停止只关注 Jepsen 的成功,用比 Jepsen 快数千倍的技术立即发现 bug,构建可测试 race 条件的系统,从错误中学习,若觉得文章有用可支持作者分享知识。
阅读 7
0 条评论