【问题标题】:Production grade Cassandra client configuration for Java applicationJava 应用程序的生产级 Cassandra 客户端配置
【发布时间】:2019-01-21 19:18:01
【问题描述】:

我的应用程序在生产环境中每秒运行超过 100 个事务。我想知道应该使用配置来实现这一点。

在非 Prod 环境中,我使用具有 DCAwareLoadBalancingPolocy 且一致性级别为 LOCAL_QUORUM 的集群。

所有剩余配置保留为默认值。

默认配置是否足够,或者我需要指定所有连接选项,如池选项、套接字选项、一致性级别等,

PS: 卡桑德拉版本 3 请建议如何扩展它。

【问题讨论】:

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


    【解决方案1】:

    Java 驱动程序的默认值非常好,尤其是对于那种负载。您需要使用默认的 DCAware/TokenAware 负载平衡策略。您可以调整连接池以允许每个连接有更多的“进行中”请求。每个应用程序只需要一个 Session 类实例,以避免打开过多的集群连接。真正的性能提升来自使用异步操作和较低的一致性级别,例如LOCAL_ONE(但这是特定于应用程序的)。

    【讨论】:

    • 感谢您的回答。我在应用程序运行时看到一个问题,突然会话对象被取消。因此,我看到数据库连接失败..当会话对象被破坏时,如何自动创建会话对象?会话被取消的原因是什么?
    • 这真的取决于你的应用程序——如果你在像 Singleton 这样的东西中保持会话,那么它不应该被取消。您使用什么版本的驱动程序?
    • 我使用的是 Cassandra 版本 3。
    • 不,我说的是用于连接 cassandra 的 java 驱动程序。最新的是 3.5.1:mvnrepository.com/artifact/com.datastax.cassandra/…
    • 好的..我正在使用驱动程序数据 stad 3.3.1,我看到的一个问题是我正在连接到具有 10 个节点的集群。当任何一个节点由于某种原因关闭或失去连接时,会话对象将被取消。这是确定的根本原因。如何处理?
    猜你喜欢
    • 2015-06-21
    • 2016-07-16
    • 2012-07-19
    • 2015-04-23
    • 2011-11-15
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多