软件架构研究现状

软件架构的发展经历了单体架构、分布式架构、SOA架构、微服务架构四个阶段。

1.3.1 单体架构

Web应用程序发展的早期,大部分web工程师将所有的功能集成在一个项目工程中,所有功能打在一个war包中部署到服务器,通过部署应用集群和数据库集群来提高系统的性能。这种模式下,项目架构简单,前期开发成本低、周期短,开发效率高,模块之间交互采用本地方法调用、容易部署、容易测试。但缺点也很明显:全部功能集成在一个工程中,大于大型项目不易开发、扩展和维护。版本迭代速度逐渐变慢,修改一个地方就要将整个应用全部编译、部署、启动,开发及测试周期过长。可扩展性差,通过集群的方式来实现水平扩展,无法针对某业务按需伸缩。

1.3.2 分布式架构

针对单体架构的不足,未来适应大型项目的开发需求,许多公司将一个单体系统按业务垂直差分为若干系统,系统之间通过网络交互来完成用户的业务处理,每个系统可分布式部署,这种架构成为分布式架构。分布式架构为系统提供了负载均衡能力,降低了各模块之间的代码耦合度,提升了系统的灵活性。缺点是子系统之间存在数据冗余、功能冗余,耦合性高。按需伸缩粒度不够,对同一个子系统中的不同的业务无法实现。

1.3.3 SOA架构

SOA是一种面向服务的架构,基于分布式架构,它将不同业务功能按服务进行拆分并通过这些服务之间定义良好的接口和协议联系起来。优点是将重复的功能抽取为服务,提供开发效率,提高系提供的可重用性、可维护性。可以针对不同服务的特点按需伸缩。缺点是系统与服务的界限模糊,导致抽取的服务粒度过大,系统与服务之间耦合性高。虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。

1.3.4微服务架构

基于SOA架构的思想,为了满足移动互联网对大型项目及多客户端的需求,对服务层进行细粒度的拆分,所拆分的 每个服务只完成某个特定的业务功能,比如订单服务只实现订单相关的业务,用户服务实现用户管理相关的业务等等,服务的粒度很小,所以称为微服务架构。优点是服务拆分粒度更细,有利于资源重复利用,提高开发效率。可以更加精准的制定每个服务的优化方案,按需伸缩。适用于互联网时代,产品迭代周期更短。但缺点也很明显开发的复杂性增加,因为一个业务流程需要多个微服务通过网络交互来完成。微服务过多,服务治理成本高,不利于系统维护。所以不适合小项目的架构。

2014 年,由 Martin Fowler 与 James Lewis 共同提出微服务概念。微服务架构可以视为 SOA 的一种实现较早使用微服务的 Netflix 认为微服务是细粒度的 SOA。微服务架构如图 1-1 所示,微服务与 SOA 对比如表 1-2 所示。微服务对应用进行更细粒度拆分,各个服务之间通过 RESTful API 或 RPC(Remote Procedure Call)通信。

2016 年,Pivotal 团队发布 Spring Cloud服务治理框架,该框架基于 Spring Boot[5]快速构建。Spring Boot 在 Spring 框架的基础上进行改良,遵循约定优于配置的原则简化 Spring 繁琐的配置。Spring 最大的贡献在于面向切面编程(AOP,Aspect Oriented Programming)和控制反转(IoC,Inversion of Control),目前,Spring 在后端开发中仍处于主导地址。Spring Cloud 包含了 Spring Boot 的优良特性,构建了包含服务发现与注册、服务熔断、负载均衡、网关路由及链路追踪等组件的整套解决方案。Spring Cloud 第一代基于 Spring Cloud Netflix,由于 Spring Cloud Netflix 进入维护状态,第二代基于阿里巴巴团队开源的 Spring Cloud Alibaba,目前,Spring Cloud Alibaba 已经成功孵化。Spring Cloud Alibaba 将阿里团队优秀的开源组件进行整合,包含 Nacos、Sentinel、RocketMQ 及 Spring Cloud Gateway 等组件,目前已经得到广泛的应用。

