分布 集群

   分布和集群不完全一样,但有很多相似的地方,也有很多不同的地方。我们主要从他的基础特性上来分析,分布的计算单元可能分布在广大的地理空间,比如中国的 一台机器和美国的一台机器;而集群的计算单元主要集中在一个相对较近的距离,比如一个机房,对于集群的使用者来说,集群是个整体,他的构成是透明。不论他 们是为了完成同一个任务还是分担不同的任务,我觉得都不是关键问题。他们之间最大差别就是计算单元之间通讯代价引起的,导致不同处理方案。

    P2P类型的文件下载是分布一个典型的应用,每个文件被分割成若干部分,同时从不同地方下载,然后在本地组合成一个文件。这个方式比从单个服务器下载要快 得多,不过显然依然无法快过本地下载的速度。分布计算的鼓吹者认为分布计算将一个任务分解成若干子任务,由不同计算单元承担计算任务,然后对结果合成,他 所耗费的时间将比单个计算单元要少得多。但我们依然要清醒认识到他的限制条件,计算单元的通讯代价以及由此引起的通讯量和计算时间问题,还有任务分配的额 外时间。将分布计算应用于计算耗时长、计算单元通讯量小的计算任务中,是合适的,比如分布式文件下载。

    集群对外提供的是单个入口,对访问者来说,他是一个整体。一般来说,负载均衡是集群的主要任务。不管一个任务是被多个集群单元分担,还是被选中一个集群单 元承担,都不是关键。关键的是他利用集群的扩展性,通过增加计算单元来降低计算时间。由于集群的计算单元之间的通讯代价要远小于分布,有些实现利用光通讯 来连接计算单元,使得不同计算单元之间的计算代价和一个计算单元内部通讯代价相差无几。

    分布和集群各有自己优势,针对不同的环境我们需要采用不同的方案,不能一概而论。比如为全世界各地提供期货交易服务,我们不可能为分布在各大洲的客户提供 一个集群,如果这样的话,集群所提高的效率将被通讯代价所严重抵消。一个好的方案是为美国交易所提供一个集群为美国客户服务,为中国交易所提供一个集群为 中国客户服务。当有个中国客户想异地在美国交易所做交易,那么我们可以通过中国的集群和美国的集群通讯。这样的好处是可以通过降低中国集群和美国集群之间 的通讯代价而提高所有中国客户在美国交易所的交易效率。当然,我们还应该允许中国客户可以直接连接到美国集群,毕竟当中国集群发生故障时,依然可以使用美 国集群。这是分布的好处,可不能浪费了。

    从一个更宏观的角度来看,由于集群被视为一个计算单元,所以可以被视为分布的一个计算单元。集群本身由多个机器构成,比单个机器构成的计算单元提供更高的 可用性和性能,降低响应速度。但是,当通往集群的访问通道被切断时,集群将同样也会失效,除非同时提供其他通道。而分布同样由多个机器构成的,他的高可用 性是由数据冗余量和网络的连通性决定的,比如文件下载,当A计算单元失效,同样的文件片段可以从B计算单元获取;高性能的获得是通过缩短网络通讯代价,由 多个计算单元分担计算任务。

    我们要建立高可用高性能系统,可以结合分布和集群的优势。一般来说,这个系统以分布计算为主、集群为辅。对于期货交易系统来说,这个假设是客观的,因为不 同营业部可能分布在不同的省市地区。就是推而广之,也是合理的假设。我们将计算量较大的任务交给集群负责,比如数据库管理,是比较适合于集群的,将这些集 群系统挂接到系统网络中,作为一个高可用的计算单元。对于一个复杂的交易系统来说,可能有大量的功能需要计算,这些功能多数具有地域性,比如某个营业部的 客户信息,将这种功能作为集群为整个系统服务其实没有太大必要。我们将功能分解成不同部分,分布在系统各个区域,为各个区域服务,反而能获取更短的响应时 间。

    但有些任务,比如交易,需要大量的计算,响应大量客户请求,同时和交易所只能有单一的通讯通路,用集群来承担这个任务才是合适的。

    分布的连通性是高可用的重要保证,分布的区域自治和集群的负载均衡是缩短响应时间,提高性能的重要保证。我们通过设计服务单元的部署方案来更好的利用分布和集群的优势。

相关推荐