我应该调用session.close()和集群吗?close() 在每次 Web API 调用之后



我有一个Webservice API,允许客户端插入Cassandra。我阅读了datastax(http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/Session.html)页面上的文档,其中指出我们应该将会话和集群对象保留到应用程序结束。我想知道我应该在每次 Web API 调用后调用 session.close() 和 cluster.close(),还是只保留会话直到我关闭 Web 服务器?

我建议不要在每次收到请求时都创建Session。 每次通过Cluster.connect创建Session时,java 驱动程序都会创建一个连接到 Cassandra 集群的多个主机的连接池。

例如,使用默认设置,如果在单个数据中心中有 8 个 cassandra 节点,则使用 2.0.9 版本的驱动程序,它将为每个主机创建 8 个池连接(在下一版本中将更改为 2)。 每次创建 Session 时,这将创建 64 个连接。

最好有一个您的 Web 服务器可以使用的共享Session。 驱动程序可以管理每个连接的多个请求(在 2.0.x 中默认为每个连接 128 个请求),因此无需担心共享单个Session对象时的争用。

最新更新