微服务体系结构和SOA之间的区别

我一直在阅读微服务架构,并试图看到它与常规SOA之间的区别(除了所有部署的服务之外)。 任何人都可以告诉我差异,也许是微服务体系结构的专业和兼职?


我想你可以把微服务架构风格看作是SOA的专业化。 不要忘记,一个被接受的观点是,所有的SOA真的是四个句子:

  • 边界是明确的
  • 服务是自治的
  • 服务共享模式和合同,而不是课程
  • 服务兼容性基于策略

    --Don Box,微软(前.Net 3.0)

  • 这将我们带入Lewis / Fowler的微服务的标准定义:

    简而言之,微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种小型服务都运行在自己的进程中,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。

    从这个定义可以明显看出,微服务至少实现了前两条原则(真正强调第二条原则),但是它们是否完成了第三条(我并不真正理解tenet 4,所以我不会评论)是值得怀疑的。

    第三条原则可能不适用于微服务的原因是,微服务的特征之一是它们通常暴露在RESTful API之上,可以说,它可以根本不暴露契约和模式(超出常规HTTP正如我们从福勒看到的那样:

    一套小型服务,每个小型服务都与轻量级机制(通常是HTTP资源API)进行通信

    微服务风格偏离SOA的另一种方式是采用以下处方:

    这些服务...可以通过全自动部署机器独立部署

    遵循SOA的原则并不妨碍我将我的服务二进制文件手动复制到我的生产环境中,但通过微服务方法,服务部署和管理应该完全自动化。


    SOA和微服务的核心区别在于规模和范围。 正如“微”这个词所暗示的那样,它必须比SOA倾向于要小得多。 微服务是一个小的(呃)可独立部署的单元。 谨防非常小的微服务反模式 - 纳米服务。 SOA可以是一个庞然大物,也可以由多个微服务组成。 Martin Fowler说他喜欢将SOA视为微服务的超集。

    在这里输入图像描述

    马丁福勒:https://youtu.be/2yko4TbC8cI?t = 15m53s

    编辑:这是Martin Fowler的另一个视频,谈论微服务和SOA之间的差异。 https://youtu.be/wgdBVIX9ifA?t=13m10s

    微服务这个术语强调服务的规模,大多数从业者发现这一点相当不幸。 斯蒂芬蒂尔科夫认为,你应该从整体应用开始,并确定如何明智地分割它。 Sam Newman的演讲强调,你应该基于有界上下文的DDD概念推导出你的微服务

    您可能会觉得这很有趣:“建立微服务”一书的摘要


    直接从甲骨文的文章中,了解SOA和微服务之间的差异,可以在Torsten Winterberg(Oracle ACE总监)的话中总结出差异的简要描述:

    微服务是我们在过去十年中一直在讨论的那种SOA。 微服务必须是可独立部署的,而SOA服务通常在部署整体中实现。 经典的SOA更多的是平台驱动,所以微服务在所有方面都提供了更多的选择。

    所以,SOA是应用程序组件向其他组件提供服务的体系结构模式。 但是,在SOA中,这些组件可以属于同一个应用程序 。 另一方面,在微服务中,这些组件是可独立部署的服务套件

    微服务是由DevOps实践驱动的SOA架构专业化。 可单独部署的服务使应用持续集成/持续部署变得更加容易

    链接地址: http://www.djcxy.com/p/34081.html

    上一篇: Difference between Microservices Architecture and SOA

    下一篇: Microservices and SOA using messaging