该类的文档com.datastax.driver.core.Session
指出
(...) 每个会话维护到集群节点的多个连接 (...)
然而,EE 环境的一般建议是将池和线程管理留给容器。
在我看来,主要针对 EE 环境的 DataStax 驱动程序违反了此规则。这让我担心驱动程序是否可以在我的 EE 应用程序中安全使用。
该类的文档com.datastax.driver.core.Session
指出
(...) 每个会话维护到集群节点的多个连接 (...)
然而,EE 环境的一般建议是将池和线程管理留给容器。
在我看来,主要针对 EE 环境的 DataStax 驱动程序违反了此规则。这让我担心驱动程序是否可以在我的 EE 应用程序中安全使用。
无论环境如何,拥有多个连接的优点是 Java 客户端可以识别令牌。这意味着它知道数据在集群中的位置,因此它可以向正确的节点发起查询,从而避免不必要地查找其他节点以查找该节点不拥有的数据。此外,客户端知道集群及其状态,它可以透明地将失败的请求重定向到其他节点。如果您只与一台机器保持一个连接,您的应用程序会天真地触发请求。
我记得那个建议。我认为这是一个古老的建议,旨在强调在大多数情况下,应用程序不应该尝试对容器进行额外的线程管理(这里的关键词是“容器”)。也搞乱线程可能会导致过度利用服务器的资源。在单核/双核时代,这非常重要。
无论如何,今天我们有:
DataStax 驱动程序允许您配置最大线程池大小,以便您可以控制一切。
最后,我认为使用驱动程序应该是相当安全的。您可以根据您的应用需求和服务器资源调整线程池。