美文网首页微服务(microservices)
[翻译] 设计模式-微服务架构与面向服务架构(SOA)的不同

[翻译] 设计模式-微服务架构与面向服务架构(SOA)的不同

作者: 刘如斯 | 来源:发表于2016-12-15 14:01 被阅读51次

    原文链接

    问题

    我研究过微服务架构,尝试找出它与SOA(服务分离并独立部署)的不同。谁能告诉我它们的区别,还有微服务的优劣?

    回答(投票第一)

    我想你可以把微服务的架构风格看成SOA的一种特例。一个普遍被接受的观点(维基百科 面向服务)是,所有的SOA满足四点:

    • 界限明确
    • 服务独立自主
    • 服务间共享schema和协议,而不是共享类
    • 服务的兼容性是基于策略
      - Don Box, Microsoft (pre-.Net 3.0)

    Lewis/Fowler带来了规范的定义(microservices):

    简单来说,微服务的架构风格是把单一应用的开发,换成一系列小型的服务的方法,每个小服务运行在自己的进程上,它们之间通过轻量的机制进行通信,通常是HTTP API。这些服务围绕业务能力构建,可通过完全自动化的部署机制来独立部署。这些服务需要一个最低限度的集中管理,它可以用不用的编程语言和不同的数据存储技术。

    从这个定义明显看出,微服务至少满足前两点(尤其是第二点),值得讨论的是第三点是否满足(我不理解第四点所以不对它做评论)。

    微服务中的一个特点:他们一般暴露一个RESTful的API而不是暴露协议和schema(超过了正常HTTP的长度),所以微服务可能不满足第三点,Fowler在上面也提到了:

    换成一系列小型的服务的方法,......它们之间通过轻量的机制进行通信,通常是HTTP API。

    从下面这句话可以看出另一个微服务风格不同于SOA的方面:

    这些服务围绕业务能力构建,可通过完全自动化的部署机制来独立部署。

    根据SOA本来的原则,我可以手动拷贝服务的二进制包到生产环境,但是在微服务里,服务的部署和管理都是全自动化的。

    相关文章

      网友评论

        本文标题:[翻译] 设计模式-微服务架构与面向服务架构(SOA)的不同

        本文链接:https://www.haomeiwen.com/subject/dbveettx.html