减少以串联方式连接的组件数。无论何时要添加组件都适用。删除不必要的组件或添加它们的多个版本,将影响最小化。串联组件会使故障成倍增加。避免给系统添加串联组件。如果一定需要,则添加该组件的多个版本,这样一个版本出故障了,其他的版本还可以代替它。
电路中的组件可以以各种方式连接,最简单的两种连接方法就是串联和并联。串联电路中的组件,如电阻器和电容器,是按照一条路径连接的。在这种电路中,电流会流经每个组件,电阻和电压是累加的。一个电路有3个电阻器,另一个电路有3个电池图中还标示出所产生的电阻和电压。如果任何一个组件出了故障,如一个电阻熔断,那么整个电路都会出故障。
展示的是两个并联电路,上面的那个电路有3个电阻(和个电压电源或电容器),下面的电路有3个电池。总电阻是每个电阻的倒数之和的倒数。根据定义,总电阻一定小于最小的电阻。此外还要注意,电压并未改变,且电池只供应一部分电流,从而延长了它们的使用寿命。注意,在这种电路中,一个组件出了故障并不会引发整个电路的故障。
系统架构和电路有许多相似之处。服务器和网络设备就是组件。系统中有的组件是Web服务器,有些是应用服务器,有些是负率载均衡器,还有可能会是数据库服务器。这些组件都可以并联连接,也可以串联连接。一个简单的例子就是具有很大流量的静态站点。你可以用10个Web服务器放置同一个静态站点来提供流量。也可以使用一个负载均衡器来定向流量,或分配10个独立的P地址,通过DNS与你的域关联在一起。这些Web服务器是以并联方式连接的,就像图9-3中的电池。一台Web服务器需要处理的流量只是总量的一小部分,如果一台服务器出现了故障,整个站点仍是可用的,因为还有其他9台Web服务器。
作为一个更典型的串联架构的例子,让我们来添加一些层。一个标准的三层站点,有一台Web服务器、一台应用服务器和一台数据库服务器,我们用一个架构把它们串联起来。为了完成一个请求,Web服务器必须先接受它,然后把它传递给应用服务器,应用服务器再査询数据库。然后应用服务器接收返回的数据据,对数据进行操作,再将结果发回Web服务器,最终由Web服务器满足客户的请求。如果该电路或架构中的任何组件坏了,整个系统都会中断工作。
这把我们带回了现实世界中的架构。几乎总会有要求把系统组件串联连接在一起。在你考虑到负载均衡器、Web和应用层、数据库、存储系统等时,要保持系统运行就需要许多组件。当然,以并联方式添加组件,即使各个层是以串联方式连接的,也有助于减少由一个组件出故障而导致整个系统出故障的风险。把流量分配到多台web服务器上,这样如果只有一台Web服务器出故障了,也不会导致整个系统出故障。在Web和应用层,许多人承认这一理念。而在数据库和网络层,许多人则会忽视这个问题。如果Web和应用服务器都是以并联方式连接的,但它们却都要串联到一个数据库上,那么这一个组件就会造成灾难性的故障。
至于网络组件,我们常常能看到一些架构很注意以并联方式连接服务器,但完全忽略了网络设备,尤其是防火墙。防火墙在网络中是很常见的,关于防火墙的讨论。在这种情况下,流量要先经过防火墙,然后再经过负载均衡器、防火墙、交换机,随后到达Web服务器、应用服务器、数据库服务器,最后再原路返回。至少要经历7种组件各两次。如果经过了6个组件,再加一个组件,又有什么大不了呢?
串联的组件会使故障风险成倍增加。一个简单的例子是,如果我们有两台串联的服务器,每台有9.9%的可用性或正常运行时间,那么系统的总可用性就会小于99.9%×99.9%=99.8%6。如果我们以串联方式加入第三个组件,同样,我们得到的可用性会更低,即99.9%×99.9%×99.9%0=99.7%0。以串联方式加入系统的组件越多,系统的可用性越低。表94列出了一些简单的计算,可以看出,随着可用性降低,每月停机的时间会增加。以串联方式每向系统加入一个组件(可用性为99.9%),每月的停机时间就会增加约43分钟。
像当今大多数电路一样,你的网站建设系统也比简单的串联或并列许接多了,因此,要精确预计可用性,比我们这个简单的例子要复杂多了。你能了解到串联的组件会大大提高系统停机的风险。当然,减少串联的组件,或者并联地添加这些组件的多个版本,就可以减少这种风险。
>>> 查看《避免系统串联》更多相关资讯 <<<
本文地址:http://tcgq.cn/news/html/3514.html