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

Min*_* Vu 9 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服务器?

And*_*ert 12

我建议不要在Session每次收到请求时创建.每次创建一个Session通过Cluster.connectjava驱动程序将创建一个连接池到您的Cassandra集群的许多主机.

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

拥有SessionWeb服务器可以使用的共享将更为可取.驱动程序可以管理每个连接的多个请求(默认情况下,在2.0.x中默认为每个连接128个),因此无需担心共享单个Session对象时的争用.

  • 除了Andy所描述的内容之外,这篇文章http://www.datastax.com/dev/blog/4-simple-rules-when-using-the-datastax-drivers-for-cassandra为您提供了一套基本规则来确保您正在充分利用API (4认同)