Java 使用gremlin驱动程序实现负载平衡

Java 使用gremlin驱动程序实现负载平衡,java,tinkerpop3,janusgraph,gremlin-server,Java,Tinkerpop3,Janusgraph,Gremlin Server,几天前,谷歌发表了这篇文章: 我们可以从中了解到,将janus graph部署为内部负载平衡器后面的单独实例是很常见的 所以,在我的项目中,我们有几乎相同的架构:bigtable、带有janus的gke和一些通过负载平衡器调用janus的应用程序。唯一的区别(不知道这是否重要,我们没有内部负载平衡器,我们有“外部(?)”负载平衡器) 所以。问题是:在java应用程序中使用gremlin驱动程序时,负载平衡的状态是什么。我们的研究表明它不起作用。由于连接是有状态的,因此吞吐量不会随机转发到jan

几天前,谷歌发表了这篇文章:

我们可以从中了解到,将janus graph部署为内部负载平衡器后面的单独实例是很常见的

所以,在我的项目中,我们有几乎相同的架构:bigtable、带有janus的gke和一些通过负载平衡器调用janus的应用程序。唯一的区别(不知道这是否重要,我们没有内部负载平衡器,我们有“外部(?)”负载平衡器)

所以。问题是:在java应用程序中使用gremlin驱动程序时,负载平衡的状态是什么。我们的研究表明它不起作用。由于连接是有状态的,因此吞吐量不会随机转发到janus副本。当它粘贴到一个复制品上时,它将与该复制品一起保留到最后。 但是,当复制副本被终止时,连接会以某种方式挂起,没有任何异常、警告、日志等。这就像根本没有关于连接状态的信息一样。这是一个坏的原因,如果我们假设有一个自动负载平衡器,它可以在需要时输出额外的副本,那么它将根本无法工作

我们正在使用janus graph 0.21和相应的tinkerpop驱动程序3.2.9(但是我们尝试了许多不同的组合),模式仍然保持不变。负载平衡不适用于我们,当某些pod被杀死时,故障切换也不适用于我们。-更糟糕的是,它并不是真正的确定性的——我们在它工作的地方进行了一些测试,但当我们在一段时间后回到那个测试时,它并没有


stackoverflowers,你知道这个问题的状态吗?

当你说“连接以某种方式挂起”时,你指的是客户端(即驱动程序)还是外部负载平衡器?嗯,客户端。因为当我运行一个全新的客户端实例时,它工作得非常好。3.2.9和更早版本中有一个bug,最近在3.2.10中修复了这个bug(截至此评论尚未发布),如果服务器无序关闭,驱动程序将处于挂起状态。也许你可以试试3.2.10-SNAPSHOT,看看这是否能解决悬而未决的问题,我现在正在检查。您对负载平衡有何评论?我的意思是,在平衡复制副本的吞吐量时,我们的想法是正确的吗?是的,但我不理解粘性会话的必要性。