249045439
网站设计

系统开发之设计模式

发表日期:2024-02-18   作者来源:www.logegame.com   浏览:0   标签:网站制作    
上周五同事推荐了design patterns in networks,里面不少patterns都是做路由器防火墙如此的转发设施之所以高效的精髓所在。「程序生活」的读者多为网络应用(系统)开发者,对这类design patterns未必知道,所以这篇文章我干脆抽取同事推荐内容和网络系统开发关联较大的patterns,讲讲在网络项目上的应用场景,借花献佛。

Control plane和data plane离别

这两个定义几乎是networks 101的基础知识定义。Juniper上世纪末兴起的主要原因之一就是严格区别界定control plane和data plane,然后用ASIC达成data plane。Data plane是指一个互联网设施用于报文转发的component,它的效率决定整个设施的效率,一般会由硬件完成。Control plane是指一个设施协议有关的部分,可以没数据转发那样高效。

当你打开浏览器访问谷歌时,internet上面的互联网设施就开始紧锣密鼓地工作,目的只有一个,把你的请求转发到谷歌的服务器。学过互联网课程的人都了解,这其中运行的互联网设施就是路由器。路由器需要有足够快的转发速度,延时越小越好 —— 这考量的是data plane的效率;而data plane转发决策的依据 —— 路由,则由control plane的协议处置来完成。

在一个网络系统上,好像没control plane和data plane较为明确的界定。大家可以暴力地觉得用户访问的路径为data plane,而admin有关的路径为control plane。对于data plane上的工作,大家可以单独划分一个集群来处置,力求每一个request都得到高效地处置,而control plane上的工作,则可以尽量用比较小的资源完成。这里非常重要的原则是系统开发之设计模式状况;与状况迁移。状况迁移是由动作引起的,因此一个状况机可以表示为 state machine = {state, event} -> (action, new state)。只须画出一个二维表,就能剖析系统所大概的路径,而且非常难有遗漏。在互联网设施中,大多数协议都由状况机来表述,譬如说ospf,igmp,tcp等等。

在网络项目中,状况机无处不在。譬如说订单处置。一个订单的处置步骤用状况机表述再好不过。下面是我过去写过的一段示例代码(python)系统开发之设计模式系统开发之设计模式浏览地址:

如没特殊注明,文章均为优果网 原创,转载请注明来自http://www.huiguohuo.com/news/sheji/8806.html