一、架构演变过程

从传统架构→分布式架构→SOA架构→微服务架构


二、传统架构(单点应用\单体架构)

所谓的传统架构就是所有功能,都放在一个应用里。

比如传统的SSM和SSH, 都属于单点应用,把整个开发业务模块都会在一个项目中开发,分为mvc模式的三层架构web控制层、业务逻辑层、数据库访问层。

优点:

  1. 便于开发,测试,部署,可直接打成一个jar或者war,就可以使用了。

  2. 适合于个人或者是小团队开发

缺点:

  1. 如果提供数据部分出现了问题,比如有的开发人员改错了,抛出了异常,会导致整个项目不能使用,展示数据部分也因此受到影响。

  2. 如果要修改数据部分的代码,那么必须把整个项目重新编译打包部署。重新部署是暂时不能使用的,要部署完了,才能使用。

  3. 所以传统架构耦合度太高,一旦有一个小问题,就可能会影响整个项目。

  4. 性能瓶颈难以突破, 最主要体现在高访问,高并发的上限是固定的。(比如一个单体架构,能够承受 1000次访问/秒。 但是访问量达到 2000次/秒的时候,就会非常卡顿,严重影响业务,并且仅仅依靠单体架构本身,很难突破这个瓶颈了)


三、分布式架构

分布式架构基于传统架构演变过来,将传统的单体项目以项目模块进行拆分,如将电商项目拆分为会员项目、订单项目、支付项目、优惠券项目等,从而降低耦合度,这种项目架构模式慢慢开始适合于互联网公司规模人数开发。

优点:

  1. 耦合度降低

  2. 可以搭建集群,高可用

  3. 系统扩展性更高

分布式架构与传统架构的区别

分布式架构比传统架构区别:项目粒度分的更加细、慢慢开始是适合于互联网公司开发,耦合度降低。

传统单体架构 分布式服务化架构
新功能开发 需要时间 容易开发和实现
部署 不经常且容易部署 经常发布,部署复杂
隔离性 故障影响范围大 故障影响范围小
架构设计 难度小 难度级数增加
系统性能 响应时间快,吞吐量小 响应时间慢,吞吐量大
系统运维 运维简单 运维复杂
新人上手 学习曲线大(应用逻辑) 学习曲线大(架构逻辑)
技术 技术单一且封闭 技术多样且开放
测试和查错 简单 复杂
系统扩展性 扩展性很差 扩展性很好
系统管理 重点在于开发成本 重点在于服务治理和调度

Maven聚合项目是不是分布式项目?

不一定

例如: 可以将传统的项目,以 maven聚合方式分为3个项目,如web 、service、dao, 最终打程一个war包。

互联网公司一般都以聚合项目进行开发分布式项目

主要区分:

  • 看打的jar或war包数量
  • 分布式是多个JVM相互通讯

所以:
Maven聚合项目不一定是分布式项目
但分布式项目是Maven聚合项目


四、SOA架构

SOA也是基于分布式架构演变过来的,SOA架构代表面向服务架构,俗称服务化,通俗的理解为面向与业务逻辑层开发,将共同的业务逻辑抽取出来形成一个服务,提供给其他服务接口进行调用,服务与服务之间调用使用rpc远程技术。

服务概念:将共同的业务逻辑进行拆分,拆分程独立一个项目进行部署,没有视图层。即理解接口。

互联网网站架构演变

SOA架构特点:

  1. SOA架构中通常使用XML方式实现通讯,在高并发情况下XML比较冗余会带来极大的影响,所以最后微服务架构中采用JSON替代xml方式
  2. SOA架构的底层实现通过WebService和ESB(xml与中间件混合物),Web Service技术是SOA服务化的一种实现方式,WebService底层采用soap协议进行通讯,soap协议就是Http或者是Https通道传输XML数据实现的协议。

缺点:

  1. 依赖与中心化服务发现机制
  2. 因为SOA架构采用SOAP协议(Htt+ML),因为XML传输协议比较占用宽带,整个XML报文中有非常大冗余数据,所以在微服务架构中以 json轻量级方式替代xml报文传输。
  3. 服务管理非常混乱,缺少服务管理和治理设施不完善。

分布式与SOA区别

项目表达意思:包含业务逻辑层和视图层,项目包含:前台项目(提供给用户和后台项目(维护管理)。

服务表达意思:只包含业务逻辑层,没有视图层。

分布式是以项目拆分的

SOA是以服务拆分的

控制层与 fegin客户端区别

  • 控制层控制页面跳转
  • fegin客户端调用接口

五、微服务架构

微服务架构从SOA架构演变过来,比SOA架构上粒度更加进行精细。让专业的人做专业的事情(更加专注),目的是为了提高效率。每个服务与服务之间互不影响,每个服务必须独立部署(独立数据库、独立 redis等),微服务架构更加体现轻量级,采用restful 风格提供api,也就是使用Http协议+JSON格式进行数据传输,更加轻巧,更加适合于互联网公司敏捷开发、快速迭代产品。

微服务架构特征

  1. 应用程序设计程多个独立、可配置、可运行和可微服务的子服务。
  2. 服务与服务通讯协议采用Http协议,使用restful风格API形式来进行通讯,数据交换格式轻量级json格式通讯。

微服务架构如何拆分

  1. 微服务把每一个职责单一功能存放在独立的服务中(如将会员服务再细分下去:基本组件,sso,积分服务)
  2. 每个服务运行在单独的进程中(独立的端口号)
  3. 每个服务有自己独立数据库存储、实际上有自己独立的缓存、数据库、消息队列等资源。(耦合降到最低)

微服务架构与SOA架构区别

  1. 微服务架构基于 SOA架构 演变过来,继承 SOA架构的优点,在微服务架构中去除 SOA 架构中的 ESB 消息总线,采用 http+json(restful)进行传输。
  2. 微服务架构比 SOA 架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。
  3. SOA 架构中可能数据库存储会发生共享,微服务强调独每个服务都是单独数据库,保证每个服务于服务之间互不影响。
  4. 项目体现特征微服务架构比 SOA 架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

开发团队人少使用soa和分布式就可以了
大型团队人多使用微服务更好

相关文章:

  • 2021-10-02
  • 2021-07-10
  • 2021-08-30
  • 2021-07-20
  • 2021-08-21
  • 2021-11-21
猜你喜欢
  • 2021-09-19
  • 2021-12-28
  • 2021-07-02
  • 2021-05-25
  • 2021-04-17
相关资源
相似解决方案