《架构漫谈》读书笔记七

什么是软件架构

这就是软件比较复杂的地方,涉及到软件本身的业务体系,和所虚拟的业务体系。根据以上的分析,所生成的架构,究竟那些算是软件架构呢?

软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。

每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。

所以当我们说软件架构的时候,我们一定要讲清楚,究竟说的是部署的架构,还是代码的架构。软件架构的落地,需要软件的组织架构和流程来保障,离开了这个,软件架构是一句空话。

另外很多人讲,架构是进化出来的。架构实际上是在量不断的增大,超过了单台服务器的容量,逐渐的分拆,同时导致超过单个人员的能力,工作人员不断的增多,工作内容不断的分拆形成的。这本身就是架构的意义所在。不管怎么分拆,所达到的目标没有任何变化,就是完成业务在计算机中的虚拟化。

 

软件架构就是软件的基本结构。架构的本质是管理复杂性。如果你觉得架构不重要,可能是你做的事情不够复杂,或者是你没有管理好复杂性。架构模式虽多,但常用的适合ICT软件,也就那么几种:

1.分层架构

2.事件驱动架构

3.微核架构(又称插件架构)

4.微服务架构

5.云架构

一、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的软件标准架构。如果你不知道要用什么架构,那就用它。有人说软件职业生涯中只用到了一种架构,那一定也是它。当前很多产品的顶层架构,几乎无一例外的也是分层架构。

分层架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定软件一定要分成多少层,但是最常见的是四层结构。

表现层(presentation):用户界面,负责视觉和用户互动

业务层(business):实现业务逻辑

持久层(persistence):提供数据,SQL 语句就放在这一层

数据库(database) :保存数据

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。用户的请求将依次通过这四层的处理,不能跳过其中任何一层。

分层架构的优点:

1、结构简单,容易理解和开发;

2、不同技能的程序员可以分工,负责不同的层,天然适合大多数软件公司的组织架构。虽说架构决定组织,但实际上架3、构往往都是服从于组织;

3、每一层都可以独立测试,其他层的接口通过模拟解决。

分层架构的缺点:

1、 一旦环境变化,需要代码调整或增加功能时,通常比较费时费力;

2、部署比较麻烦,即使只修改一个小地方,往往需要整个软件重新部署,不容易做持续发布;

3、软件升级时,可能需要整个服务暂停;

4、扩展性差。用户请求大量增加时,必须依次扩展每一层,由于每一层内部是耦合的,扩展会很困难。

 

原文地址:https://www.cnblogs.com/cj-125/p/11058376.html