最新消息: PyCharm vs VSCode,哪个更好?
您现在的位置是:群英 > 开发技术 > web开发 >
四种软件架构的发展历程
IT168发表于 2020-11-06 16:44 次浏览
在谈软件架构演进史之前,我想先说点别的,大部分程序员肯定都听过架构师这个职位,只知道架构师很牛,也许在你们公司也有架构师的存在,但是表面上架构师好像不用做什么事,针对这个问题我们首先来看看四种软件架构的重要性和演进史,多了解一下,身为程序员要是会其中一种也是很厉害的了。

一、单体架构

单体架构

下面是单体架构应用的一些缺点:

  • 部署频率低:随着代码的增多,构建和部署的时间也会增加。而在单体应用中, 每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、 影响范围大、 风险高, 这使得单体应用项目上线部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错率比较高。

  • 可靠性差:某个应用Bug,例如死循环、内存溢出等, 可能会导致整个应用的崩溃。

  • 扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的CPU;有的模块则是IO密集型的,需要更大的内存。由于这些模块部署在一起,不得不在硬件的选择上做出妥协。

  • 阻碍技术创新:单体应用往往使用统一的技术平台或方案解决所有的问题, 团队中的每个成员 都必须使用相同的开发语言和框架,要想引入新框架或新技术平台会非常困难。

二、分布式应用

  1. 大型互联网架构演进过程

  2. 架构师应具备的分布式知识

  3. 主流分布式架构设计详解

中级架构,分布式应用,中间层分布式+数据库分布式,是单体架构的并发扩展,将一个大的系统划分为多个业务模块,业务模块分别部署在不同的服务器上,各个业务模块之间通过接口进行数据交互。数据库也大量采用分布式数据库,如redis、ES、solor等。通过LVS/Nginx代理应用,将用户请求均衡的负载到不同的服务器上。其架构图如下所示: 

分布式架构

  1. 降低了耦合度:把模块拆分,使用接口通信,降低模块之间的耦合度。

  2. 责任清晰:把项目拆分成若干个子项目,不同的团队负责不同的子项目。

  3. 扩展方便:增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。

  4. 部署方便:可以灵活的进行分布式部署。

  5. 提高代码的复用性:比如service层,如果不采用分布式rest服务方式架构就会在手机wap商城,微信商城,pc,android,ios每个端都要写一个service层逻辑,开发量大,难以维护一起升级,这时候就可以采用分布式rest服务方式,公用一个service层。

 

相对于上两者,Facebook 在2014年二月收购的 Parse,则侧重于提供一个通用的后台服务。这些服务被称为Serverless或no sever。想到PaaS(平台即服务)了是吗?很像,用户不需要关心基础设施,只需要关心业务,这是迟到的PaaS,也是更实用的PaaS。这很有可能将会变革整个开发过程和传统的应用生命周期,一旦开发者们习惯了这种全自动的云上资源的创建和分配,或许就再也回不到那些需要微应用配置资源的时代里去了。

 

<span font-variant-numeric:normal;font-variant-east-asian:normal;line-height:1.8;white-space:normal;word-break:break-all;zoom:1;"="" style="overflow-wrap: break-word; color: rgb(51, 51, 51);">

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
下一篇:没有了
相关信息推荐