【问题标题】:Difference between a Module & Microservice模块和微服务之间的区别
【发布时间】:2018-11-28 08:43:18
【问题描述】:

This abstract 给出了微服务和 API 之间的区别:

微服务通过 API。 API 是微服务响应的所有端点的列表 当它收到命令/查询时。微服务包含 API 以及它用来响应客户的其他内部+隐藏的东西 请求。

我使用过 Java 中的模块和微服务,但有没有更好的方法来区分模块和微服务之间的区别?

根据我的经验,我们将几个模块作为微服务项目的一部分导入。微服务是某种具有公开 RESTful 端点的附加功能的模块吗?模块与微服务或反之亦然的区别是什么?

我们是否可以就相关主题进行更多讨论以澄清潜在的混淆?

为了更加清晰,我添加了一些视觉辅助:

如果可以请反驳,并提供与您在微服务和模块方面的经验相关的可靠参考。

【问题讨论】:

  • 在我看来,微服务至少应该被假定为远程服务。
  • 微服务必须充当可运行的独立服务,模块不一定。它可能只是相关类的集合。
  • 微服务和模块的定义太多了,很难说哪个是正确的,这甚至可能引发激烈的讨论。然而, 认为微服务与模块/库的两个区别是 REST 接口的存在以及独立运行的能力(不一定有用但可能) - 所以任何可以在其上运行的东西拥有(或在容器中)并公开 REST api 可以被视为微服务。
  • @Thomas REST 是不必要的具体化。微服务提供一个 API。通常它是 RESTful,但这不是必需的。
  • @Michael 是的,没错,但是我(也就是我自己)会说提供的 API 必须允许用户使用不同的技术编写,而不需要特殊的包装器,即一些基于文本的格式,例如 REST。

标签: java module architecture microservices


【解决方案1】:

微服务提供 API(REST 或 No Rest)。

微服务代码可以编写成一些更大的项目可以将其用作模块的方式。

当我们选择它作为微服务而不是模块时:

  1. 我们将它与使用它的系统解耦
  2. 此微服务可以独立扩展,即使用特定数据库实现其目的
  3. 使用任何开发语言(最适合其用途) - 如果将其用作模块,则必须使用大多数代码库和模块所用的语言编写
  4. 照顾其数据补丁

【讨论】:

    【解决方案2】:

    模块和微服务的区别在于封装。模块是编程级别的构造,它打包和封装一个软件,以便通过部署中的包含(设计用于进程内执行)被其他软件重用。微服务是一种软件的部署,供其他软件使用,由有线协议分隔。

    【讨论】:

      【解决方案3】:

      模块和微服务是软件行业使用的完全不同的术语。我可以用电子商务行业的例子来解释。

      结账是一个模块,它具有购物车、订单审核、添加到购物袋等功能。这是更通用的术语。

      微服务更具技术性,它们是相互独立的服务。 例如,我们可以创建“添加到包”作为微服务。这只会将一个项目添加到购物袋中。只需要添加袋子 ID 和产品(最重要的是)。此服务不会知道其他功能,如送货方式、付款方式等。

      【讨论】:

        猜你喜欢
        • 2018-09-01
        • 2018-01-21
        • 1970-01-01
        • 2012-12-11
        • 2019-03-21
        • 2018-01-27
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多