Patterns in network system design (4)

Sina WeiboBaiduLinkedInQQGoogle+RedditEvernote分享




15) p2p

Pattern Name and Classification:  p2p
Intent: 一对一的通信管道
Also Known As: unicast
Motivation (Forces):

  在网络世界里面,有两种类型的通信管道:p2p和p2mp。在这里,p2p指的是点对点的通信管道,而不是peer-to-peer,peer-to-peer是另外一个话题,在这里不做讨论。p2mp指的是点对多点的通信管道。使用什么样的通信管道和上层应用的需求有关系,比如BGP,使用TCP来交换协议信息,因为BGP协议一般是在两个AS之间交换路由信息,AS之间的信道本身可能不支持广播,而且不同AS之间交换的信息也可能不同;而OSPF则使用多播来交换路由信息,因为OSPF一般在内网使用,这个信道通常支持广播,而且一个节点传递给其他节点的信息是一样的。
Known Uses: BGP
Related Patterns: p2mp
References:

1: http://en.wikipedia.org/wiki/Unicast
16) p2mp

Pattern Name and Classification: p2mp 
Intent: 一对多的通信管道
Also Known As: multicast
Motivation (Forces):

  使用p2mp的前提是发送给其他点的信息是一样的,并且最好底层信道支持广播。通常它用于在多点之间维护一个一致的状态机,也就是说,这个状态机在每个节点上都是一样的,每个节点都会更新自身的状态并把这个变化同步给其他节点。当然,如果底层信道不支持广播,可以使用p2p来模拟p2mp,但是这样做的开销很大。
Known Uses: OSPF
Related Patterns: p2p
References:

1: http://en.wikipedia.org/wiki/Multicast

17) centralized packet scheduler

Pattern Name and Classification: centralized packet scheduler
Intent: 把packet或stream动态分配给处理单元
Also Known As: dynamic packet scheduler
Motivation (Forces):

   以下四个模式的想法来自于这个帖子:

     “华为赛门铁克Secospace USG9110评测报告

   假设USG9110是这样的结构:

               +---+
   +-----+     | s |     +------+
   | IOC |-----| w |-----| SPUA |
   +-----+     | i |     +------+
               | t |
   +-----+     | c |     +------+
   | IOC |-----| h |-----| SPUA |
   +-----+     |   |     +------+
               |   |
   +-----+     | f |     +------+
   | IOC |-----| a |-----| SPUA |
   +-----+     | b |     +------+
               | r |
   +-----+     | i |     +------+
   | IOC |-----| c |-----| SPUA |
   +-----+     |   |     +------+
               +---+

   那么如何分发packet/stream?如何管理资源?

   一个选择是这样:

  +—–+               +——+
   | IOC |  \           / | SPUA |
   +—–+    \        /+——+
               +——+
               | SUPA |
               +——+
             /         \
   +—–+ /           +——+
   | IOC |               | SPUA |
   +—–+             +——+

   其中一个SPUA是特殊的,主要分发packet或者stream,其他SPUA处理业务。这样做的好处是loadbalance可以很好,但坏处也有两个:

   1) 这个特殊的SPUA可能会成为瓶颈,导致无法scale out

   2) 在SPUA少的情况下,这个特殊的SPUA的性能被浪费了
Known Uses:
Related Patterns: decentralized packet scheduler
References:

1: http://en.wikipedia.org/wiki/Peer-to-peer

18) decentralized packet scheduler

Pattern Name and Classification:  decentralized packet scheduler
Intent: 把packet或stream静态分配给处理单元
Also Known As: static packet scheduler
Motivation (Forces):

   如何分发packet/stream?管理资源?还有一个办法:

  +—–+               +——+              
  | IOC | ———– | SPUA |
  +—–+   \      /    +—–+
                \
  +—–+   /     \     +—–+
  | IOC |————| SPUA |
  +—–+               +—–+

   IOC上,用哈希算法,把packet/stream直接映射到SPUA上,然后由SPUA处理业务。这样做的好处是可以很好地scale out,但坏处也有两个:

   1) load balance不好做。由于是静态映射,很容易受到攻击;在某一个SPUA出现over load时,映射函数无法感知。

   2) 热插拔支持比较困难。在SPUA的数量改变时,相应的映射也需要变化,要把这个变化限制在一定范围之内,而不是全局重新映射。
Known Uses:
Related Patterns: centralized packet scheduler
References:

1: http://en.wikipedia.org/wiki/Peer-to-peer

19) centralized resource management

Pattern Name and Classification: centralized resource management
Intent: 集中统一管理资源
Also Known As: dynamic resource management
Motivation (Forces):

   把需要动态分配的资源放在某一个SPUA上,统一管理。这样做的好处是资源利用率高,实现简单,但坏处是需要交换的消息太多,影响性能。当然也可以减少消息数量,比如使用bundle message;或者是从上一级分配一块资源,然后在本地管理。本地分配肯定要比远程分配快,这个和cache的性质差不多。
Known Uses:
Related Patterns: decentralized resource management
References:

1: http://en.wikipedia.org/wiki/Shared_resource

2: Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management

20) decentralized resource management

Pattern Name and Classification:  centralized resource management
Intent: 把资源静态分配给各节点,由各节点自主管理各自的资源
Also Known As: static resource management
Motivation (Forces):

  先把资源静态分配给每个SPUA,然后由每个SPUA自己管理自己的资源。如果配合decentralized packet scheduler使用,可以很好地scale out,但问题也不少。一是资源浪费(这个和load balance不平衡有关),再就是资源重新分配(比如在热插拔的情况下)。scale out的设计是最好的,但是难度也相当大。
Known Uses:
Related Patterns: centralized resource management
References:

1: http://en.wikipedia.org/wiki/Shared_resource

2: Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management

(2个打分, 平均:5.00 / 5)

雁过留声

“Patterns in network system design (4)”有9个回复

  1. 陈怀临 于 2011-01-10 7:46 下午

    刚才又全部读了一遍. 写的真不错。。。对multicast部分写的略微深一点就会更精彩•••

  2. kernelchina 于 2011-01-11 3:06 上午

    说容易,写难啊,我再想想。

  3. Will Chie 于 2011-01-11 5:34 下午

    还有一种模式:类似于HTTP的那种,一个request,一个response。
    如果再复杂点,可以通过其他手段(例如cookie)来实现所谓的session。

  4. kernelchina 于 2011-01-11 7:38 下午

    这个在系列3里面有,pattern最好能结合着案例讲,目前没找到很好的参考平台,linux/freebsd/vxworks?

  5. Will Chie 于 2011-01-12 4:38 上午

    single message 是这个,呵呵,找到了

    今天正在设计新模块的架构,想到这个,以为没有提到呢,呵呵。

  6. alrn 于 2011-01-16 4:21 上午

    不错,如果你是一个system designer本文列出了最精髓的部分。。。。好文!

  7. bigrong 于 2011-01-25 11:00 下午

    赞一下用文本符号画拓扑图。
    以前看rfc的时候,老外那么弄就极敬佩。
    后来看老外写测试方案的时候也这么弄也很敬佩。
    今天看到中国人这么搞更敬佩。可惜我不会搞。

  8. Natalia 于 2011-01-26 1:25 上午

    to bigrong:
    Ascii Art Studio这个工具就可以干这事

  9. bigrong 于 2011-01-26 5:53 下午

    谢谢楼上!