DataStax Java驱动程序可以安全地用在EE容器中吗?

时间:2013-11-22 08:14:51

标签: java java-ee cassandra datastax-java-driver

com.datastax.driver.core.Session类的文档说明了

  

(...)每个会话都维护与群集节点的多个连接(...)

但是,EE环境的一般建议是将池和线程管理留给容器。

在我看来,DataStax驱动程序(主要不是针对EE环境)违反了这一规则。这让我担心驱动程序是否可以安全地用在我的EE应用程序中。

2 个答案:

答案 0 :(得分:5)

无论环境如何,拥有多个连接的优点是Java客户端具有令牌识别功能。这意味着它知道数据在集群中的位置,因此它可以触发对正确节点的查询,从而避免对节点不拥有的数据进行不必要的查找。此外,客户端知道群集及其状态,并且可以透明地将失败的请求重定向到其他节点。如果您只保持与一台计算机的一个连接,那么您的应用程序将会天真地触发请求。

答案 1 :(得分:5)

我确实记得建议。我认为这是一个旧的建议意在强调在大多数情况下应用程序不应该尝试为容器进行额外的线程管理(这里的关键词是“容器”)。搞乱线程可能会导致过度使用服务器的资源。在单核/双核的时代,这非常重要。

无论如何,今天我们有:

  1. 更多核心
  2. 使用异步模型的更多应用程序
  3. DataStax驱动程序允许您configure the max thread pool sizes,以便您可以控制内容。

    总结一下,我认为使用驱动程序应该是非常安全的。您可以根据应用程序需求和服务器资源调整线程池。