注册/登录
移动端
 
首页 > 留学资讯 > 加拿大留学 > 康卡迪亚大学前5种分布式系统设计模式

康卡迪亚大学前5种分布式系统设计模式

作者:海马 发布时间:2023-10-09 16:55

分布式应用是现代软件开发行业不可或缺的一部分。它们是云存储服务的支柱,使网络应用程序能够高度响应。当程序员开发这些系统时,他们需要一些基本的构件,作为使用通用词汇进行交流的起点。这就是分布式系统设计模式的价值所在。今天,我们将介绍 5 种最重要的分布式系统设计模式,让你了解它们的优缺点以及何时使用。
康卡迪亚大学前5种分布式系统设计模式

一、什么是分布式系统设计模式?

设计模式是构建系统的行之有效的方法,每种模式都适用于特定的用例。它们不是实现,而是构建系统的抽象方法。大多数设计模式都是多年来由许多不同的开发人员开发和更新的,因此它们通常是非常有效的起点。

设计模式是构建模块,程序员可以利用现有的知识,而不是为每个系统从头开始。它们还能创建一套标准的系统设计模式,帮助其他开发人员了解自己的项目如何与特定系统协同工作。

创造性设计模式为创建新对象提供了基础。结构模式定义了解决方案的整体结构。行为模式描述对象及其相互通信的方式。

分布式系统设计模式是用于开发分布式系统的设计模式,分布式系统本质上是计算机和数据中心的集合,对终端用户而言,它们就像一台计算机。这些分布式设计模式概述了软件架构,以确定不同节点如何相互通信、哪些节点负责哪些任务以及不同任务的流程。

这些模式通常用于大规模分布式云计算系统和可扩展微服务软件系统的架构设计。

二、分布式设计模式的类型

大多数分布式设计模式根据其功能可分为以下三类。

1.对象通信:描述系统不同组件间通信的消息传递协议和权限。

2.安全性:解决保密性、完整性和可用性方面的问题,确保系统免受未经授权的访问。

3.事件驱动: 描述系统事件的生成、检测、使用和响应的模式。

三、前5种分布式系统设计模式

1. 命令和信息请求责任分离(CQRS)

CQRS 模型侧重于分离分布式系统的读写操作,以提高可扩展性和安全性。这种模式使用命令将数据写入持久内存,使用查询查找和检索数据。后者由接收用户请求的指挥中心管理。然后,指挥中心检索数据并进行必要的修改,保存数据并通知读取服务。然后,阅读服务会更新阅读模型,向用户显示所做的更改。

a.优点

通过委托任务降低系统复杂性。

明确区分业务逻辑和验证。

有助于根据任务对流程进行分类。

减少对共享数据的意外更改。

减少可访问修改数据的实体数量。

b.缺点

需要在控制模型和读取模型之间持续通信。

发送高吞吐量请求时可能会增加延迟。

服务进程之间没有通信手段。

c.使用案例

CQRS 非常适合数据密集型应用,如 SQL 或 NoSQL 数据库管理系统。它还适用于数据密集型微服务架构。它非常适合管理具有持久状态的应用程序,因为写入器/读取器分离有助于管理持久状态。

2.两阶段承诺(2PC)

2PC 与 CQRS 类似,都采用事务处理方式,并依赖于中央命令,但会根据分区的类型和完成阶段来处理分区。两个阶段是准备阶段和承诺阶段,前者是中央命令指示服务准备数据,后者是服务发送准备好的数据的信号。

2PC 系统中的所有服务默认都处于封锁状态,这意味着它们不能发送数据。当服务被锁定时,它们会完成准备阶段,以便在解锁时发送数据。协调器依次解锁服务并请求它们发送数据。如果某个服务尚未准备好发送数据,协调器就会切换到另一个服务。当所有准备就绪的数据都已发送完毕时,所有服务都会解除阻塞,等待协调者的新任务。

2PC 从根本上确保了一次只能执行一个服务,使流程比 CQRS 更灵活、更一致。

a.优点

由于不存在相互竞争的请求,因此运行稳定可靠。

可扩展性强,可像处理单机数据一样轻松处理大型数据集。

允许同时隔离和共享数据。

b.缺点

