我应该调用session.close()和cluster。每次Web API调用后close()

时间:2015-01-29 09:43:57

标签: cassandra datastax-enterprise

我有一个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服务器?

1 个答案:

答案 0 :(得分:12)

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

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

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