湛江建设企业网站,wordpress 账户及密码,运营实力 网站建设,公司要搭建网站分布式系统应当有一定的容错性#xff0c;发生故障时仍能运行 一些概念#xff1a; 可用性Availability#xff1a;系统是否准备好立即使用 可靠性Reliability#xff1a;系统连续运行不发生故障 安全性#xff1a;衡量安全故障的指标#xff0c;没有严重事件发生 可维护…分布式系统应当有一定的容错性发生故障时仍能运行 一些概念 可用性Availability系统是否准备好立即使用 可靠性Reliability系统连续运行不发生故障 安全性衡量安全故障的指标没有严重事件发生 可维护性Maintainability衡量修复系统的难度 错误fault 一个系统在不能满足其规格时发生错误 容错性存在故障时系统仍能提供服务 种类暂时、间歇性、永久性故障 暂时、间歇性故障不易修复难以复现 故障模型 1、崩溃故障服务器停止但正常工作直到停止 2、遗漏/省略故障接收遗漏、发送遗漏服务器无法响应传入请求服务器无法接收传入消息服务器失败服务器的响应位于 3、定时故障服务器响应超时服务器的响应位于指定的时间间隔之外 4、响应失败值故障、状态传递错误服务器的响应不正确响应的值错误服务器偏离了正确的控制流 5、任意故障拜占庭故障服务器可能在任意时间产生任意响应 故障掩盖masking
解决方法冗余 信息冗余 循环冗余检查CRC纠错位 时间冗余 重试直到成功完成 物理冗余 重复组件SW/HWRAID 流程复制Process Replication 通过复制来屏蔽进程故障。 将流程组织成组发送给一个组的消息将传递给所有成员。 我们需要创建多少个副本 如果一个系统有k个故障进程即使它也能存活和工作那么它就是k个容错的 崩溃故障 k1副本 拜占庭失败 2k1副本 分布式协议算法
为什么我们需要达成协议◦ 领导提交同步问题 要求 所有无故障的过程在有限的步骤中达成一致共识无论这个一致是否好。 拜占庭一般问题假设进程不可靠通道可靠如果通道不可靠 AB两方为了保证可靠性导致无休止地握手 怎么解决 可靠RPC
可能发生的错误 1、客户端无法找到服务器 向客户机返回错误报告 客户端收到错误通知后可以采用指数退避算法重试直至超时或者连接备用服务器 2、客户端请求丢失 重传请求 3、服务器响应丢失 没有简单的解决方案因为它可能很难区分这种情况与服务器的崩溃。 如果请求是幂等的我们可以尝试重新发送它们。 4、服务器崩溃 症状发送多次无回应 至少一次语义At-least-once-semantics服务器保证无论如何它都将至少执行一次操作 要实现至少一次语义客户端可以不断重发请求直到从服务器接收到响应或确认。服务器可能需要处理幂等操作以处理重复的请求。 在金融交易中至关重要的是资金转账至少执行一次即使可能导致重复的转账 最多一次语义服务器保证它最多只执行一次操作 要实现至多一次语义客户端和服务器可以使用唯一的请求标识符或序列号来识别和丢弃重复的请求。服务器可以维护已执行操作的记录以防止重复执行 在分布式文件系统中您可能希望确保文件至多被删除一次以避免数据丢失 5、客户端崩溃 服务器端的孤立计算免费保留一些资源。服务器或客户端重新启动后应该处理孤立文件 恢复recovery
1、前向恢复forward找到一个系统可以继续运行到新状态恢复到明天 先会退止上一个恢复点在借助log记录了request再追赶到新进入的request 2、回滚恢复backward将系统带回以前的无错误状态我们需要提前建立恢复点我们需要让流程合作来确定恢复的一致状态。 recovery line是两个合适的状态相同的checkpoint 相连 级联回滚如果检查点是在“错误”的时刻完成的则恢复线可能位于系统启动时。事务中的所有操作被撤销数据库回到事务开始之前的状态就好像事务从未执行过一样 独立的检查点每个进程都独立地接受检查点并存在级联回滚到系统启动的风险 协调检查点每个进程在一个全局协调操作之后都接受一个检查点。 简单解决方案两阶段阻塞 协调器多播检查点请求消息 当参与者收到这样的消息时它会执行检查点停止发送应用程序消息并报告它已经执行了检查点 当所有检查点都在协调器上得到确认时后者会广播一条检查点完成消息以允许所有进程继续进行
分布式消息队列
没有消息遗漏 副本如何部署副本和主数据不能放在一起 snapshot如何定义checkpoint logs存放不能在系统上在外部logs不能与实际存储放一起需要logs的副本吗 同一物理机上多个逻辑分区集群