集群顶点的多个或单个实例
Multiple or single instance for clustered vertx
我正在使用 vertx4 开发微服务,每个服务都由多个 Verticle 组成,并且所有服务都使用以下代码部署为集群(hazelcast)Verticle。
Vertx.clusteredVertx(options.setHAEnabled(isHa), (vertx) -> {
((Vertx)vertx.result()).deployVerticle(verticleName, (new DeploymentOptions()));
});
我正在为服务中的每个 Verticle 调用上面的代码,并创建了多个 Vertex 对象或实例。
- 在集群中部署 Verticles 的方式是否正确?
- 我应该从 clusteredVertx 获取一个顶点对象并使用它部署多个 Verticle 吗?
- 拥有多个顶点实例的优点和缺点是什么?
我已经阅读了 vertx 文档,但我无法特别理解集群。我什至检查了一些 vertx 源代码,如 Launcher
class 但没有任何帮助我得到答案。
我觉得你混淆了两个概念,一个是Vertx实例,一个是集群。
每个 Vertx 实例都有并管理自己的事件总线和事件循环,最适合 运行 许多 Verticle。一个 Vertx 实例完全有能力管理大量 Verticle,并允许它们通过一个事件总线相互通信。这就是并发模型。
当您需要扩展和连接通常部署到不同 JVM 甚至机器的多个应用程序(= 多个 Vertx 实例)之间的事件总线时,需要集群。
集群时,每个 Vertx 实例都有自己的事件总线,但是相互发现的实例(如何取决于集群技术)将桥接它们的事件总线,这意味着它们的 Verticle 会找到彼此。但是,此桥有其自身的成本,您不希望将其用于内部应用程序通信。
因此,如果您谈论的是一个应用程序,那么通常的方法是获取一个 Vertx 实例并将其用于部署所有 Verticle。 Verticle 本身不知道它是否安装在集群 Vertx 上。除了它可以显式安装其处理程序仅供本地使用 (vertx.eventBus().localConsumer(...)
),这意味着即使在集群设置中,这些处理程序也不会响应来自其他实例的消息。
在一个应用程序中拥有多个 Vertx 实例并非不可能,但如果您不想将 Vertx 扩展到它的扩展,那么这不适合您。
我正在使用 vertx4 开发微服务,每个服务都由多个 Verticle 组成,并且所有服务都使用以下代码部署为集群(hazelcast)Verticle。
Vertx.clusteredVertx(options.setHAEnabled(isHa), (vertx) -> {
((Vertx)vertx.result()).deployVerticle(verticleName, (new DeploymentOptions()));
});
我正在为服务中的每个 Verticle 调用上面的代码,并创建了多个 Vertex 对象或实例。
- 在集群中部署 Verticles 的方式是否正确?
- 我应该从 clusteredVertx 获取一个顶点对象并使用它部署多个 Verticle 吗?
- 拥有多个顶点实例的优点和缺点是什么?
我已经阅读了 vertx 文档,但我无法特别理解集群。我什至检查了一些 vertx 源代码,如 Launcher
class 但没有任何帮助我得到答案。
我觉得你混淆了两个概念,一个是Vertx实例,一个是集群。
每个 Vertx 实例都有并管理自己的事件总线和事件循环,最适合 运行 许多 Verticle。一个 Vertx 实例完全有能力管理大量 Verticle,并允许它们通过一个事件总线相互通信。这就是并发模型。
当您需要扩展和连接通常部署到不同 JVM 甚至机器的多个应用程序(= 多个 Vertx 实例)之间的事件总线时,需要集群。
集群时,每个 Vertx 实例都有自己的事件总线,但是相互发现的实例(如何取决于集群技术)将桥接它们的事件总线,这意味着它们的 Verticle 会找到彼此。但是,此桥有其自身的成本,您不希望将其用于内部应用程序通信。
因此,如果您谈论的是一个应用程序,那么通常的方法是获取一个 Vertx 实例并将其用于部署所有 Verticle。 Verticle 本身不知道它是否安装在集群 Vertx 上。除了它可以显式安装其处理程序仅供本地使用 (vertx.eventBus().localConsumer(...)
),这意味着即使在集群设置中,这些处理程序也不会响应来自其他实例的消息。
在一个应用程序中拥有多个 Vertx 实例并非不可能,但如果您不想将 Vertx 扩展到它的扩展,那么这不适合您。