分布式系统为什么具有健壮性 怎么构建健壮的分布式系统

本文章由注册用户 知无涯 上传提供 评论 发布 纠错/删除 版权声明 0
摘要:分布式系统的处理和控制功能是分布的,单一站点产生的故障不会对整个系统造成太大的影响,即使设备故障,也可以通过容错技术实现系统的重构,因此分布式系统一般都具有健壮性,不过构建分布式系统时,还是要注意通过最小化组件间依赖、隔离错误、在系统中建立缓冲区等方法,构建更健壮的分布式系统。下面一起来看看分布式系统为什么具有健壮性以及怎么构建健壮的分布式系统吧。

一、分布式系统为什么具有健壮性

健壮性是指在异常和危险情况下系统生存的能力,分布式系统一般具有健壮性,这是因为:

1、分布式系统的处理和控制功能是分布的,任何站点发生的故障都不会给整个系统造成太大的影响。

2、当分布式系统中的设备出现故障时,可以通过容错技术实现系统的重构,以保证系统的正常运行。

二、怎么构建健壮的分布式系统

分布式系统一般都具有健壮性,不过面对越来越普遍随机故障,如果系统构建不当的话,也会导致系统运行出现问题,要构建健壮的分布式系统,主要注意以下几点:

1、最小化组件间依赖

分布式系统的组件相互通信以获取数据或功能。在这两种情况下,我们都可以通过将数据/功能推送到调用组件而不是远程访问来减少连接需求。

构建大规模分布式系统迫使我们放弃标准软件工程的许多“最佳实践”。要记住的关键是,当我们采用分布式系统的复杂性来实现可扩展性时,我们还需要尽可能地控制“分布”。

(1)重复数据

如果我们经常从另一个组件访问一些数据,我们可以在我们的组件中复制它,而不必在运行时检索它。这可以大大减少运行时依赖并帮助改善我们组件的延迟。

经常访问但有一定规律性变化的数据可以通过定期缓存刷新来临时缓存。更改频率更低或从不更改的数据(例如客户姓名)可以直接存储在我们的组件中。如果/当这些数据发生变化时,我们可能需要做一些额外的工作,但是这种增加的小开销通常是值得的,因为它可以提高弹性。

(2)非规范化数据

非规范化是在组件内发生的一种特殊形式的重复。如果我们使用关系数据存储,我们可以通过在主实体中复制数据来降低查看多个实体的成本。本地化分散数据以获得更好性能的原则也适用于此。

(3)库

为了减轻另一个组件的功能依赖性,我们可以将远程组件打包为库并将其嵌入到我们的组件中。这并不总是可能的(它可能是用其他语言编写的,或者太大而不能成为一个库)并且会带来一系列问题(功能的变化需要跨多个组件进行库升级),但是如果功能很关键并且经常被大规模访问,这是打破组件间连接并使其成为本地的可行方法。

2、隔离错误

错误隔离很重要,原因有两个。一是个别错误在分布式系统中更常见(许多移动部件的简单功能)。另一个是,如果我们不能防止整个系统中的联锁错误,那么我们首先就失去了构建复杂体的理由。

错误隔离的主要结构是SLA。每个组件都声明了一些质量参数,它将在执行功能时得到尊重。这些参数可以包括延迟、错误率、并发性等。在此SLA之外,调用它的组件会假定它已失败并需要自行采取适当的措施。如果组件本身检测到它无法维护其SLA,它可以先发制人地告诉其调用者暂停并稍后再来调用。为了保持整体系统健康,最好是快速失败而不是在违反SLA的情况下成功。两个组件(一个被唤起的和一个唤起的)都必须为此设置机制。

(1)保护调用者

A、超时:如果被调用的组件在其SLA内没有响应,调用者必须超时(放弃)并改用一些回退机制(即使它抛出错误)来维护自己的SLA并防止一连串的SLA违规。

B、重试:由于网络不可靠,分布式系统中的许多错误只是随机的。如果调用者自己的SLA允许,调用者可以重试该操作。重试的前提是操作的幂等性。即它不应该改变状态或只做一次,即使它被调用了两次。

C、断路器:如果对组件的调用连续失败,调用者可以通过“打开电路”切断连接并停止调用一段时间。由于调用者已经有一些错误场景的备份行为,这节省了调用者宝贵的资源,这些资源本来会被浪费掉。停止调用还可以减少被调用组件的负载,并给它一些恢复的喘息空间。

(2)保护被调用

