我是靠谱客的博主 魁梧路人,最近开发中收集的这篇文章主要介绍The design of a practical system for fault-tolerant virtual machines 阅读笔记The design of a practical system for fault-tolerant virtual machines 阅读笔记,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首发于:https://github.com/rsy56640/paper-reading/tree/master/分布式/The design of a practical system for fault-tolerant virtual machines

The design of a practical system for fault-tolerant virtual machines 阅读笔记

介绍

容错思路是 primary / backup,那么就保证两者尽可能同步就好,但是同步内存和IO等操作消耗巨大,所以转变思路:
假设 primary / backup 初始状态相同,那么只需要同步状态迁移操作即可。(为了达成这么nice的property,我们需要证明它是一个“确定性状态机”,即 deterministic state machine)
因此使用 VM 来保证确定性状态机的性质:因为所有操作都是经过 VM 控制的。对于本身就确定的操作,直接 sync log 然后 replay 即可;对于非确定性的操作,VM 采用一些手段 sync 到 backup。

基本设计

在这里插入图片描述

primary 与 backup 的执行是一样的,但 backup 的 output 被 hypervisor 抛弃掉。
检测 fail:心跳消息;监控 logging channel。
防止 split brain:atomic lock

Deterministic Replay Implementation

目标:在不影响性能的情况下,捕获所有输入和非确定性操作并正确地执行于 backup。

主要细节在 ReTrace: Collecting Execution Trace with Virtual Machine Deterministic Replay

把输入和非确定性以日志流形式记录
对于非确定性事件:记录发生时的具体指令

FT protocol

Output Requirement:如果 backup 接替 primary 执行,backup 的执行必须满足 与 primary 之前向外界的输出完全一致。

Output Rule:为了满足 Output Requirement,primary 必须延迟向外界 output,直到 backup ack 生成 output 的 log

在这里插入图片描述

无法保证所有 output 只 produce 一遍,因为 backup 无法得知 primary fail 前是否 produce output。不过有网络机制可以解决dup问题。

故障检测与相应

  • UDP 心跳消息
  • 监控 logging traffic

对于 network partition 造成的 split-brain 问题,使用 shared storage 上的自旋锁,保证最多只有一个 VM go live

实现

VM 的启动与恢复

Fast transparent migration for virtual machines

Logging Channel

在这里插入图片描述

primary buffer 满了之后就 stop,对外界有影响;backup buffer 满了之后就 stop,对外界无影响。

record log 和 replay 的开销大致相同。

为了 replay 用时少,控制 primary 和 backup 之间的 lag。

VM 管理 disk IO,并串行化;使用 bounce buffer 控制 IO。

Reference

  • 容错虚拟机分布式系统的设计
  • 分布式系统经典论文概述(1)
  • MIT 6.824 2018 Lec 4: Primary/Backup Replication
  • Primary-Backup Replication 总结
  • ReTrace: Collecting Execution Trace with Virtual Machine Deterministic Replay 待看
  • Fast transparent migration for virtual machines 待看

最后

以上就是魁梧路人为你收集整理的The design of a practical system for fault-tolerant virtual machines 阅读笔记The design of a practical system for fault-tolerant virtual machines 阅读笔记的全部内容,希望文章能够帮你解决The design of a practical system for fault-tolerant virtual machines 阅读笔记The design of a practical system for fault-tolerant virtual machines 阅读笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部