深入浅出分布式【Primary/Backup, Part 1】 (MIT 6.824)

概述

分布式系统设计中最关键的就是容错机制(Failure Tolerance)。这是因为通常情况下,一个客户端(Client)的请求(Request)会被发送至主服务器(Primary)上。而假如Primary挂掉了,那么该Request会被继续分散到备份服务器(Backup)上。而在攻城狮辛辛苦苦修理挂掉的服务器时,原先的Backup仍然要坚持响应Client的请求。当服务器修好后,Primary和Backup上的资料自然会不一致了,这时候如果没有一种有效地手段保证两个服务器继续保持同步状态,无疑会造成很严重的问题~

为了保证两个服务器始终处于同步状态(Sync),我们需要在Backup上实时对Primary进行复制(Replication)。Replication的方法大致分为两种:

  • 状态转移:这种方法的大致思想是:Client将Request发送到Primary端,后者始终处于计算状态。同时,每隔一小段时间,后者将自己的全部状态打包发送至Backup端。一种较为理想的设计方法请参见Remus。简单来说,Remus采用了三层设计:应用层、系统层和Remus构架层。所运行的软件属于应用层,它们将运行在虚拟机,也即系统层上。最后,Remus构架层会将整个系统层的状态以一定时间间隔打包发送至Backup上,一般取25ms。该设计最大的优势在于,因为备份与软件运行的隔离,所有已经存在的软件不需要重新编写就可以获得分布式系统的全部特性。
  • Replicated State Machine:这种设计的大致思想是,Client将Request发送至Primary后,Primary会将该Request抄送(Forward)到Backup端,两台服务器进行相同的运算,从而得到相同的状态。Lab2中所要求的一种最基本的分布式数据库用到的就是这种设计。

Lab2

说了那么多理论的东西,让我们来看一个简单但功能又比较齐全的例子。该例子选自MIT 6.824的Lab2,该Lab分为了A、B两部分。其中,A部分要求实现一个子系统,其功能是用一个Master服务器(在本Lab中,Master会一直十分坚挺)来负责决定哪个服务器在当前是Primary,哪个则是Backup。同时,当原先的Primary挂了后,Master要能够识别到并迅速把当前的Backup标识为新的Primary。而在B部分中,我们会设计一个数据库,它将支持Get(Key)、Put(Key, Value)及Append(Key, Value)。乍看这个貌似蛮简单的~但是,真正的难点在于,无论我们怎么折腾Primary和Backup(持续的开机、宕机循环),怎么的蹂躏这个数据库(多个Client同时并发发送Request),我们都要保证这个数据库正常的运行。怎么样,是不是有种跃跃欲试的感觉?

Lab2A

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MIT 6.824 是麻省理工学院的一门高级课程,全称为 "Distributed Systems"(分布式系统),它通常会在计算机科学和工程领域中教授。这门课程深入探讨了分布式计算环境中的核心概念和技术,包括: 1. **分布式计算模型**:学习如何设计和实现分布式系统,如客户端-服务器、对等网络、云计算等架构。 2. **通信协议**:理解像TCP/IP、HTTP、UDP等基础通信协议在分布式系统中的作用以及它们如何确保数据的可靠传输。 3. **一致性模型**:研究不同的一致性级别,如强一致性、最终一致性,以及如何在分布式环境中维护数据一致性。 4. **分布式算法**:涉及分布式任务调度、数据分片、共识算法(如 Paxos、 raft 等)等,这些算法对于分布式系统的高效运作至关重要。 5. **安全性与隐私**:讨论如何保护分布式系统免受恶意攻击,如身份验证、授权、加密等安全措施。 6. **容错与可靠性**:处理节点故障的恢复策略,以及冗余和备份技术的重要性。 7. **大规模分布式系统案例**:可能涵盖云计算平台的设计、大规模数据库系统、分布式文件系统(如Hadoop)或分布式计算框架(如Spark)。 如果你想深入了解这门课程,可以考虑查找相关的课程资料、观看讲座视频,或者阅读经典的分布式系统教材,如《分布式系统:概念与设计》( Distributed Systems: Concepts and Design)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值