gpt4 book ai didi

java - Dropwizard:处理多个 dropwizard 实例

转载 作者:行者123 更新时间:2023-11-30 03:54:15 27 4
gpt4 key购买 nike

当我使用 Dropwizard 开发微服务时,我试图在 Dropwizard 的一个正在运行的实例/应用程序上拥有许多资源与在许多实例上拥有许多资源之间找到平衡。

例如 - 我有一个项目 A,有 3 个资源。在另一个项目 B 中,我想使用项目 A 中的资源之一。共同的资源与用户数据相关。现在我有这样的选择:

  • 从项目 B 中对项目 A 中的用户资源进行 http 调用。我可以在这里使用 dropwizard 的客户端方法
  • 由于用户资源很常见 - 我可以将其从项目 A 中取出来表示项目 C。我需要在项目 A 和项目 B 中创建客户端代码
  • 我可以提取包含用户代码的 jar 并在项目 B 中使用。这将避免进行 http 调用。

我想听取专家意见的另一点是如何平衡/最小化与不同微服务实例之间的通信相关的网络调用。一般来说,应该使用 http 在不同实例之间进行通信吗?或者可以使用任何其他进程间通信方法来提高性能本身[特别是如果不同的实例位于同一系统上]?

我觉得这对于微服务领域的新手来说可能是常见的问题/困惑。因此想知道任何一般准则或最佳实践。

非常感谢

普拉迪普

最佳答案

make http call to user resource in project-A from project-B. I can use client approach of dropwizard here

如果我是你,我就不会选择这个选项。它会不必要地减慢您的服务速度,造成潜在的日志记录问题,并且感觉不对。唯一可能有意义的时候是代码超出您的控制范围(但即使如此,也可能有更好的解决方案)。

as user resource is common - I can take it out from project-A to say project-C. And the I need to create client code in both project-A and project-B

i can extract jar containing user code and use in project-B. this will avoid making http calls.

听起来项目 A 和项目 B 在逻辑上是不同的单元,具有一些共同的依赖关系。考虑多模块项目(或者如果您使用 Maven,则考虑多模块 Maven 项目)可能是有意义的。您可以拥有一个包含由单独的项目模块引用的任何通用代码(和资源)的模块。这就是 Maven 真正擅长的地方,因为它可以为您管理所有这些依赖项。它就像您列出的最后两个选项的组合。

关于java - Dropwizard:处理多个 dropwizard 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com