Java互联网科技Java 杂谈

四种软件架构演进史,程序员会一种就很牛了!

2019-04-24  本文已影响2人  java成功之路

如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存、晋升空间。这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。

一、单体架构

单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑层+数据库层。这是一种典型的Java Spring mvc或者Python Django框架的应用。其架构图如下所示:

image

单体架构

单体架构的应用比较容易部署、测试, 在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加, 越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活性逐渐降低,维护成本越来越高。

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

image

二、分布式应用

  1. 大型互联网架构演进过程
  2. 架构师应具备的分布式知识
  3. 主流分布式架构设计详解
文末有架构图集领取

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

image

分布式架构

该架构相对于单体架构来说,这种架构提供了负载均衡的能力,大大提高了系统负载能力,解决了网站高并发的需求。另外还有以下特点:

  1. 降低了耦合度:把模块拆分,使用接口通信,降低模块之间的耦合度。
  2. 责任清晰:把项目拆分成若干个子项目,不同的团队负责不同的子项目。
  3. 扩展方便:增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
  4. 部署方便:可以灵活的进行分布式部署。
  5. 提高代码的复用性:比如service层,如果不采用分布式rest服务方式架构就会在手机wap商城,微信商城,pc,android,ios每个端都要写一个service层逻辑,开发量大,难以维护一起升级,这时候就可以采用分布式rest服务方式,公用一个service层。

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

三、微服务架构

  1. 服务的前世今生
  2. 基于分布式思想下的RPC解决方案
  3. Dubbo应用及源码解读
  4. SpringBoot
  5. SpringCloud应用及源码解读
  6. Docker虚拟化技术
文末领取清晰图片

微服务架构,主要是中间层分解,将系统拆分成很多小应用(微服务),微服务可以部署在不同的服务器上,也可以部署在相同的服务器不同的容器上。当应用的故障不会影响到其他应用,单应用的负载也不会影响到其他应用,其代表框架有Spring cloud、Dubbo等。其架构图如下所示:

image image

四、Serverless架构

当我们还在容器的浪潮中前行时,已经有一些革命先驱悄然布局另外一个云计算战场:Serverless架构。

Serverless架构

2014年11月14日,亚马逊AWS发布了新产品Lambda。当时Lambda被描述为:一种计算服务,根据时间运行用户的代码,无需关心底层的计算资源。从某种意义上来说,Lambda姗姗来迟,它像云计算的PaaS理念:客户只管业务,无需担心存储和计算资源。

image

在此前不久,2014年10月22日,谷歌收购了实时后端数据库创业公司Firebase。Firebase声称开发者只需引用一个API库文件就可以使用标准REST API的各种接口对数据进行读写操作,只需编写HTML+CSS+JavaScrip前端代码,不需要服务器端代码(如需整合,也极其简单)。

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

对于Serverless架构,我没有全部展示出来,那如果有感兴趣了解的老友们呢...可以加入我私人群一起讨论学习!

点击链接加入群聊【架构华山论剑:836442475】:https://jq.qq.com/?_wv=1027&k=5MIzBWe

喜欢我的分布式、微服务系统图的也能分享给大家哦~我对架构体系做了一系列的系统图,很开心能分享给大家,可以啦!

image
上一篇下一篇

猜你喜欢

热点阅读