部署模型

在上一篇博文“处理模型”中已经提到:在“处理模型”阶段划分为子系统后,为下一阶段打下了基础。当时卖了个关子没说具体是什么,本博就来揭开它的面纱,这就是:“部署模型”。

 

l         “部署模型”阶段的任务

“部署模型”英文是“Deployment Model”,正好对应UML中的“Deployment Diagrams”,有的文章或者书籍也叫“物理模型”。我之所以没有用“物理模型”,是因为“物理模型”的概念容易误解大家认为这个阶段只需要关注物理设备,而“部署模型”相对更加全面。我们来看部署模型的任务:

1)  确定部署实体,即采用什么样的物理设备,例如PC机、服务器、小型机;

2)  确定部署方式,例如局域网部署,企业网部署,因特网部署;

3)  确定部署连接,即组网方案,设计如何将这些物理设备连接起来;

 

l         具体操作步骤

1)确定部署实体

在“处理模型”阶段我们已经将子系统划分出来了,但如果你的系统性能、可靠性等质量属性要求很高,那么就需要进一步考虑将子系统再“排列组合”,分布到不同的机器上去。

“排列组合”的原则还是和划分子系统的第四步一样:根据“高内聚、低耦合”的原则、以及性能、可靠性、可扩展性、可测试性等质量属性要求,将子系统划分到不同的机器上去。

简单的说就是“一台不够用两台,两台不够用三台;PC不够用工作站,工作站不够用小型机”。那么是不是机器数量越多越好,质量越高越好呢?也不尽然,因为还需要考虑成本的因素,这就需要架构师、设计师进行权衡了(可以参阅我的博文:《软件设计漫谈之一:什么是软件设计?》)。

2)确定部署方式

确定好“部署实体”后,就需要考虑部署方式,因为不同的部署方式决定了需要采用不同的网络设备和组网方式。

常见的部署方式有:局域网部署、企业网部署、因特网部署,下面简单的介绍一下:

(1) 局域网部署:俗称LAN,即机器都在一个局域网内部,通过Hub、Lanswitch、网桥等连接,这是范围最小的一种部署方式;

(2)企业网部署:金融、电信、物流等稍微大的公司都会有企业内部网,企业网内部还会划分VPN等,通过路由器、交换机等进行连接,这是中等范围的部署方式;

(3)因特网部署:相信大家对这个都很熟悉,最常见的就是网站,如Sina、CSDN等,需要向宽带服务商如电信等申请因特网IP地址,这是范围最广的一种部署方式;

具体采用哪种方式呢?其实很简单:客户会告诉你的:)

当然客户不会直接告诉你说“我们要采用企业网部署”,客户会在需求中隐含描述出来,比如说“分公司将数据发给总公司”,这句话就隐含了要采用“企业网部署”或者“因特网部署”这种方式。

3)确定部署连接

确定好部署实体和部署方式后,就需要考虑如何将这些机器连接起来了,即常说的组网,这时就是TCP/IP大显身手的时候,我们看看具体如何应用TCP/IP:

(1)确定IP地址:包括网段、子网掩码、每台机器的IP地址;

(2)确定连接方式:单连接、双连接、四连接,至于八连接,好像还没有见过:)

(3)确定连接设备:连接设备和部署方式有关,同时也和性能、可靠性有关。例如:局域网要求不高的可以用hub,要求再高点就要低端的Lanswitch了;企业网和因特网就需要路由器了。

 

千言万语不如一个样例,让我们来看看POS系统在“部署阶段”如何操作。在“处理模型”阶段我们已经划分出3个子系统了:商品管理系统、交易系统、信息系统,我们基于这3个系统进行简要分析:

1)确定部署实体

假设要买POS系统的超市的物流和库存是集中管理,而交易是由各个分店分散管理,那么“商品管理系统”和“信息系统”可以部署在同一台小型机上面(根据性能和可靠性等要求的不同,可能是两台、三台甚至更多,样例中我们假设一台就够了)。

“交易系统”由于是分散的,服务器配置应该就够了,每个分店一台。

2)确定部署方式

从需求可以很容易看出:POS系统最好采用企业网部署的方式,因为有分店、有总店,这些分店和总店是分散的。

3)确定部署连接

IP地址的分配根据具体情况分配即可。根据部署方式可以推断出需要采用路由器类型的设备进行连接,而为了保证交易系统的可靠性(总不能网线一断,超市就关门不做生意了吧),需要双连接甚至是四连接。

 

=========================连载完毕==================================

到这里这一系列就结束了,各位看官是否有所收获呢?

如果以下问题能够正确答复,恭喜你,说明你已经基本上掌握了面向对象设计全流程的处理:

1、客户的需求是描述性的,例如“我们需要一个POS机”,而代码是一个一个具体的类和函数,那么如何从描述性的语言最后转化到具体的类和函数呢?

2、具体语言的特性,例如Java和C++的private、protected、public这些属性是从哪里来的?什么时候设计的?

3、不管什么代码,最后都要运行在具体的平台上,如Windows、Linux、UNIX等,那么这些平台相关的进程、线程什么时候设计、如何设计?(不要说你所有的产品都是单线程或者单进程哈:-P)

4、如果是稍微大一点的产品,需要运行在多台机器上,那么如何确定需要多少机器?如何分工?

posted on 2015-12-30 16:58  重八  阅读(507)  评论(0编辑  收藏  举报

导航