适用对象: Cassandra
Azure Cosmos DB 为 DataStax Java 驱动程序 3 和 4 提供驱动程序扩展。 这些驱动程序扩展为开发人员提供了不同的功能,以帮助提高应用程序的性能和可靠性,并优化 Azure Cosmos DB 上的工作负载。
在本文中,将着重介绍 DataStax Java 驱动程序的 Java v4。 创建的扩展可以在不更改代码的情况下实现,只需更新 pom.xml
和 application.conf
文件。 在本文中,我们分享了 Azure Cosmos DB Cassandra 扩展设置的所有配置选项的默认值,以及在什么情况下你可能希望替代这些默认值。
Java SDK 的建议设置
以下设置专门针对 Cassandra 客户端驱动程序 Java 版本 4。
身份验证
默认使用 PlainTextAuthProvider。 这是因为 Azure Cosmos DB for Apache Cassandra 需要身份验证并使用纯文本身份验证。
auth-provider {
class = PlainTextAuthProvider
}
连接
Azure Cosmos DB 对针对大量后端节点的请求进行负载均衡。 本地和远程节点大小的扩展中的默认设置在开发、测试和小批量生产或登台环境中效果出色。 在高容量环境中,你应该考虑将这些值增加到 50 或 100。
connection {
pool {
local {
size = 10
}
remote {
size = 10
}
}
}
令牌映射
当启用令牌感知路由时,驱动程序内部使用会话令牌映射向最佳协调器发送请求。 连接到 Apache Cassandra 实例时,这是一种有效的优化。 连接到 Azure Cosmos DB Cassandra 终结点时,这无关紧要,并且会生成虚假的错误消息。 因此,建议在连接到 Azure Cosmos DB for Apache Cassandra 实例时禁用会话令牌映射。
metadata {
token-map {
enabled = false
}
}
重新连接策略
建议将 ConstantReconnectionPolicy
用于 API for Cassandra,base-delay
为 2 秒。
reconnection-policy {
class = ConstantReconnectionPolicy
base-delay = 2 second
}
重试策略
Java 驱动程序中的默认重试策略不处理 OverLoadedException
。 我们为 API for Cassandra 创建了一个自定义策略来帮助处理此异常。
重试策略的参数是在 Azure Cosmos DB 扩展的 reference.conf 中定义的。
retry-policy {
class = com.azure.cosmos.cassandra.CosmosRetryPolicy
max-retries = 5
fixed-backoff-time = 5000
growing-backoff-time = 1000
}
均衡策略和首选地区
v4 驱动程序中的默认负载平衡策略限制应用程序级故障转移,并为 CqlSession
指定单个本地数据中心,该策略需要对象。 这为与 Azure Cosmos DB Cassandra 实例进行通信提供了良好的开箱即用体验。 除了设置负载平衡策略外,你还可以使用 preferred-regions
参数在多区域写入部署中配置故障转移到指定区域,如果存在区域中断。
load-balancing-policy {
multi-region-writes=false
preferred-regions=["China East2","China North2"]
}
SSL 连接和超时
默认情况下使用 DefaultsslEngineFactory
。 这是因为 Azure Cosmos DB Cassandra API 需要 SSL:
ssl-engine-factory {
class = DefaultSslEngineFactory
}
与默认值 2 秒相比,60 秒的请求超时提供了更好的开箱即用体验。 根据工作负载和 Azure Cosmos DB Cassandra 吞吐量预配向上或向下调整此值。 你提供的吞吐量越多,便可以将此值设置得越低。
request {
timeout = "60 seconds"
}