【问题标题】:Sharing code between multiple micro-services [closed]在多个微服务之间共享代码 [关闭]
【发布时间】:2019-07-22 10:43:50
【问题描述】:

我正在开发三个微服务

  1. 查看优惠
  2. 添加优惠(针对管理员)
  3. 选择优惠

查看报价用于向客户显示报价,并添加服务管理员用于将报价链接到客户的报价,如果报价链接到客户,查看报价将返回该报价作为响应。客户使用 Opt 优惠来享受优惠。

在设计时,我意识到所有 3 个服务共享相同的功能,但也有自己的逻辑。

在开发这些 API 时我应该使用共享代码还是每个 API 都必须有自己的代码库?

【问题讨论】:

  • 没有“必须”。不过,您可能希望避免复制代码。
  • 这是一个措辞非常模糊的问题。人们可能会问有哪些最佳实践。你的团队的技术技能是什么。维护成本,安全等。 Stackoverflow 上有很多关于模块化应用程序的内容。
  • 这个问题是高度基于意见的。有些人可能会建议您部署shared-nothing architecture。有些人会建议您将常用功能打包到共享库中。长话短说:由于问题的基于意见的性质,这与 SO 无关。
  • 一般来说,你是分开开始的,一旦你有了更清晰的画面,你就重构。重构的一部分是识别新的对象和函数并将它们提取到单独的包中。然后可以在微服务或任何其他项目中使用这些单独的包。这种监督不太可能从一开始就设计好,并且您不想冒险将依赖关系不正确地捆绑在一起,因为这样您就会陷入困境。确保你提取的包/库/函数是可重用的,并且可以单独用于某些目的。
  • 我认为这对于 SO 来说显然是题外话,但是从你在这里描述的一点点来看,恕我直言,为这三个功能制作三个单独的微服务是过分的 - 这听起来像一个单一的“报价” ' 提供添加、查看和选择功能的微服务会更合适。仔细考虑拆分成微服务的额外复杂性和开销是否值得感知收益。

标签: java spring microservices


【解决方案1】:

如果您使用的是maven,那么您可以使用Maven Modules。这基本上意味着您可以将服务代码提取到单独的模块中,并将该模块作为 pom 依赖项包含在所有 3 个微服务中。

Here's 一个使用Spring 的示例。如果你没有使用Spring,那么你可以看看另一个例子here。

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2016-03-28
    • 2017-09-19
    • 1970-01-01
    • 2017-05-27
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多