一个分布式系统可靠性词汇表

这是一份关于分布式系统可靠性相关概念的词汇表,主要内容如下:

  • 引言:为行业从业者编写,旨在整合分布式系统测试相关信息,是首个这样的资源,旨在鼓励深入了解重要概念,提供直观解释和指向更正式定义的指针,包含组织架构和联系方式等。

    • 初步概念:用于定义现象和一致性模型,包括依赖、确定错误、不确定错误、对象、操作、谓词、进程等。
    • 一致性模型:定义系统允许的行为,如因果一致性、最终一致性等,每种模型都规定了一些现象是被禁止的。
    • 可用性模型:不同的系统可用方式,包括总可用性、粘性可用性、多数可用性等,不同模型对应可实现的一致性模型。
    • 现象:系统中被认为是不良的行为,如各种读/写现象、内部一致性异常等。
    • 故障:分布式系统中可能出现的问题,如遗忘、比特腐烂、拜占庭故障等。
    • 测试技术:并发测试、约束编程、循环检测等多种测试技术,用于验证系统的安全性和正确性。
    • 进一步阅读:提供了一些分布式系统和测试相关的阅读列表。
  • 初步概念

    • 依赖:一致性模型中的操作关系,如进程依赖、读写依赖等。
    • 确定错误:明确未发生的操作返回的错误。
    • 不确定错误:操作可能发生也可能未发生或稍后发生返回的错误,区分两者是分布式系统设计和测试的关键挑战。
    • 对象:数据库中的不同项,每个对象有唯一标识符和版本。
    • 操作:系统的行为,具体取决于系统,如队列系统的入队和出队操作等。
    • 谓词:用于识别对象集合的方式。
    • 进程:参与分布式系统的逻辑单线程状态机,可将单个数据库客户端视为进程。
    • 其他相关概念:如进程依赖、实时依赖、读写依赖、会话依赖、版本、版本顺序等。
  • 一致性模型

    • 一致性模型定义:一组允许的历史记录,约束操作的允许性和顺序。
    • 各种具体的一致性模型:如因果一致性、最终一致性、线性izability等,每种模型都有其特点和禁止的现象。
  • 可用性模型

    • 总可用性:非故障节点可执行任何操作,许多系统声称提供此可用性。
    • 粘性可用性:非故障客户端连接到非故障服务器时的可用性。
    • 多数可用性:多数非故障节点可通信时系统可用。
  • 现象

    • 各种具体的现象:如读偏斜、写偏斜、断裂读等,每种现象都有其定义和禁止的一致性模型。
  • 故障

    • 多种故障类型:如遗忘、比特腐烂、拜占庭故障等,每种故障都有其特点和影响。
  • 测试技术

    • 并发测试:分布式系统本质上是并发的,测试也应如此。
    • 约束编程:将操作历史编码为约束问题进行求解。
    • 循环检测:通过检测依赖图中的循环来验证一致性模型。
    • 确定性模拟测试:使模拟层确定性,便于重现错误。
    • 示例-based 测试:写下具体输入和期望结果进行测试。
    • 故障注入:在测试中故意注入故障以检查系统的不变性。
    • fuzz 测试:提交随机输入并检查属性是否成立。
    • 引导搜索:通过收集系统反馈选择“有趣”的输入。
    • 变形测试:通过变换输入并检查输出关系进行测试。
    • oracle:为测试提供信息,帮助确定测试是否正确。
    • property-based 测试:生成随机输入并验证属性。
    • 收缩:将大型失败输入缩小为更易理解的输入。
    • 模拟测试:模拟分布式系统的部分或全部进行测试。
  • 进一步阅读:提供了多个关于分布式系统和测试的阅读列表和资源。
阅读 20
0 条评论