可扩展性正是如今软件设计领域最值得优先考虑的要素。然而,计算机科学家们还无法了解一套单独的架构如何才能扩展至各类应用环境当中。下面就列出十4大大家耳熟能详的可扩展性架构,以供借鉴。

1、LB (负载平衡器) + 无共享单位 - 该模型中包含一系列单元,各单元彼此间不共享任何内容,且一致指向一个将输入文讯按一定条件发往单元处的负载平衡器(这构成一个循环,以负载等情况为基础)。每个单元可以是一个单独的节点或是紧密耦合的节点所构成的集群。用户可以使用DNS循环、硬件负载平衡器或者软件负载平衡器达成负载平衡效果。创建一套负载均衡的层次结构,并在其中结合前面提到的各种负载平衡器也是可行的。

2、点对点架构 (分布式Hash列表 (简称DHT)以及内容寻址网络(简称CAN)) -这套模型提供了一些传统的可扩展算法,这些算法的各个方面几乎全部按对数进行了等比例增加。举例来说,像Chord、Pastry(特指免费版)以及CAN都属于此类。而以Cassandra为代表的、基于P2P架构的几款NoSQL系统也是其中的成员。

3、责任树形图 - 这种模型打破了递归问题的束缚,将整个流程以树状形式加以处理;每个父节点将工作下放至子节点。这种模型扩展性强,并已经被应用于数款可扩展性架构当中。

4、分布式队列 – 这种模型以将队列实施(即先进先出交付机制)作为网络服务处理为基础。该模型通过JMS队列而广泛得到采用。一般会遵循这种做法的有任务队列以及通过保持队列分级体系实现扩展性的任务队列版本,后者在负载无法及时处理时,任务会由低级层面向高级层面传递。

可扩展性的实现只有三种方式,即:分布、缓存及异步处理。前文所提到的各种架构事实上都是把这三种方式进行不同组合并加以实施!

相关文章