Microservices 微服务应该是可重用的吗?

Microservices 微服务应该是可重用的吗?,microservices,reusability,decoupling,Microservices,Reusability,Decoupling,显微镜应该重复使用吗? 对于可重用,我不是说共享特定于领域的模型 我的意思是,为一个应用程序创建的微服务是否应该在另一个应用程序中重用? 如果它们在应用程序中是可重用的,这就足够了吗 分离微服务的最佳方式是什么。 从我的观点来看,一旦一个微服务调用另一个微服务,它就紧密耦合,这意味着它不容易(不经过修改)被提取并放入另一个微服务应用程序中,而该应用程序不具有它引用/来自的相同服务 在我看来,要将它们解耦,有以下几种方法: 微服务A需要与另一个微服务B对话 标准合同,如特殊协议 另一个微服务C充当

显微镜应该重复使用吗? 对于可重用,我不是说共享特定于领域的模型

我的意思是,为一个应用程序创建的微服务是否应该在另一个应用程序中重用? 如果它们在应用程序中是可重用的,这就足够了吗

分离微服务的最佳方式是什么。 从我的观点来看,一旦一个微服务调用另一个微服务,它就紧密耦合,这意味着它不容易(不经过修改)被提取并放入另一个微服务应用程序中,而该应用程序不具有它引用/来自的相同服务

在我看来,要将它们解耦,有以下几种方法:

  • 微服务A需要与另一个微服务B对话
    标准合同,如特殊协议
  • 另一个微服务C充当网关,向微服务B请求数据,并将其作为输入传递给微服务a
  • 第2条的具体示例如下:

    耦合:

    客户端->API网关->UserProfileService->授权服务

    解耦:

    客户端->API网关->授权服务->API网关->UserProfileService

    我是否正确地假设这一切都归结为微服务的目标?没有对错吗


    有没有其他策略是我没有考虑到的,可以让微服务脱钩?

    我想你可能得到的回答将更多地代表观点而不是答案,但我会继续给出我的答案

    关于微服务的文献早就说过,“去耦合,去耦合,去耦合”,但坦率地说,我并不认为这是事实。当有人创建了一个有用的API来增强您自己的功能(身份验证、支付和数据库)时,建议这些功能与您的功能一起运行是错误的吗?大多数人不会通过复杂的、充满逻辑的网关来通过Stripe付款或通过Twilio发送短信,那么为什么私人托管的API会有所不同呢

    将您自己的服务设计成可重用、易于消费/可部署的组件是非常好的。这并不意味着它不能有依赖关系,而是我们应该注意这些依赖关系带来的膨胀。无论是应用程序包还是依赖服务/API,开发人员在引入依赖项时都应该练习这种专注


    **披露:我构建并运行了一个框架/平台,以帮助云本地团队协作并构建彼此的服务。我亲眼目睹了像Facebook这样的公司如何使用类似的策略来实现服务重用和消费,并希望为公众构建一个微服务依赖解析程序。

    这完全取决于您构建的微服务。例如:;假设您正在构建电子邮件通知服务。可以被不同的应用程序重用。另一个例子是,您正在构建一个推荐系统。对于单个应用程序来说,它非常具体。以一种可以在不同应用程序中重用的方式来设计它几乎没有意义

    根据上下文选择。没有正确的方法。这完全取决于应用程序