我有一个带有几个眩晕的Vert.x应用程序,可以与不同的buses和dbs (mongo、redis、兔子、kafka等)交互。
其中有一个专用于与外部api (非常老的)通信的垂直线,它允许一个持久连接,并且可以从单个(预定义的)源进行通信。
我使用相同的代码(自动缩放)部署vertx的mutli实例,并使用hazelcast作为集群管理器,使它们充当集群。
将external-api verticle的创建限制为单个实例的最佳实践是什么,我看了如下:
SharedData.Lock() -但是我需要用异步旋转锁logicHigh Availability包装它--很适合终止和自动缩放,但不强制单个verticleworker verticle的活动--以便在每个实例中创建一个工作程序。
我可以使用以上所有的混合,并创建所需的功能,但我似乎有些复杂.
我应该将我的垂直线分离到不同的服务器上,还是有一些更简单的解决方案我还没有想到呢?
发布于 2020-04-20 09:22:46
您不需要单一的垂直点,只留下这个垂直点而只是处于无状态状态,并在代理服务中应用您的连接--在您可以将该服务注册为HttpEndpoint、Evenbus、Message或JDBC服务类型之后,您将有一个与db或外部http源进行通信的点。
https://stackoverflow.com/questions/61289513
复制相似问题