JavaSpring项目中gremlin客户端集群的最佳实践是什么

JavaSpring项目中gremlin客户端集群的最佳实践是什么,java,gremlin,tinkerpop3,amazon-neptune,Java,Gremlin,Tinkerpop3,Amazon Neptune,我使用的是Neptune(AWS)图形数据库,我的客户端api是JavaSpring。我的应用程序读写到我的数据库中。实际上,我们有两个集群作为bean进行读写。我们正在生成几个遍历,在提交每个遍历之后,我们决定使用关闭它。 关闭遍历并用远程(..)重新创建它是否是最佳做法? 在一个线程中有多个连接的大型项目中,最佳实践是什么?如果您的代码长期运行,典型的Java最佳实践(假设您使用的是Gremlin Java客户端)是使用客户端创建一个连接池,并在线程之间共享该图形遍历源对象(g)。线程将共享

我使用的是Neptune(AWS)图形数据库,我的客户端api是JavaSpring。我的应用程序读写到我的数据库中。实际上,我们有两个集群作为bean进行读写。我们正在生成几个遍历,在提交每个遍历之后,我们决定使用关闭它。 关闭遍历并用远程(..)重新创建它是否是最佳做法?
在一个线程中有多个连接的大型项目中,最佳实践是什么?

如果您的代码长期运行,典型的Java最佳实践(假设您使用的是Gremlin Java客户端)是使用客户端创建一个连接池,并在线程之间共享该图形遍历源对象(g)。线程将共享连接池。如果您的应用程序是多线程的,那么实现高吞吐量所需的线程数量大约是您连接到的Neptune实例上虚拟CPU数量的两倍。如果您的应用程序能够保持状态并长期运行,则无需继续打开和关闭连接。如果您的应用程序比较短暂(例如定期启动和停止容器或使用AWS Lambda函数),那么在每次调用时创建和关闭连接通常是最佳做法。如果代码运行时间较长(例如在服务器中),那么保持连接池打开并在应用程序中的线程之间共享连接通常是最好的方法。这避免了每次发出某些查询时创建新连接池的开销

如果连接闲置一段时间,海王星可能会关闭它。如果您使用的是gremlinjava,那么客户端将包含一个keep-alive ping

如果您正在使用IAM身份验证,则连接将在凭据过期10天后关闭

这里有一些关于Amazon Neptune的Web套接字行为的文档:

这里有一些与Java客户端相关的附加信息: