软件架构之四种类型简介.pdfVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

软件架构之四种类型简介

如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开

发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他

们的优缺点,希望能够帮助软件开发人员拓展知识面。

一、单体架构

单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑

层+数据库层。这是一种典型的JavaSpringmvc或者PythonDjango框

架的应用。其架构图如下所示:

单体架构

单体架构的应用比较容易部署、测试,在项目的初期,单体应用可以很好

地运行。然而,随着需求的不断增加,越来越多的人加入开发团队,代码

库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活

性逐渐降低,维护成本越来越高。下面是单体架构应用的一些缺点:

复杂性高:以一个百万行级别的单体应用为例,整个项目包含的模块非常

多、模块的边界模糊、依赖关系不清晰、代码质量参差不齐、混乱地堆

砌在一起。可想而知整个项目非常复杂。每次修改代码都心惊胆战,甚至

添加一个简单的功能,或者修改一个Bug都会带来隐含的缺陷。

技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的

技术债务,并且越积越多。“不坏不修”,这在软件开发中非常常见,在

单体应用中这种思想更甚。已使用的系统设计或代码难以被修改,因为应

用程序中的其他模块可能会以意料之外的方式使用它。

部署频率低:随着代码的增多,构建和部署的时间也会增加。而在单体应

用中,每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全

量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线

部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更

和缺陷修复,出错率比较高。可靠性差:某个应用Bug,例如死循环、内

存溢出等,可能会导致整个应用的崩溃。

扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块

的需要进行伸缩。例如,应用中有的模块是计算密集型的,它需要强劲的

CPU;有的模块则是IO密集型的,需要更大的内存。由于这些模块部署在

一起,不得不在硬件的选择上做出妥协。

阻碍技术创新:单体应用往往使用统一的技术平台或方案解决所有的问题,

团队中的每个成员都必须使用相同的开发语言和框架,要想引入新框架或

新技术平台会非常困难。

二、分布式应用

中级架构,分布式应用,中间层分布式+数据库分布式,是单体架构的并发

扩展,将一个大的系统划分为多个业务模块,业务模块分别部署在不同的

服务器上,各个业务模块之间通过接口进行数据交互。数据库也大量采用

分布式数据库,如redis、ES、solor等。通过LVS/Nginx代理应用,将用

户请求均衡的负载到不同的服务器上。其架构图如下所示:

分布式架构

该架构相对于单体架构来说,这种架构提供了负载均衡的能力,大大提高

了系统负载能力,解决了网站高并发的需求。另外还有以下特点:

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

晰:把项目拆分成若干个子项目,不同的团队负责不同的子项目。扩展方便:

增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。部署方

便:可以灵活的进行分布式部署。提高代码的复用性:比如service层,如果

不采用分布式rest服务方式架构就会在手机wap商城,微信商

城,pc,android,ios每个端都要写一个service层逻辑,开发量大,难以维护

一起升级,这时候就可以采用分布式rest服务方式,公用一个service层。缺

点:系统之间的交互要使用远程通信,接口开发增大工作量,但是利大于弊。

三、微服务架构

微服务架构,主要是中间层分解,将系统拆分成很多小应用(微服务),

微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容

器上。当应用的故障不会影响

文档评论(0)

180****5237 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档