分布式系统架构设计

本文介绍了分布式系统的基本概念、常见异常、副本分类及其设计原则。重点讨论了服务器宕机、网络异常、分布式系统的三态以及数据一致性问题。此外,还提到了服务副本的两种类型:服务副本和数据副本,并探讨了数据副本的一致性。分布式系统的设计原则包括异构性、透明性、并发性、可扩展性和故障独立性。最后,文中提到了RPC框架的工作原理、服务治理中的注册中心和服务治理策略,如服务注册与发现、流量削峰、版本兼容等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式系统

分布式系统指的是通过网络连接让多台计算机协同解决单台计算机所不能解决的计算、存储等问题,多台计算机之间通过 RPC 方式通信。在使用分布式系统前,首要解决的问题是如何拆解当前面临的问题。通过使用多台计算机分布式解决问题,让分布式系统中的每台机器都负责解决原问题的一个子集。一般来说,可以使用横向拆分法或者纵向拆分法对复杂的系统进行拆分。

◎横向拆分:在无状态系统中多部署几个实例,通过负载均衡方式协调每个实例所负载的计算量。

◎纵向拆分:将一个大应用拆分为多个小应用(例如,将系统拆分为用户、商品、订单服务),每个小应用都负责处理一部分业务。

然而,虽然通过拆分法解决了计算或存储的问题,但是使用分布式技术进行开发会引发比单体应用更多的问题,比如网络异常、数据一致性及分布式系统性能等。因此,在使用分布式架构开发系统前,需要先深入理解分布式系统的概念和可能存在的异常。

1、分布式系统中的常见异常

◎服务器宕机:服务器宕机是分布式架构下最常见的异常之一。任何服务器都有可能发生故障,而且故障发生的类型、时间都不尽相同。所以,分布式系统一般允许部分服务器发生故障,但要求在部分服务器发生故障时不影响整个系统的正常使用。

◎网络异常:服务器与服务器之间通过网络通信,若在通信过程中出现消息丢失,则两个节点之间无法进行通信,会出现网络分化、消息乱序等网络问题。

◎分布式系统的三态:如果某个节点向另一个节点发起RPC请求,比如节点A向节点B发送一个消息,节点B根据收到的消息完成某些操作,并将操作的结果通过消息返回给节点A,那么这个RPC请求的执行结果可能有三种状态:成功、失败、超时(未知)。我们将这三种状态称为分布式系统的三态。在设计架构时需要考虑成功、失败、超时(未知)这三种状态的处理方式。

◎存储的数据丢失:对于有状态节点来说,数据丢失意味着状态丢失。通常只能从其他节点读取、恢复该存储数据的状态。

2、分布式系统的副本分类

分布式系统的副本指的是在分布式系统中为数据或服务提供的冗余。该副本可分为服务副本和数据副本两种类型。

◎服务副本:多个节点提供某种相同的服务,这种服务不依赖本地节点的存储状态,是一种无状态服务。

◎数据副本:在不同的节点上持久化同一份数据。当出现某一个节点存储的数据丢失时,可以从其他副本上读取该数据。数据多副本是分布式系统解决数据丢失异常的唯一方法,因为数据被分散或者复制到不同的机器上,所以如何保证各台主机之间数据的一致性,成为一个难点。

对于分布式系统而言,服务副本非常容易控制,由于服务本身具备无状况特性,运维人员可以动态增加或者减少服务副本的数量,而不会影响服务接口返回数据的正确性。数据副本分布在不同的计算机上,从技术角度来看,数据的一致性面临着巨大的挑战。数据副本的一致性通常具有以下几种情况。

◎强一致性:任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。这是程度最高的一致性要求,也是实践中最难实现的一致性。

◎弱一致性:系统并不保证进程或者线程在任何时刻访问数据都会返回最新的更新过的值。系统在数据成功写入之后,不承诺立即读到最新写入的值,也不承诺最终多久之后可以读到最新值。

◎最终一致性:数据一旦更新成功,各个副本上的数据最终将达到完全一致的状态,但需要一定的时间。

然而,分布式系统也存在一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值