分布式系统主要有5个点
可扩展性,可用性,可靠性,效率,可维护性。
可扩展性
可扩展性是系统,流程或网络增长和管理增长需求的能力。任何可以不断发展以支持不断增长的工作量的分布式系统都被认为是可扩展的。
由于诸如增加的数据量或增加的工作量(例如,交易数量)的许多原因,系统可能必须按比例缩放。可伸缩系统希望实现这种扩展而不会降低性能。
通常,由于管理或环境成本,虽然设计(或声称)可扩展,但系统的性能随系统规模而下降。例如,网络速度可能会变慢,因为机器往往相距很远。更一般地说,某些任务可能由于其固有的原子性质或者由于系统设计中的某些缺陷而无法分发。在某些时候,这样的任务会限制通过分发获得的加速。可扩展的体系结构避免了这种情况,并尝试均匀地平衡所有参与节点上的负载。
水平与垂直扩展:水平扩展意味着可以通过向资源池中添加更多服务器来扩展,而垂直扩展则意味着您可以通过向现有服务器添加更多功率(CPU,RAM,存储等)来扩展。
通过水平扩展,通过在现有池中添加更多计算机,可以更容易地动态扩展;垂直扩展通常仅限于单个服务器的容量,超出该容量的扩展通常涉及停机时间并且具有上限。
水平扩展的好例子是Cassandra和MongoDB,因为它们都提供了一种通过添加更多机器来满足不断增长的需求而水平扩展的简单方法。类似地,垂直缩放的一个很好的例子是MySQL,因为它允许通过从小型机器切换到更大型机器来实现垂直扩展的简单方法。但是,此过程通常涉及停机时间。
可靠性
根据定义,可靠性是系统在给定时期内失败的概率。简单来说,如果分布式系统即使在其一个或多个软件或硬件组件发生故障时仍能继续提供服务,也被认为是可靠的。可靠性代表任何分布式系统的主要特征之一,因为在这样的系统中,任何故障机器总是可以被另一个健康的机器替换,从而确保完成所请求的任务。
以大型电子商务商店(如亚马逊)为例,其中一个主要要求是,由于运行该交易的机器发生故障,任何用户交易都不应被取消。例如,如果用户已将商品添加到他们的购物车中,则系统预计不会丢失该商品。可靠的分布式系统通过软件组件和数据的冗余来实现这一点。如果携带用户购物车的服务器出现故障,则具有购物车完全副本的另一台服务器应该替换它。
显然,冗余具有成本,并且可靠的系统必须通过消除每个单点故障来支付服务以实现服务的这种弹性。
可用性
根据定义,可用性是系统在特定时间段内保持运行以执行其所需功能的时间。它是系统,服务或机器在正常条件下保持运行的时间百分比的简单度量。可以说一架飞机每月可以飞行数小时而没有太多的停机时间,可以说具有很高的可用性。可用性考虑了可维护性,维修时间,备件可用性和其他物流考虑因素。如果飞机停机维修,则认为在此期间无法使用。
考虑到可能发生的各种可能的现实条件,可靠性随着时间的推移而变得可用。能够安全地通过任何可能的天气的飞机比可能存在条件的飞机更可靠。
可靠性与可用性
如果系统可靠,则可用。但是,如果可用,则不一定可靠。换句话说,高可靠性有助于实现高可用性,但即使使用不可靠的产品,也可以通过最小化维修时间并确保备件在需要时始终可用而实现高可用性。让我们以网上零售商店为例,该商店在推出后的头两年内有99.99%的可用性。但是,该系统在没有任何信息安全测试的情况下启动。客户对系统感到满意,但他们没有意识到它不太可靠,因为它容易受到可能的风险。在第三年,系统遇到一系列信息安全事件,这些事件突然导致长时间的极低可用性。这会给客户带来声誉和财务损失。
效率
为了理解如何衡量分布式系统的效率,让我们假设一个以分布式方式运行的操作,并提供一组项目作为结果。其效率的两个标准度量是
第一项 响应时间(或等待时间),拿一个资源要等多久
第二项 吞吐量(或带宽)。在一个时间段里有多少资源可以被发出。
这两项措施对应于以下单位成本:
无论消息大小如何,系统节点全局发送的消息数。
表示数据交换量的消息大小。
分布式数据结构支持的操作的复杂性(例如,搜索分布式索引中的特定KEY)可以表征为这些成本单元之一的函数。一般而言,根据“消息数量”对分布式结构的分析过于简单化。它忽略了许多方面的影响,包括网络拓扑,网络负载及其变化,数据处理和路由中涉及的软件和硬件组件的可能异构性等。但是,开发精确的成本模型是相当困难的。这将准确地考虑所有这些表现因素;因此,我们要对粗略但稳健的系统行为进行估算。
可维护性
设计分布式系统时另一个重要的考虑因素是操作和维护是多么容易。 可维护性或可管理性是系统可以修复或维护的简单性和速度; 如果修复故障系统的时间增加,则可用性将降低。 可管理性需要考虑的事项是在出现问题时容易诊断和理解问题,是否易于进行更新或修改,以及系统运行的简单程度(即,它是否经常运行而没有失败或异常?)。
及早发现故障可以减少或避免系统停机。 例如,当系统出现系统故障时,某些企业系统可以自动呼叫服务中心(无需人工干预)。