微服务架构 vs SOA架构

1,468 阅读4分钟
   微服务是什么?

    微服务是一种架构设计。在架构中通过将业务逻辑拆分成一系列小而松散耦合的分布式组件来共同构成较大的应用。其中每个组件都被称为一个服务,而每个服务都在整体架构中执行着单独的任务。

    微服务架构使得一个复杂的应用被拆分为一系列简单的微小服务,而这使得后期维护简单,每个小团队负责一个或多个服务,可以快速高效的解决问题。同时微服务在现在的弹性部署非常有优势,某些微服务有瓶颈直接扩容升级而不需要再和以前一样整体优化升级,很好利用弹性云等基础设施。

    SOA是什么?

     服务导向式架构(SOA---service oriented architecture)是集成多个较大组件(一般是应用)的一种机制,它们将整体构成一个彼此协作的套件。一般来说,每个组件会从始至终执行一块完整的业务逻辑,通常包括完成整体大action所需的各种具体任务与功能。组件一般都是松耦合的,当然也可以紧耦合,没有硬性规定。

    SOA其实可以看做早期版本的microservice,不过其粒度比microservice大很多。而粒度过大就会导致一些组件比较复杂,一些较大的组件也可能太过复杂而难以实现自动化,在最坏的情况下甚至完全无法实现。

     购物网站的例子

一个在线购物网站通常会有一些不同的功能,比如商品目录,购物车等等。

    如果采用SOA的架构设计一般会将网站按照大的功能拆分为模块,并将每个部分作为独立应用分别开发,最后集成到一起。比如购物车的所有功能是一个应用,他们需要了解整个购物车的工作机制,以便能够修改。在这个应用中,购物车设计的逻辑包括显示物品、增加或移除购物车商品、查看库存、处理运费、处理金额计算、短信发送,邮件发送等。而这些功能在别的模块是也有的,是完全可以复用的,但是他们是由不同团队开发导致重复实现,后期如果有改动还得都改动来保证一致性。

    如果微服务架构会将购物车切分成较小的服务。不再是购物车应用了,而可能是金额计算服务、添加/移除商品服务、运费服务。这样后期维护简单高效。出现新需求也能很快响应。

    相似却不相同

    微服务与SOA有很多相同之处。两者都是松耦合分布式组件的系统结构。但是架构背后的意图是不同的:SOA尝试将应用集成,一般采用中央管理模式来确保各应用能够交互运作。微服务尝试部署新功能,快速有效地扩展开发团队。它着重于分散管理、代码再利用与自动化执行。

   结论:

      SOA提供的粒度比较粗,microservice提供粒度更细。两种各有优势,粗粒度复杂度低,较简单,比较适合提供企业服务的应用,比如给xx企业提供以下服务,这服务内部实现可能很复杂,但是由于是给企业提供的必须粒度粗,不可能要求企业去调用你各个microservice去组合吧。而microservice适合企业内部服务使用,内部进行解耦 ,团队协作等,方便复用和维护。 在实际的架构设计中SOA和microservice没有必要割裂开,比如在给企业提供服务时就可以采用SOA,但是其内部却可以用microservice,通过microservice的组合来提供类似SOA的架构, 在其中一个服务中把各个服务组合起来提供统一的出口服务,达到屏蔽内部实现,又方便外部企业使用的目的。不管是SOA还是microservice都只是解决方案,具体使用场景要按照实际情况来。没有任何架构是通用的。