com.datastax.driver.core.Session
类的文档说明:
(...) 每个会话维护多个与集群节点的连接 (...)。
然而,针对EE环境的一般建议是将池化和线程管理留给容器。
在我看来,DataStax驱动程序并不主要针对EE环境,违反了这个规则。这让我担心该驱动程序是否可以安全地用于我的EE应用程序。
com.datastax.driver.core.Session
类的文档说明:
(...) 每个会话维护多个与集群节点的连接 (...)。
然而,针对EE环境的一般建议是将池化和线程管理留给容器。
在我看来,DataStax驱动程序并不主要针对EE环境,违反了这个规则。这让我担心该驱动程序是否可以安全地用于我的EE应用程序。
拥有多个连接的优势在于Java客户端可以识别令牌(token)。这意味着它知道集群中数据在哪里,因此它可以向正确的节点发送查询,从而避免了不必要的向其它节点查找自己没有的数据。此外,客户端了解集群及其状态,并且可以将失败的请求透明地重定向到其他节点。如果您仅维护与单个机器的一个连接,那么您的应用程序将毫无头绪地发送请求。
javax.inject.Singleton
注解来创建com.datastax.driver.core.Session
实例,从而将应用程序中的Cassandra会话对象数量限制为一个,而不会限制并发性(javax.ejb.Singleton
会对实例强制执行锁定)。 - Schroenser