三层架构是指在业务和技术的发展过程中,系统中不同职责的部分被定义在不同的层次,每一层负责的功能更加具体化 。三层架构通常包括表示层、业务逻辑层和数据访问层,层与层之间互相连接、互相协作,构成一个整体,并且层的内部可以被替换成其他可以工作的部分,但对整体的影响不大 。
以 Web 应用程序为例,早期是将所有的表示逻辑、业务逻辑和数据访问逻辑放在一起,这就是一层架构 。
后来随着 JAVA、.NET 等高级语言的发展,提供了越来越方便的数据访问机制,如 java 的 JDBC 和 .NET 的 ADO.NET 。这时数据访问部分被分离开来,形成了二层架构 。
再后来,随着面向对象设计、企业架构模式等理念的不断发展,表示逻辑和业务逻辑也被分离开来,形成了现在的三层架构 。

文章插图
三层架构的具体内容如下:
表示层:用户使用应用程序时,看到的、听见的、输入的或者交互的部分 。
业务逻辑层:根据用户输入的信息,进行逻辑计算或者业务处理的部分 。
数据访问层:关注有效地操作原始数据的部分,如将数据存储到存储介质(如数据库、文件系统)及从存储介质中读取数据等 。
老王对这个解释非常满意,作了进一步的补充:“你看虽然现在程序被分成了三层,但只是逻辑上的分层,并不是物理上的分层 。也就是说,对不同层的代码而言,经过编译、打包和部署后,所有的代码最终还是运行在同一个进程中 。而这,就是所谓的单块架构 。”
成小胖挠了挠头:“原来单块架构是这个意思啊~~”
“嗯 。根据你的实际工作经验,你再总结下单块架构的优缺点吧 。”
平时勤于总结的成小胖很快便列出了单块架构的优缺点:
【看都不懂的三层架构,到底要怎么理解?】优点:
易于开发:开发方式简单,IDE 支持好,方便运行和调试 。
易于测试:所有功能运行在一个进程中,一旦进程启动,便可以进行系统测试 。
易于部署:只需要将打好的一个软件包发布到服务器即可 。
易于水平伸缩:只需要创建一个服务器节点,配置好运行时环境,再将软件包发布到新服务器节点即可运行程序(当然也需要采取分发策略保证请求能有效地分发到新节点) 。
缺点:
维护成本大:当应用程序的功能越来越多、团队越来越大时,沟通成本、管理成本显著增加 。当出现 bug 时,可能引起 bug 的原因组合越来越多,导致分析、定位和修复的成本增加;并且在对全局功能缺乏深度理解的情况下,容易在修复 bug 时引入新的 bug 。
持续交付周期长:构建和部署时间会随着功能的增多而增加,任何细微的修改都会触发部署流水线 。
新人培养周期长:新成员了解背景、熟悉业务和配置环境的时间越来越长 。
技术选型成本高:单块架构倾向于采用统一的技术平台或方案来解决所有问题,如果后续想引入新的技术或框架,成本和风险都很大 。
可扩展性差:随着功能的增加,垂直扩展的成本将会越来越大;而对于水平扩展而言,因为所有代码都运行在同一个进程,没办法做到针对应用程序的部分功能做独立的扩展 。
老王拍了拍成小胖的肩膀,眼睛眯成了一条缝:“小伙子总结的很不错!既然你已经对目前的单块架构的优缺点有了很好的理解,那现在咱们就可以开始来学习微服务架构了 。”
老王先从网上搜索“微服务架构”关键字,出来这么一段话:
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值 。每个服务运行在其独立的进程中,服务于服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等 。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建 。
成小胖看完了这段话,说:“看着有点晕,云里雾里的感觉……”
老王嘿嘿一笑:“莫慌,现在就给你详细讲讲微服务架构的特性 。”
1. 单一职责
微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统 。
推荐阅读
- 怎么能看出房子返潮还是漏水,墙角潮湿是因为漏水还是返潮
- 美国最经典恐怖片有哪些 美国最好看的恐怖片
- 蚂蚁森林能量产生规则在哪里看 蚂蚁森林能量怎么产生
- 三件事,能看出你情商高低
- 品台茶先看山名 杉林溪有好茶
- 梦见自己要买房子,看房子 梦见自己去看房买房
- 汽车并没有那么“矫情”!这些看似伤车的行为,其实对车没有坏处
- 做梦这地上拉了很多的屎 梦见自己拉了一大堆屎在地上被别人看见
- 发动机技术太高深?其实就这3个作用,看完买车不再纠结
- 成都宽和茶馆,品好茶 看奥运