软件架构的发展及研究现状相关推荐

  1. PMSM的发展及研究现状

    PMSM的发展 历史上第一台电机就是永磁电机,它是由巴洛(Barlow)在1831年发明,距今已有180多年的历史,当时,永磁材料性能比较差,永磁体矫顽力和剩磁都太低,永磁电机很快被电励磁电机所取代. ...

  2. 伺服系统的发展及研究现状

    1.伺服系统的发展 "伺服(servo)"这个词语源于希腊语,含有"奴隶"的意思."伺服机构"是按照控制信号的要求而动作控制信号到来之前,被 ...

  3. 北邮石川教授:「异质信息网络」研究现状及未来发展

    本文转载自:https://www.leiphone.com/news/201801/MpY4WF11OTnFLp7y.html 图片均来源于转载地址 异质信息网络研究现状及未来发展 一.引言 现实生 ...

  4. 目前超级计算机国内外发展状况,浅谈超级计算机发展的过程及研究现状

    浅谈超级计算机发展的过程及研究现状 来源:用户上传 作者: 中图分类号:TP393.01 文献标识码:A 当前,多核技术的不断发展和日渐成熟,使得处理器的性能得到巨大提升.但是对于存储设备来说,无论是 ...

  5. 医学知识推理研究现状与发展

    摘要 知识图谱可以有效地组织和表示知识,被应用于很多高级应用中,比如智能医疗.然而,无论是人工还是自动化构建的医学知识图谱通常是不完整的,这严重限制了它们的使用性能.医学知识推理可以补全医学知识图谱, ...

  6. Web数据挖掘的研究现状及发展

    1.Web挖掘概述 随着以数据库.数据仓库等数据仓储技术为基础的信息系统在各行各业的应用,使海量数据不断产生.随之而来的问题是如此多的数据让人难以消化,无法从表面上看出他们所蕴涵的有用信息,更不用说有 ...

  7. 多无人机集群编队国内外研究现状和发展方向

    `多无人机集群编队国内外研究现状和发展方向 - 搜狐网 https://m.sohu.com/a/403671784_99986805?trans=010004_pcwzy –编队控制技术最早是针对空 ...

  8. RNA测序研究现状与发展

    RNA测序研究现状与发展 1 2,584 A+ 所属分类:Transcriptomics 收  藏 通常来说,某一个物种体内所有细胞里含有的DNA都应该是一模一样的,只是因为每一种细胞里所表达的RNA ...

  9. python国内外研究现状-对当今Python 快速发展的研究与展望

    对当今Python 快速发展的研究与展望 摘要:本文通过分析Python语言的发展历史.设计哲学.应用领域和优缺点,分析了Pytho近年来快速发展的原因. 一.Python 简史 Python 是由G ...

最新文章

  1. 10000+ gif表情包不是梦,get这一篇文就够了!!!小哥哥快到碗里来,再也不怕斗图没有表情包了
  2. 学习deercao的正则笔记
  3. python3 console input_Python3 tkinter基础 Button command 单击按钮 在console中打印文本
  4. 深度剖析WinPcap之(九)——数据包的发送过程(8)
  5. 还在被Excel报表折磨?学会这个进阶工具,报表开发不是事儿
  6. python标准库之urllib, httplib, urllib2
  7. 【FLink】cannot assign instance LinkedMap FlinkKafkaConsumerBase.pendingOffsetsToCommit
  8. 堆和栈的概念和区别 python_堆的意思
  9. python pyecharts 折线图_Python数据可视化之pyecharts实现各种图表
  10. My97DatePicker 演示和文档
  11. [Android]应用语言切换的三种方法
  12. 如何下载谷歌地球高程为TIF格式的文件
  13. wsimport指令
  14. 延迟队列DelayQueue研究
  15. Win7中自带截图工具
  16. 被讨厌的勇气:共同体感觉
  17. 《龙腾世纪2》图文流程攻略
  18. 算法工程师13——机器学习强化
  19. ChatGPT在教育行业如何应用?
  20. PhotoShop中的自由变换UI实现

热门文章

  1. uni-app数据循环
  2. 【论文学习】YOLO v1
  3. 夺命雷公狗---linux NO:10 linux的文件与目录的基本操作
  4. 计算机考试准考证是正反面打印吗
  5. Android对接科大讯飞AIUI语音转文字装置(魔飞)串口开发
  6. java_找出大于200的最小质数
  7. 台式计算机都配有服务器吗,服务器、工作站与普通电脑有什么区别?
  8. OpenGL ES着色语言-光照效果之散射光
  9. 一般数据库服务器物理机配置,ironic部署物理机
  10. Easyx-----c++实现虚拟空调,清凉一夏