传统的 SOA 概念其实是个比较粗放、面向功能接口地说法,更多地强调的是大型服务系统中间关系,包括服务发现协议、服务权限控制等等,跨企业通讯的意思浓厚。但是微服务更像是 Object+Task 任务控制一样,往往强调的组织内部并发高性能的对象是高效率高并发和简单化地部署在一起的,实际上更强调地是那种依赖于传统的高速缓存机制优化的系统的分布式计算。由于性能高了成百上千倍,所以一个网络上可能存在相同功能的几十万个微服务并且自动路由,而不是传统的简单 SOA 设计者以为的那几个功能服务,而是几十万几百万的对立对象的服务。
比如说针对某档案馆系统,传统的 SOA 可能是指粗放地简单的 api 接口,而微服务是指这个档案馆的几百万档案每一个都可以独立看成是一个服务——假设一个档案服务没有创建那么微服务系统就会瞬间创建一个新的微服务实例。
SOA 的概念可以看成是初学者脑子中的那种“面向过程”的东西,过程访问数据时是通过什么“调用数据库驱动增删改查”来操作的。而微服务可以看成是电信级系统的“面向对象”的东西(类似过去的 Remoting 概念),过程访问数据是通过访问它本地缓存数据、或者访问其它微服务来编程而不是什么数据库增删改查。
当然当你集成多种简单系统时,完全可以把微服务技术与传统 SOA 应用结合起来。他们不是对立的,而是从 SOA 逐步演化到微服务架构的。