虽然是一枚计科出身,也写了快两年代码的宝宝,然鹅对于很多专业术语还是似懂非懂。 依稀记得第一次接触 SOA 这个概念是在刚进入目前的项目组,老大给了我一份培训提供,包含了
虽然是一枚计科出身,也写了快两年代码的宝宝,然鹅对于很多专业术语还是似懂非懂。
依稀记得第一次接触 SOA 这个概念是在刚进入目前的项目组,老大给了我一份培训提供,包含了不同的阶段需要了解及掌握的技术,当中就包含了 SOA,当时老大还简单的介绍了一下,but 90后早早就被打上了“记性不好”的标签,这个 tag 可不是空穴来风。没有实际应用我早就忘记了。
这次重新捡起来这个概念是因为我们要开始新的项目了,需要参与搭建工程的过程(天知道我写了一年多的底层代码,还没搭过工程呢)
查阅了大量的资料之后,我的结论是:SOA 就是将众多的微服务集中起来,外部需要什么服务,直接对接 SOA 即可。这个过程类似于你去麦当劳,可能是渴了需要一杯咖啡,或者是饿了需要一份汉堡套餐,但是并不需要自己动手去做咖啡/汉堡套餐,只需要作为消费者向收银台台服务人员提出你的需求,等待你的需求被实现即可(当然,前提是你的需求是麦当劳能提供的)。这个收银台在 SOA 里有更专业的术语:数据总线。外部服务只与数据总线进行交互,当然,交互的标准是统一规约好的。这里还需要注意的是,从数据总线中获取的服务都是需要先注册的,注册过程也有统一的标准。大约过程如下图:
(纠结了下是放专业的流程图还是手画版,默默选择秀一下我的小兔子~~)
其中统一请求标准是:各服务的协议、地址、交互方式。
现在的系统为了追求功能全面,越来越庞大,为了便于开发和管理,将功能模块独立化是一种流行趋势,这也是近些年越来越强调“微服务”的原因。目前市场上,用于管理微服务比较广泛的有阿里的dubbo、zookeeper,他们都用到了数据总线,而数据总线是 SOA 的核心,所以我们可以认为用到了 dubbo、zk 的项目即为用到了 SOA.
扩展阅读
- 深入浅出 SOA