不容错,由于同步操作,容易出现死锁和崩溃。

与其他设计模式相比,需要更多资源。

c.使用案例

2PC 是处理高风险交易的分布式系统的理想选择,在这种系统中,准确性比资源效率更重要。即使在大规模系统中,它也很可靠,出错时也很容易追踪。

3 Saga

Saga 是一种异步模型,它不使用中央控制器,而是完全在服务之间进行通信。它解决了上述同步模型的一些缺点。

Saga 使用事件总线,允许服务在微服务系统中相互通信。总线在服务之间发送和接收请求,每个参与服务都会创建一个本地事务。然后,参与的服务发布一个事件,其他服务可以接收到该事件。所有事件都会被其他服务监听。收到事件的服务首先执行请求的操作。如果该服务没有执行该操作,则会将其发送给其他服务。

这种结构类似于 2PC 结构,因为如果其中一个服务无法执行任务,就会轮流执行。不过,Saga 去掉了中央控制元素,以更好地管理流程并减少所需的反馈信息数量。

a.优势

单个服务可处理更长时间的交易。

去中心化使其成为分布式系统的理想选择。

减少服务间通信造成的瓶颈。

b.缺点

异步自治使得难以跟踪执行单个任务的服务。

复杂的协调导致故障排除困难。

与以前的模式相比,服务的隔离度较低。

c.使用案例

Saga 的分散式方法非常适合同时处理多个并行请求的可扩展无服务器功能。AWS 将基于 Saga 的模型用于许多功能,如 step 和 lambda 功能。

4.重复负载平衡服务(RLBS)

RLBS 模式是最简单也是使用最广泛的规划模式。在最基本的层面上,它由多个相同的服务组成,所有服务都向中央负载平衡器报告。每个服务都能执行任务,并能在出现故障时进行故障切换。负载平衡器接收来自终端用户的请求,并使用循环分配或有时更复杂的路由算法在各服务之间分配请求。

双服务可确保应用程序保持用户请求的高可用性,并能在服务实例出现故障时重新分配工作。

RLBS 通常与 Azure Kubernetes 结合使用,后者是微软开发的开源容器编排技术,可根据工作流自动扩展服务。

a.优势

从终端用户的角度来看,性能稳定。

从损坏的服务中快速恢复。

服务越多,可扩展性越高。

并行运行良好。

b.缺点

负载平衡算法下的性能不一致。

需要大量资源来管理服务。

c.使用方法

RLBS 适用于全天工作负载不稳定但需要保持低延迟的前端系统,如 Netflix 或 Amazon Prime 等在线娱乐应用。

5.分片服务

除基于复制的项目外,另一种方法是创建精选服务,每个服务只处理一种特定类型的请求。这就是所谓的 "分片",因为你将请求流量分成了许多不同的部分。例如,你可以让一个分片服务接受所有缓存请求,而另一个分片服务只处理高优先级请求。负载平衡器会评估收到的每个请求,并将其分配给相应的分区来处理。

分片服务通常用于创建状态服务,因为对于非个人容器来说,状态规模往往太大。分片可确保单个分区根据状态大小进行扩展。

此外,分片服务还能更快地处理高优先级请求。专用于高优先级请求的分区可在请求到达时立即处理,而无需排队。

a.分片服务的优点

可以交错处理日常请求。

便于对申请进行优先排序。

自然排序,易于组合。

b.缺点

维护大量分段可能需要很多资源。

如果分段使用过多,可能会导致生产力下降。

c.使用方法

当系统收到的查询类型不平衡,但某些查询具有优先权时,最适合使用分区服务。

海马课堂专业课程预习,辅导不满意随心退,3500+严选硕博学霸师资,针对学生的薄弱科目和学校教学进度,匹配背景相符的导师,根据学生情况进行1V1专属备课,上课时间灵活安排,中英双语详细讲解课程中的考点、难点问题,并提供多方位的课前预习,辅助学生掌握全部课程知识,补足短板。

相关热词搜索:

阅读原文:https://www.highmarktutor.com/news/15663_59.html

版权作品,未经海马课堂 highmarktutor.com 书面授权,严禁转载,违者将被追究法律责任。

热门课程推荐

hmkt088

欢迎咨询