`

分布式系统设计策略

 
阅读更多

摘自 《深入分布式缓存:从原理到实践》

 

分布式系统本质是通过低廉的硬件攒在一起以获得更好地吞吐量、性能以及可用性等。分布式系统有一些通用的设计策略,也是在分布式环境下普遍关心的几个问题:

  • 如何检测你还活着?
  • 如何保障高可用
  • 容错处理
  • 重试机制
  • 负载均衡

1. 心跳检测

在分布式环境中,一般会有多个节点来分担任务的运行、计算或程序逻辑处理。通常采用 心跳检测 来判断节点是否可用。

 



 

如上图所示,Client请求Server,Server转发请求到具体的Node获取请求结果。Server需要与三个Node节点保持心跳连接,确保Node可以正常工作。

 

若Server没有收到Node3的心跳时,Server认为Node3失联。失联代表并不确定是否是Node3故障,有可能是Node3处于繁忙状态,导致调用检测超时;也有可能是Server与Node3之间链路出现故障或闪断。所以心跳不是万能的,收到心跳可以确认节点正常,但是收不到心跳却不能认为该节点已经宣告“死亡”。此时,可以通过一些方法帮助Server做决定:周期检测心跳机制、累计失效检测机制

 

周期检测心跳机制
Server端每间隔 t 秒向Node集群发起监测请求,设定超时时间,如果超过超时时间,则判断“死亡”。

 

累计失效检测机制
 在周期检测心跳机制的基础上,统计一定周期内节点的返回情况(包括超时及正确返回),以此计算节点的“死亡”概率。另外,对于宣告“濒临死亡”的节点可以发起有限次数的重试,以作进一步判断。

 

通过周期检测心跳机制、累计失效检测机制可以帮助判断节点是否“死亡”,如果判断“死亡”,可以把该节点踢出集群。

 

2. 高可用设计

系统高可用性的常用设计模式包括三种:主备(Master-Slave)模式、互备(Active-Active)模式和集群(Cluster)模式

 

1) 主备模式

主备模式就是Active-Standby模式,当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动(热备)或手动(冷备)方式将服务切换到主机上运行。在数据库部分,习惯称之为MS模式,即Master/Slave模式,这在数据库高可用性方案中比较常用,但存在Master到Slave的数据延时风险,尤其是跨地域复制。如MySQL、Redis等就采用MS模式保证高可用。

 



 

 

2) 互备模式

互备模式指两台主机同时运行各自的服务工作且相互监测情况。在数据库高可用部分,常见的互备是MM模式,即Multi-Master模式,指一个系统存在多个master,每个master都具有read-write能力,需根据时间戳或业务逻辑合并版本。比如分布式版本管理系统Git,可以理解成Multi-Master的解决方案,具备最终一致性。

 

3) 集群模式

集群模式是指有多个节点在运行,同时可以通过主控节点分担服务请求。如Zookeeper。集群模式需要解决主控节点本身的高可用问题,一般采用主备模式。

 

如TFS(Taobao File System),它涉及到NameServer、DataServer两类节点。NameServer存放元数据,而具体的业务数据存放于DataServer。多个DataServer就是集群模式的运行状态,NameServer作为主控节点。为了保障NameServer的高可用,通过Heart Agent机制做心跳检测来负责NameServer的主备切换(主备模式)。




 
 

3. 容错性

 容错就是IT系统对于错误的包容能力,确切地说是容故障而非错误。容错的处理是保障分布式环境下相应系统的高可用或者健壮性。

 

以TFS为例,TFS集群需要容错(整个集群宕掉咋办?)、NameServer需要容错、DataServer也需要容错。NameServer主要管理了DataServer和Block之间的关系。如每个DataServer拥有哪些Block,每个Block存放在哪些DataServer上等。同时,NameServer采用了主备模式,主NameServer上的操作会重放(同步)到备NameServer,如果主NameServer出现问题,可以实时切换到备NameServer。另外NameServer和DataServer之间也会有定时的心跳机制,DataServer会把自己拥有的Block发送给NameServer,NameServer会根据这些信息重建DataServer和Block的关系。

 

另外,缓存失效雪崩问题也可以进行一定的容错处理,提升系统健壮性。比如,我们使用缓存通常都是先检查缓存是否存在,如果存在则直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。因此,如果我们查询的某一些数据实际上不存在,就会造成每一次请求都查询DB,给数据库造成较大的压力。这种情况下,一个比较巧妙的方法是,将这个不存在的key预先设定一个值并存入缓存(过期时间不宜过长),避免大量请求透传到DB中。

 

4. 负载均衡

负载均衡集群:其关键在于使用多台集群服务器共同分担计算任务,把网络请求及计算分配到集群可用服务器上去,从而达到可用性及较好地用户体验。

 


 

负载均衡器有硬件解决方案,也有软件解决方案。硬件解决方案有著名的F5,软件有LVS、HAProxy、Nginx等。

 

以Nginx为例,负载均衡有如下几种策略:

  • 轮询:即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器
  • 最少链接:当前谁连接最少,分发给谁
  • 基于权重:配置Nginx把请求更多地分发到高配置的后端服务器上,把相对较少的请求分发到低配服务器
  • 描述: 分布式环境下节点示意图
  • 大小: 13.1 KB
  • 大小: 9.2 KB
  • 大小: 41.5 KB
  • 大小: 15.6 KB
分享到:
评论

相关推荐

    分布式系统设计 分布式系统设计

    分布式系统设计是现代互联网服务和企业级应用的核心技术之一,它涉及到多个计算机节点通过网络进行协同工作,共同处理任务和数据。在这个领域,我们需要深入理解并掌握一系列关键知识点,以构建高效、可扩展且容错的...

    分布式系统设计原理和实践

    分布式系统设计原理与实践是IT领域中的重要主题,它涵盖了多台计算机协同工作以实现一个共同目标的技术。在这个复杂的环境中,各个组件通过网络通信,共享数据,并协同处理任务,以达到高可用性、可伸缩性和性能优化...

    分布式系统设计 分布式控制系统的设计

    分布式系统设计是现代信息技术领域中的核心概念,它涉及到多个计算机节点通过网络进行协作,共同完成一个复杂的任务。这种设计模式可以提升系统的可扩展性、容错性和性能,使其能够处理大规模的数据和高并发的用户...

    分布式系统设计模式——ppt模式

    分布式系统设计模式是指在分布式系统中,为了解决如何划分服务、如何部署服务以及如何组织服务间通信等问题而采用的一些通用方案和策略。这些模式能够在不同的分布式环境和应用场景中应用,以期达到系统设计的最优解...

    杨波-分布式系统设计案例课材料.zip

    分布式系统设计是现代互联网技术的核心组成部分,它涉及多个计算节点通过网络进行协同工作,以处理大规模数据和提供高可用的服务。杨波的分布式系统设计案例课材料深入浅出地介绍了这个领域的关键概念和技术。 首先...

    分布式系统设计PDF

    分布式系统设计是现代互联网技术的核心组成部分,它涉及多个计算节点通过网络进行协同工作,共同处理大规模数据和提供高可用服务。这份"分布式系统设计PDF"资料对于任何希望深入理解这一领域的学习者,无论初级还是...

    分布式系统设计

    分布式系统设计是一门涵盖多个领域的复杂技术,它旨在通过网络连接的多台计算机协同工作,以实现单一系统的效果。在当今大数据、云计算和互联网服务的需求日益增长的时代,分布式系统已经成为IT行业的基石。这本书...

    分布式系统设计 [美]jie wu著 高传善 译

    第 3 章 分布式系统设计的形式方法 3.1 模型的介绍 3.1.1 状态机模型 3.1.2 佩特里网 3.2 因果相关事件 3.2.1 发生在先关系 3.2.2 时空视图 3.2.3 交叉视图 3.3 全局状态 3.3.1 时空视图中的全局状态 ...

    分布式系统原理与范型答案(第二版)答案

    了解这些模型有助于选择合适的系统设计策略。 5. **分布式事务**:在分布式系统中,事务处理需要考虑到多个节点间的协调,ACID(原子性、一致性、隔离性、持久性)属性是保证事务正确性的基础。 6. **负载均衡**:...

    分布式系统 概念与设计 习题答案(完整版).

    这份“分布式系统 概念与设计 习题答案(完整版)”涵盖了该领域的核心概念、设计原则以及常见问题的解决方案。 分布式系统的主要目标包括提高可用性、可扩展性、性能和容错能力。以下是一些关键知识点: 1. ...

    分布式系统设计中NewSQL数据库技术的应用.pdf

    随着物联网、移动互联网、云计算和大数据采集技术的发展,传统集中式存储与管理模式在处理和应用大数据方面显示出局限性,这促使了分布式系统设计的主流化,对数据存储和管理提出了新的挑战,特别是在数据量和处理...

    分布式系统概念与设计(第5版)教材+习题答案

    《分布式系统概念与设计(第5版)》是一本深入探讨这一主题的经典教材,它提供了全面的理论知识和实际案例,帮助读者理解和掌握分布式系统的精髓。 在学习这本教材时,首先会接触到的是分布式系统的定义和基本特性,...

    分布式系统设计.rar

    在分布式系统设计中,有以下几个重要的知识点: 1. **一致性模型**:在分布式系统中,数据一致性是一个核心问题。常见的模型有强一致性(如Raft、Paxos算法)、最终一致性以及因果一致性等。这些模型定义了系统中...

    群体机器人分布式任务分配策略研究.pdf

    群体机器人分布式任务分配策略是研究机器人群体如何在没有或仅有局部通信的...群体机器人作为分布式系统的一个应用实例,其研究不仅能够推动机器人学的发展,也能为其他分布式系统提供设计和优化的理论基础和实践指导。

    分布式系统原理介绍

    4. 异常:包括节点失效、网络分区、消息丢失等,分布式系统设计必须考虑这些异常情况,并提供相应的容错机制。 副本的概念是指在分布式系统中,数据的多个副本存储在不同的节点上,以提高数据的可用性和可靠性。...

    从百度文件系统看大型分布式系统设计.pdf

    分布式系统设计实践部分,颜世光阐述了在设计百度文件系统时所采取的一些关键实践和策略。主要包括以下几个方面: 1. 集群环境和核心服务:百度的集群环境通常包含几千台服务器,其中BFS、集群调度系统Galaxy以及...

    分布式系统概念与设计(第五版)课后题答案

    - 系统设计、容错机制、安全性、资源调度和优化等方面的知识。 课后答案涵盖了这些主题的实践应用和解题思路,对于理解和掌握分布式系统的核心概念至关重要。通过解答这些问题,读者可以深化对分布式系统原理的...

    东北大学_研究生_期末考试之分布式系统及应用

    分布式系统及应用是计算机科学中的一个关键领域,尤其在当今大数据和云计算的时代背景下,其重要性日益凸显。东北大学的研究生课程"分布式系统及应用"显然涵盖了这一领域的核心概念和实践技能。以下是对该课程相关...

Global site tag (gtag.js) - Google Analytics