一是确实,SOA和微服务是一脉相承的,大神玛拉丁福尔提出的这个概念可以说是SOA理念不断升华、进一步精益求精。 其核心思想是在APP应用开发领域,使用一系列微小服务实现单一APP应用的方式途径。 或者,微服务的目的是有效地分割APP应用程序,实现敏捷的开发和部署,也可以用不同的编程语言进行书写。 SOA可能含义更广,更不准确。
第二,从实现方式上讲,两者都是中立的,与语言无关,协议是跨平台的,微服务框架比SOA提供更大的敏捷性,为构建APP应用提供更轻、更高效的开发SOA适用于大型企业中的业务流程组织、APP应用程序集成。 另外,虽然微服务有时会去ESB、中心化、分散化,但SOA还是以ESB为核心,实现了大量的WS标准。
第三,在服务粒度方面,既然是微,必然微服务是提倡服务细粒度、重用组合、甚至每个操作(或方法)独立开发的服务,小得不能再分割。 SOA没有这种终极要求,只需要规范接口合同,内部实现可以粒度更粗,微服务往往为了可扩展性、负载均衡和吞吐量提高而分解应用,但同时也引起了数据模型破坏和一致性维护的问题
四、从引进方式来看,这是最大的区别。 与Monolithic (有人翻译为单体) Java EE部署体系结构相比,通过在展示层打包WARs,业务层被分成JARs,最后作为一个大包引入EAR,而微服务打开了这个黑匣子一种全堆叠APP应用程式,可利用Docker技术,以独立于任何伺服器的自动化方式独立部署,每项服务都以自己的程序执行,并以轻量级的通讯机制连线。 通常基于HTTP资源API。 这些服务基于业务能力而构建,可以集中管理(服务过多、不集中管理就无法进行DevOps等)。