互联网上有许多的应用程序和服务,它们都有可能出现故障,但在很多时候,我们几乎都不能发现这些服务中断的情况,这就是分布式系统的关键特性。分布式系统的特性包括容错性、高可扩展性、开放性、并发处理能力和透明性。
1.容错性
设计分布式系统的过程中,就会把容错性作为开发系统的首要目标之一。这样,一旦在分布式系统中某个节点发生故障,利用容错机制即可避免整套系统服务不可用。
故障恢复对于分布式系统设计与开发来说极其重要。当服务器崩溃后,我们需要通过一种方法来回滚永久数据的状态,确保尚未处理完成的数据不被传递到下一个状态继续处理,并解决多个节点数据可能存在的不一致性问题,这往往涉及事务性。常见的避免故障的方法包括消息重发、冗余等。
2.高可扩展性
高可扩展性是指系统能够在运行过程中自由地对系统内部节点或现有功能进行扩充,而不影响现有服务的运行。下面是一个现代分布式系统设计的案例Storm实时处理系统。在 Storm 中,节点主要由 Spout 和 Bolt 两大类组成,Spout作为消息源会将搜集到的数据发送到 Storm 计算拓扑中,再通过一系列消息处理单元 Bolt 进行分布式处理,最终将处理结果合并得到最终结果。利用这种机制,可以随意在消息处理单元后进行扩充,如果数据处理的结果还达不到需求,可在 Storm 计算拓扑中继续追加新的消息处理单元,直至满足需求。图1所示为基本的Storm 实时处理系统拓扑结构图,其中每个方框都是一个节点。
图 1 基本的 Storm 实时处理系统拓扑结构
3.开放性
分布式系统的开放性决定了一个系统是否具备自我扩展和与其他系统集成的能力。我们可以通过对外提供开放应用程序编程接口(API)的方式来提高分布式系统的开放性,提供哪些接口及如何提供决定了开发的系统的开放程度,以及与现有系统和其他系统集成、扩展的能力。
4.并发处理能力
分布式系统引发的一个问题就是并发导致的一致性该如何处理在分布式系统中。因此,对象的并发或同步操作必须确保数据的一致性。除了一致性之外,人们还希望可以一直对系统进行读写,这就是所谓的可用性。
5.透明性
在分布式系统内部,可能有成千上万个节点在同时工作,对用户的一个请求进行处理,最终得出结果。系统内部细节应该对用户保持一定程度的透明,我们可以为用户提供资源定位符(URL)来访问分布式系统服务,但用户对分布式系统内部的组件是无从了解的。
因此,我们应该把分布式系统当作一个整体来看待,而不是多个微型服务节点构成的集合。
标签:系统,特性,容错性,Storm,分布式系统,节点,开放性 From: https://blog.51cto.com/u_15735635/5878312