Spring Cloud Alibaba 微服务原理与实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.3 SOA

为了让大家更好地理解SOA,我们来看两个场景:

• 假设一个用户执行下单操作,系统的处理逻辑是先去库存子系统检查商品的库存,只有在库存足够的情况下才会提交订单,那么这个检查库存的逻辑是放在订单子系统中还是库存子系统中呢?在整个系统中,一定会存在非常多类似的共享业务的场景,这些业务场景的逻辑肯定会被重复创建,从而产生非常多冗余的业务代码,这些冗余代码的维护成本会随着时间的推移越来越高,能不能够把这些共享业务逻辑抽离出来形成可重用的服务呢?

• 在一个集团公司下有很多子公司,每个子公司都有自己的业务模式和信息沉淀,各个子公司之间不进行交互和共享。这个时候每个子公司虽然能够创造一定的价值,但是由于各个子公司之间信息不是互联互通的,彼此之间形成了信息孤岛,使得价值无法最大化。

基于这些问题,就引入了SOA(Service-Oriented Architecture),也就是面向服务的架构,从语义上说,它和面向过程、面向对象、面向组件的思想是一样的,都是一种软件组建及开发的方式。核心目标是把一些通用的、会被多个上层服务调用的共享业务提取成独立的基础服务,这些被提取出来的共享服务相对来说比较独立,并且可以重用。所以在SOA中,服务是最核心的抽象手段,业务被划分为一些粗粒度的业务服务和业务流程。

如图1-3所示,提取出了用户服务、库存服务、商品服务等多个共享服务。在SOA中,会采用ESB(企业服务总线)来作为系统和服务之间的通信桥梁,ESB本身还提供服务地址的管理、不同系统之间的协议转化和数据格式转化等。调用端不需要关心目标服务的位置,从而使得服务之间的交互是动态的,这样做的好处是实现了服务的调用者和服务的提供者之间的高度解耦。总的来说,SOA主要解决的问题是:

• 信息孤岛。

• 共享业务的重用。

图1-3 SOA