浅谈系统架构

“架构”一词对程序员来说是再常见不过的词了,一提到架构绝大部分的技术人员都会有一种不可企及、十分高大上的感觉,其实架构就在我们身边,是我们看得到摸的着的东西。

我们先看看几个概念,系统与子系统,模块与组件,框架与架构的关系和区别。

系统与子系统 系统是由一群有关联的个体按照指定的规则运作,从而能完成个别元件不能单独完成的工作的整体。例如:汽车与发动机、轮胎等元件的关系。 子系统也是一个系统,他与系统的定义是一致的,只是观察的角度不同,一个系统可能是更大系统的一个子系统。 模块与组件 模块和组件都是系统的组成部分,只是从不同角度拆分系统而已; 从逻辑的角度来拆分就是“模块”,从物理的角度拆分后就是“组件”; 划分模块的主要目的是职责分离,划分“组件”的目的是单元复用。 框架与架构 框架(Framework)关注的是规范与功能产品,例如MVC规范与SpringMVC这个MVC的开发框架;架构(Architecture)关注的是“结构”,他是系统的顶层结构。

总结:系统根据业务或功能划分为各个模块,某些模块可能又被升级为了子系统;模块中可能使用了很多组件来实现某些具体功能;同时,也可能使用了某些框架来作为开发的基础,而架构则描述了各个子系统或模块间如何协调工作。

为什么要做架构 **架构设计的主要目的是为了解决软件系统复杂度带来的问题**

那么系统的复杂度主要来源于哪些方面呢?其主要来源与以下几个方面
1)高性能
2)高可用
3)可扩展性
4)低成本
5)安全
6)规模
也就是说结构设计是为了解决某些关键的问题而存在,并不是每个系统都需要进行架构设计的。

在做架构设计的时候不能贪大而全,而是要遵循几个简单的原则
1)合适原则:合适优于业界领先
没有那么多人,却想干那么多人的活,是失败的第一个主要原因;没有那么多积累却想一步登天,是失败的第二个主要原因;没有那额卓越的业务场景,却幻想灵光一闪成为天才,是失败的第三个主要原因。

2)简单原则:简单优于复杂
结构的简单,逻辑的简单

3)演化原则:演化优于一步到位
对于建筑来说,永恒是主题;而对于软件来说,变化才是主题。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。