Vert.x - 限制所有集群中的单实例 verticle

问题描述 投票:0回答:1

我有一个

Vert.x
应用程序,具有多个 vertickl 来与不同的 busesdbs(mongo、redis、rabbit、kafka 等)进行交互

其中有一个 verticle 专门用于与外部 api(非常旧)进行通信,它允许来自单个(预定义)源的一个持久连接

我正在使用相同的代码(自动缩放)部署 vertx 的多个实例,并使它们充当集群,使用

hazelcast
作为集群管理器

external-api verticle
的创建限制为仅单个实例的最佳实践是什么,我查看了:

  • SharedData.Lock()
    - 但我需要用异步旋转锁逻辑来包装它
  • High Availability
    - 非常适合终止和自动缩放,但不会强制单个 verticle 的活动
  • worker verticle
    - 在每个实例中创建 1 个工作者垂直体

我可以混合使用上述所有内容并创建所需的功能,但我似乎有些复杂......

我应该将我的 verticle 分离到不同的服务器还是有一些我还没有想到的更简单的解决方案?

java locking microservices distributed vert.x
1个回答
0
投票

您不需要单个 verticle ,让该 verticle 保持无状态并在代理服务中应用您的连接 - 在您可以将该服务注册为 HttpEndpoint 、 Evenbus 、 Message 或 JDBC 服务类型之后,您将拥有与数据库的单点通信或外部 http 源。

© www.soinside.com 2019 - 2024. All rights reserved.