A、随机间隔:虽然重试可以减少错误,但在一个频繁使用的组件中出现一个小的性能问题可能会导致其所有调用者一次重试。这种“重试风暴”会造成负载峰值并阻止该组件恢复。为了防止这种情况,重试应该在它们之间有一个随机的时间间隔,以便交错加载。

B、背压:如果一个组件检测到自己承受过多的负载并且即将违反其SLA,它可以抢先开始丢弃新请求,直到其性能得到控制。这比接受它知道它不能在SLA内提供服务或没有完全崩溃风险的请求要好得多。

3、在系统中建立缓冲区

(1)异步通信

消息总线之类的异步通信通道允许调用远程组件,而无需非常严格的SLA依赖。通过让被调用组件准备好而不是立即使用消息,系统对增加的工作负载的需求变得更加灵活。

(2)弹性配置

可扩展性最终归结为充分利用可用硬件。但是,如果看到规模增长,让系统缓口气的一个简单方法是分配更多硬件。虽然这仅在我们能够承受的成本范围内是可行的,但它为我们提供了抵御不可预测的负载变化的最后一道防线。

网站提醒和声明
本站为注册用户提供信息存储空间服务,非“MAIGOO编辑”、“MAIGOO榜单研究员”、“MAIGOO文章编辑员”上传提供的文章/文字均是注册用户自主发布上传,不代表本站观点,版权归原作者所有,如有侵权、虚假信息、错误信息或任何问题,请及时联系我们,我们将在第一时间删除或更正。 申请删除>> 纠错>> 投诉侵权>> 网页上相关信息的知识产权归网站方所有(包括但不限于文字、图片、图表、著作权、商标权、为用户提供的商业信息等),非经许可不得抄袭或使用。
提交说明: 快速提交发布>> 查看提交帮助>> 注册登录>>
相关推荐
不同级别家庭影院配置选择 家庭影院设备搭配方案
随着生活水平的提高,人们对于家庭影院的级别也是越来越高了,但又不知道该怎么配置。那么,不同级别的家庭影院设备该怎么选择呢?通常,入门级家庭影院一般采用立体声道音箱,带来环绕立体声体验;标准级家庭影院不仅有环绕立体声音效,还有低音炮;专业级家庭影院的专业级音箱系统,还有3D投影仪,这就是私人影院的配置……下面,小编就为大家带来不同级别家庭影院配置选择方案,助你选到满意的家庭影院,享受其带来的乐趣。
不同用途功放选购技巧 常见功放分类及特点讲解
功放俗称“扩音机”,它的作用就是把来自音源或前级放大器的弱信号放大,推动音箱放声。一套良好的音响系统功放的作用功不可没。功放大体上可分为三大类“专业功放”“民用功放”“特殊功放”。从使用类型上,可分为专业ktv功放、家用功放、汽车功放等。那么,在选购不同类型的功放时,该如何进行选择呢?以下小编为您带来了常见功放分类及特点讲解,介绍一下不同用途功放选购技巧。
功放机 音箱 ★★★
2748 51
分布式系统面临的挑战有哪些 分布式系统带来的问题及解答
分布式系统建立在网络上,而网络是不可靠的,可能的网络问题包括:网络分割、延时、丢包、乱序等,这些会给分布式系统带来挑战,除此之外,异构的机器与网络、普遍的节点故障也是分布式系统面临的主要挑战之一。分布式系统工作过程中,还会带来一些问题,比如如何找到所需的服务、如何避免雪崩、如何对系统进行监控等。下面一起来看看分布式系统面临的挑战有哪些以及分布式系统带来的问题及解答吧。
什么是分布式储能系统 分布式储能在电力系统的应用场景
随着可再生能源的扩展,越来越有必要将不断变化、间歇式的电力输出转变成更稳定和可靠的电力供应。分布式储能系统通过调节负荷,吸收电力峰值,在电力供应突然降低时注入电力,就地能源存储可以缓解由可再生能源生产输出所造成的电源波动。分布式储能系统接入位置灵活,目前多在中低压配电网、分布式发电及微电网、用户侧应用。
分布式系统和集中式系统的区别有哪些 分布式系统好还是集中式系统好
分布式系统和集中式系统在系统架构、数据存储、任务分配、应用场景等方面存在一定的差异,相比较而言,集中式系统具有架构简单、易于管理和控制的优点,适用于对数据一致性要求较高的场景;而分布式系统具有架构灵活、可扩展性强的优点,适用于对数据处理能力和并发访问能力要求较高的场景。下面一起来看看分布式系统和集中式系统的区别有哪些以及分布式系统好还是集中式系统好吧。