搞运维的经常会碰到一个概念,SOA。
第一次遇到大家肯定一脸蒙逼,但是上google搜一下感觉还是不太理解。
SOA,是Service Oriented Architecture的缩写,翻译成中文叫做“面向服务架构”,所谓服务,可以理解为一个一个的小功能组件。SOA就是把整个架构切分为众多小功能组件,然后想办法把这些小功能组件完美地结合起来。
在知乎,大家可以看到几个形象的比喻。
比如,那个养猪的例子就比较容易理解。养猪是一个大目标,可以认为是一个大的架构。而不同的猪需要不同的养育方法,猪A需要喂泔水,猪B需要喂青草,猪C需要运动……
不同的猪型需要不同的养育方法,每一种方法就是SOA架构里面的小功能组件。每个组件之间相互不影响,流程独立。
我这里也给大家举一个例子。
比如生产一辆汽车。生产一辆汽车,需要做很多复杂的工作:设计、生产发动机、生产车架、生产底盘、生产各种配件、组装等等。
当然还有更多其它繁杂的步骤,我不再一一列举。汽车生产商把上面这些工作都独立出来,成为一个部门或者车间,相互之间不搀和。如果缺少任何一个独立单元,都不能生产一辆完整的汽车。当然,生产不同的车型,每个独立部门是可以复用的。另外,所有部门还要有一个中心领导者来统领、协调。
总之SOA,是一种架构,是一种思想。核心是面向服务,而服务可以理解为一个一个地功能实现单元。
服务可以复用,可以组合。另外SOA还有一个核心的组件叫做ESB,它是负责连接各个组件的中心总线,也是SOA架构的中心。