当前位置: 首页 > 知识库问答 >
问题:

在一台机器上运行多个QUKUS实例

白弘伟
2023-03-14

我有一个应用程序在各种OSGI捆绑包中分离,这些捆绑包在单个Apache Karaf实例上运行。但是,我想迁移到微服务框架,因为

  • Apache Karaf由于其依赖机制和
  • 我希望以后能够将应用程序带到云端(AWS、GCloud等)

我做了一些研究,查看了各种框架,并得出结论,Quarkus可能是正确的选择,因为它基于容器的方法、性能和可能的云集成机会。

现在,我在某一点上苦苦挣扎,到目前为止我还没有找到解决方案,但也许我在这里也可能有误解:我的计划是将我的应用程序的几乎每个OSGI包迁移到一个单独的微服务中。通过这种方式,我将能够仅横向扩展有必要扩展的服务,并且我还可以单独更新/部署它们,而无需重启整个应用程序。因此,我假设每个服务都需要在单独的Quarkus实例中运行。但是,Quarkus似乎并不支持这种开箱即用?!?相反,我需要为每个Quarkus实例创建一个单独的配置。

这真的是要走的路吗?服务如何发现彼此?有没有一种方法可以让服务 A 不仅可以通过 REST 调用与服务 B 通信,还可以使用服务 B 的类对象和服务 B 的方法,其中包含对服务 A 的服务 B 的依赖关系?

非常感谢您对此的任何想法!

共有1个答案

顾磊
2023-03-14

我认为您在微服务和基于osgi的应用程序之间混合了一些点。使用微服务,您通常有一个独立的进程运行每个微服务,这些服务可以部署在同一台其他机器上。正因为如此,您可以按照您所说的进行扩展并获得收益。但沟通模式不是一个过程对一个过程。它必须使用不同的方法,强烈建议您使用标准集成机制,可以使用REST,可以使用Json html" target="_blank">RPC、SOAP或队列或主题来使用事件驱动通信。通过这种机制,您可以像在osgi中一样调用“其他”服务操作,但您只是使用不同的接口,而不是本地调用,而是远程调用。

服务发现是您可以通过虚拟IP通过通用dns名称和负载均衡器访问其他服务,或者使用kubernetes DNS来完成的事情,如果您选择kubernetes作为平台。您也可以使用中央配置服务,或者让每个服务在中央注册表中注册自己。已经有很多不同的解决方案来解决这种复杂性。

更重要的是,你必须意识到你新的复杂性,但有些你已经知道了。

    < li >合同版本控制和设计 < li >服务之间的同步或异步通信。 < li >如何处理服务边界中的安全性/我的大多数服务是否都需要安全性,或者我只需要有关用户身份的信息。 < li >增加了维护成本和常见功能的冗余侧代码(quarkus通过其扩展对您有很大帮助,并且您还有microprofile兼容性)。 <李>...

决定使用微服务不是一个容易的决定,也不应该一蹴而就。我的建议是,您分析您的应用程序域,并尝试检查您的设计是否可以与微服务一起使用(在容器分离和模型内聚方面),并将osgi平台的一小部分提取到微服务中,否则您将被迫在服务接口中进行更改,由于服务对服务契约的依赖关系,这比更改方法和一些调用更难做到。

 类似资料:
  • 5.12.1. 在Windows下运行多个服务器 5.12.2. 在Unix中运行多个服务器 5.12.3. 在多服务器环境中使用客户端程序 在一些情况下,你可能想要在同一台机器上运行多个mysqld服务器。你可能想要测试一个新的MySQL发布,同时不影响现有产品的设置。或者,你可能想使不同的用户访问来访问不同的mysqld服务器以便他们自己来管理。(例如,你可能是一个Internet服务提供商,

  • 我想知道我是否可以在一台机器上运行多个独立的neo4j实例。我知道我可以将多个实例配置为HA集群(此处),但这不是我的意图,我只需要在我的机器上使用两个完全不同且独立的neo4j实例(如果有区别的话,这是一个Mac OSX)。这只是为了我的开发测试,我尝试了有两个不同的目录,有不同的,并为它们设置了两个不同的端口,但只有一个运行正常。 如果有任何帮助,我将不胜感激。谢谢你。

  • 问题内容: 每个Java应用程序都将在特定的Java虚拟机实例中运行。我真的在以下方面感到困惑,而Google搜索使我更加困惑。不同网站上的不同文章。 如果我有一个用Java编写的Web服务,它将需要一个JVM实例来运行,那么JVM可以成为守护进程吗? 如果是,当我们运行任何其他Java应用程序时,它将使用该JVM实例还是创建一个新的JVM? 任何机器上可用的主内存是恒定的。当我们同时启动n个Ja

  • 问题内容: 我可以运行多个JVM吗?如果是,那么我如何找到在哪个JVM上加载了特定的类? 问题答案: 您的意思尚不完全清楚,但是: 您可以在同一台计算机上安装多个VM(版本/品牌等) 您可以运行多个进程,无论是相同的JVM版本还是不同的JVM版本 除非您正在运行调试代理或类似的代理,否则我不知道有什么方法可以询问JVM进程是否加载了特定的类。似乎有点奇怪的要求-为什么要这样做?

  • 主要内容:1 配置Tomcat服务器的多个实例很多时候,我们遇到需要修改服务器配置以使其适应应用程序的情况。如果我们有多个应用程序,并且希望每个应用程序都有自己定义的配置选项,那么需要怎么配置呢?在本教程中,我将讨论为每个应用程序使用不同的Tomcat实例。 1 配置Tomcat服务器的多个实例 我正在使用Windows机器,您将使用Windows格式的路径。但是创建多个实例的过程在所有其他操作系统中都是相同的。另外,我假设您要创建2个新的t

  • 我对Node.js相当陌生,对Javascript也相当陌生(我不把使用jQuery的简单动画算作js)。作为一名Web开发人员,我正在从PHP/MySQL转向Express/Mongo。 我喜欢事物整洁的想法--只要在性能上没有明显的损失。由于node是如此快速的发展,我发现很难找到具体的意见和答案,我的路由方法为当前版本的node(我发现的大多数帖子似乎是不相关的,并已超过两年)。 我使用bl