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