Patterns in network system design (4)
作者 kernelchina | 2011-01-09 21:12 | 类型 专题分析, 行业动感, 通讯产品 | 9条用户评论 »
系列目录 网络系统设计模型概论
15) p2p Pattern Name and Classification: p2p 在网络世界里面,有两种类型的通信管道:p2p和p2mp。在这里,p2p指的是点对点的通信管道,而不是peer-to-peer,peer-to-peer是另外一个话题,在这里不做讨论。p2mp指的是点对多点的通信管道。使用什么样的通信管道和上层应用的需求有关系,比如BGP,使用TCP来交换协议信息,因为BGP协议一般是在两个AS之间交换路由信息,AS之间的信道本身可能不支持广播,而且不同AS之间交换的信息也可能不同;而OSPF则使用多播来交换路由信息,因为OSPF一般在内网使用,这个信道通常支持广播,而且一个节点传递给其他节点的信息是一样的。 1: http://en.wikipedia.org/wiki/Unicast Pattern Name and Classification: p2mp 使用p2mp的前提是发送给其他点的信息是一样的,并且最好底层信道支持广播。通常它用于在多点之间维护一个一致的状态机,也就是说,这个状态机在每个节点上都是一样的,每个节点都会更新自身的状态并把这个变化同步给其他节点。当然,如果底层信道不支持广播,可以使用p2p来模拟p2mp,但是这样做的开销很大。 1: http://en.wikipedia.org/wiki/Multicast 17) centralized packet scheduler Pattern Name and Classification: centralized packet scheduler 以下四个模式的想法来自于这个帖子: 假设USG9110是这样的结构: +---+ +-----+ | s | +------+ | IOC |-----| w |-----| SPUA | +-----+ | i | +------+ | t | +-----+ | c | +------+ | IOC |-----| h |-----| SPUA | +-----+ | | +------+ | | +-----+ | f | +------+ | IOC |-----| a |-----| SPUA | +-----+ | b | +------+ | r | +-----+ | i | +------+ | IOC |-----| c |-----| SPUA | +-----+ | | +------+ +---+ 那么如何分发packet/stream?如何管理资源? 一个选择是这样: +—–+ +——+ 其中一个SPUA是特殊的,主要分发packet或者stream,其他SPUA处理业务。这样做的好处是loadbalance可以很好,但坏处也有两个: 1) 这个特殊的SPUA可能会成为瓶颈,导致无法scale out 2) 在SPUA少的情况下,这个特殊的SPUA的性能被浪费了 1: http://en.wikipedia.org/wiki/Peer-to-peer 18) decentralized packet scheduler Pattern Name and Classification: decentralized packet scheduler 如何分发packet/stream?管理资源?还有一个办法: +—–+ +——+ IOC上,用哈希算法,把packet/stream直接映射到SPUA上,然后由SPUA处理业务。这样做的好处是可以很好地scale out,但坏处也有两个: 1) load balance不好做。由于是静态映射,很容易受到攻击;在某一个SPUA出现over load时,映射函数无法感知。 2) 热插拔支持比较困难。在SPUA的数量改变时,相应的映射也需要变化,要把这个变化限制在一定范围之内,而不是全局重新映射。 1: http://en.wikipedia.org/wiki/Peer-to-peer 19) centralized resource management Pattern Name and Classification: centralized resource management 把需要动态分配的资源放在某一个SPUA上,统一管理。这样做的好处是资源利用率高,实现简单,但坏处是需要交换的消息太多,影响性能。当然也可以减少消息数量,比如使用bundle message;或者是从上一级分配一块资源,然后在本地管理。本地分配肯定要比远程分配快,这个和cache的性质差不多。 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 先把资源静态分配给每个SPUA,然后由每个SPUA自己管理自己的资源。如果配合decentralized packet scheduler使用,可以很好地scale out,但问题也不少。一是资源浪费(这个和load balance不平衡有关),再就是资源重新分配(比如在热插拔的情况下)。scale out的设计是最好的,但是难度也相当大。 1: http://en.wikipedia.org/wiki/Shared_resource 2: Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management | |
雁过留声
“Patterns in network system design (4)”有9个回复
刚才又全部读了一遍. 写的真不错。。。对multicast部分写的略微深一点就会更精彩•••
说容易,写难啊,我再想想。
还有一种模式:类似于HTTP的那种,一个request,一个response。
如果再复杂点,可以通过其他手段(例如cookie)来实现所谓的session。
这个在系列3里面有,pattern最好能结合着案例讲,目前没找到很好的参考平台,linux/freebsd/vxworks?
single message 是这个,呵呵,找到了
今天正在设计新模块的架构,想到这个,以为没有提到呢,呵呵。
不错,如果你是一个system designer本文列出了最精髓的部分。。。。好文!
赞一下用文本符号画拓扑图。
以前看rfc的时候,老外那么弄就极敬佩。
后来看老外写测试方案的时候也这么弄也很敬佩。
今天看到中国人这么搞更敬佩。可惜我不会搞。
to bigrong:
Ascii Art Studio这个工具就可以干这事
谢谢楼上!