SOA和微服务的区别

先讲一讲架构的演变

1.单体架构(集中式架构)

项目功能比较简单,一个项目就需要一个应用,里面有多个模块,所有功能部署在一起,这样的好处是部署节点的成本比较低。

 

 

 缺点:耦合性太强;开发维护困难、无法水平拓展;容错性低,并发能力差。

 

2.垂直拆分架构

访问量变大了,单一的应用服务无法满足需求,为了应对更高的并发和业务需求,就要根据业务对系统进行拆分。

 

 

 优点:

  • 实现了流量分担,处理并发请求的能力提高。
  • 降低了耦合型,我们再对某个模块进行优化的时候更加方便了。
  • 水平扩展变得方便了。
  • 容错率提高了。

缺点:

  • 会有大量的重复代码,影响开发效率。

 

3.分布式服务

当业务越来越多、越来越复杂时,不只是垂直应用这一条线进行数据调用,可能说,应用之间也会相互调用,可能会为了完成一个业务功能,需要多个小模块之间相互调用。

 

 

 优点:

  • 将服务粒度细化,减少了代码的重复率,提高了代码复用率,提升了开发效率。
  • 系统之间耦合度变高了,调用关系错综复杂,比较难以管理。

 

4.服务治理架构SOA

当服务越来越多,一些小问题比如容量的评估、小服务的资源浪费问题开始显现出来,这个时候就需要一个服务调度中心基于访问压力实时管理集群容量,提高集群利用率。

 以前分布式服务的问题:

  • 服务很多,服务的地址难管理
  • 服务过多,服务的状态难以管理,无法根据服务的情况进行管理

SOA服务治理架构的优点:

  • 提供一个服务注册中心,实现服务的自动注册与发现,无需人为记录服务地址。
  • 服务自动订阅,服务列表自动推送,服务的调用透明化,无需关心依赖关系。
  • 动态的监控服务状态,人为控制服务状态。

SOA服务治理架构的缺点:

  • 依赖关系是无法避免的,一旦某个环节出错影响较大。
  • 服务关系依旧是复杂的,运维、测试、部署困难,不符合开发-运维一站式维护的思想。

 

5.微服务

 

 

微服务的特点:

  • 单一职责:一个微服务只对应一个业务能力,也就是粒度很小。
  • 微:拆分的粒度小,但是该有的机制都有。
  • 面向服务:每个服务都要对外暴露Restful风格的API。但并不关系业务具体是怎么实现的,比如说是用哪种语言写的、在哪个平台开发的。
  • 自治:是说服务之间相互独立,互不干扰,不是自我管理。
    • 团队独立:每个服务都由一个独立的开发团队完成,人数不宜过多。
    • 技术独立:只要实现业务功能,提供restful接口即可,不关心内部的实现逻辑、语言、开发平台。
    • 前后端分离:提供统一的restful风格接口,后端不用再为PC、移动端开发不同的接口。
    • 数据库分离:每个服务都使用自己的数据源。
    • 部署独立:尽管服务间是有调用关系的,但也要做到一个微服务重启不影响其他微服务。有利于持续集成、持续交付。每个服务都是独立的组件,可复用、可替换、易维护。
posted @ 2021-12-08 19:05  sellingpear  阅读(790)  评论(0编辑  收藏  举报