zoukankan      html  css  js  c++  java
  • 软件架构的演变

    1.单体架构

    特点

    所有的功能集成在一个项目工程中
    所有的功能打在一个war包部署到服务器
    通过部署应用集群和数据库群来提高系统性能

    优点

    1. 项目架构简单,前期开发成本低,周期短,小型项目首选
    2. 开发效率高,模块之间交互采用本地方法调用
    3. 容易部署,运维成本小,直接打包为一个完整的包,拷贝到web容器的某个目录下即可运行
    4. 容易测试:IDE都是为开发单个应用设计的,容易测试--在本地就可以启动完整的系统

    缺点

    1. 全部功能集成在一个工程中,对于大型项目不易开发,扩展及维护
    2. 版本迭代速度逐渐变慢,修改一个地方就要将整个应用全部编译、部署、启动、开发及测试周期长
    3. 无法按需伸缩,通过集群的方式来实现水平扩展,无法针对某业务按需伸缩

    2.分布式架构

    • 将一个单体系统按业务垂直拆分成若干子系统

    特点

    按业务垂直拆分成一个一个的单体系统,此架构也被成为垂直架构

    系统与系统之间存在数据冗余,耦合性较大

    系统之间的接口多为实现数据同步

    优点

    1. 通过垂直拆分,每个子系统变成小型系统,功能简单,前期开发成本低,周期短
    2. 每个子系统可按需伸缩
    3. 每个子系统可采用不同的技术

    缺点

    1. 子系统之间存在数据冗余,功能冗余,耦合性高
    2. 按需伸缩力度不够,对同一个子系统中的不同的业务无法实现

    3.SOA架构

    • SOA是一种面向服务的架构,基于分布式架构,将不同业务功能按照服务进行拆分,并通过这些服务之间定义良好的接口和协议联系起来

    特点

    将重复公用的功能抽取为组件,以服务的方式向各个系统提供服务
    各个系统与服务之间采用webservice、rpc等方式进行通信
    ESB企业服务总线作为系统与服务之间的通信桥梁

    优点

    1. 将重复的功能抽取为服务,提高开发效率,提高系统的可重用性,可维护性
    2. 可以针对不同服务的特点按需伸缩
    3. 采用ESB减少系统中的接口耦合

    缺点

    1. 系统与服务界限模糊,会导致抽取的服务粒度过大,系统与服务之间的耦合性高
    2. 虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护

    4.微服务架构

    • 基于SOA的思想,为了满足当前移动互联网对大型项目及多客户端的需求,对服务层进行细粒度的拆分,所拆分的每个服务只完成某个特定的业务功能,服务粒度很小,所以称为微服务架构

    特点

    服务层按业务拆分成一个一个的微服务
    微服务的职责单一
    微服务之间采用RESTful,RPC等轻量级传输协议
    有利于采用前后端分离架构

    优点

    1. 服务拆分粒度更细,有利于资源重复利用,提高开发效率
    2. 可以更加精确的制定每个服务的优化方案,按需伸缩
    3. 适用于互联网时代,产品迭代周期短

    缺点

    1. 开发的复杂性增加,因为一个业务流程需要多个微服务通过网络加护来完成
    2. 微服务过多,服务治理成本高,不利于系统维护
  • 相关阅读:
    Python 基础 (三)
    Python 基础(二)
    软件工程第四周作业
    软件工程第四周作业
    软件工程第四次作业
    软件工程第四周作业
    软件工程第三次作业
    软件工程第三周作业
    软件工程第三次作业
    Python学习之路5
  • 原文地址:https://www.cnblogs.com/fqliu/p/14016500.html
Copyright © 2011-2022 走看看