你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 Java 的 Azure Cosmos 测试客户端库 - 版本 1.0.0-beta.6
包含用于测试 Azure Cosmos DB SDK 库的核心故障注入类的库。
入门
添加包
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-cosmos-test</artifactId>
<version>1.0.0-beta.6</version>
</dependency>
先决条件
- Java 开发工具包 (JDK) 版本 8 或更高版本
- 有效的 Azure 帐户。 如果没有,可以注册 免费帐户。 另外,可使用 Azure Cosmos DB 仿真器进行开发和测试。 由于模拟器 HTTPS 证书是自签名的,因此需要将其证书导入 Java 受信任的证书存储,如此 处所述
- (可选)SLF4J 是一种日志外观。
- (可选)SLF4J 绑定用于将特定的记录框架与 SLF4J 相关联。
- (可选)Maven
仅当计划使用日志记录时,才需要 SLF4J。还请下载 SLF4J 绑定,该绑定可将 SLF4J API 与你选择的记录实现链接在一起。 有关详细信息,请参阅 SLF4J 用户手册。
SDK 提供基于 Reactor Core 的异步 API。 可在此处阅读有关 Reactor Core 和 Flux/Mono 类型的详细信息
关键概念
Azure Cosmos 测试库可用于将故障注入 Azure Cosmos SDK for Java。
示例
以下部分提供了几个代码片段,介绍了如何创建一些最常见的故障注入方案,包括:
高通道获取方案
FaultInjectionRule serverConnectionDelayRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.CREATE_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.CONNECTION_DELAY)
.delay(Duration.ofSeconds(6)) // default connection timeout is 5s
.times(1)
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverConnectionDelayRule)).block();
连接中断方案
FaultInjectionRule timeoutRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.READ_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.RESPONSE_DELAY)
.times(1)
.delay(Duration.ofSeconds(6)) // the default time out is 5s
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(timeoutRule)).block();
服务器返回已消失方案
FaultInjectionRule serverErrorRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.READ_ITEM)
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionServerErrorType.GONE)
.times(1)
.build()
)
.duration(Duration.ofMinutes(5))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(serverErrorRule)).block();
随机连接关闭方案
FaultInjectionRule connectionErrorRule =
new FaultInjectionRuleBuilder("<YOUR RULE ID>")
.condition(
new FaultInjectionConditionBuilder()
.operationType(FaultInjectionOperationType.CREATE_ITEM)
.endpoints(new FaultInjectionEndpointBuilder(FeedRange.forLogicalPartition(new PartitionKey("<YOUR PARTITION KEY>"))).build())
.build()
)
.result(
FaultInjectionResultBuilders
.getResultBuilder(FaultInjectionConnectionErrorType.CONNECTION_CLOSE)
.interval(Duration.ofSeconds(1))
.threshold(1.0)
.build()
)
.duration(Duration.ofSeconds(2))
.build();
CosmosFaultInjectionHelper.configureFaultInjectionRules(container, Arrays.asList(connectionErrorRule)).block();
疑难解答
常规
Azure Cosmos DB 是一个快速、弹性的分布式数据库,可以在提供延迟与吞吐量保证的情况下无缝缩放。 凭借 Azure Cosmos DB,无需对体系结构进行重大更改或编写复杂的代码即可缩放数据库。 扩展和缩减操作就像执行单个 API 调用或 SDK 方法调用一样简单。 但是,由于 Azure Cosmos DB 是通过网络调用访问的,因此,使用 Azure Cosmos DB Java SDK v4 时,可以通过客户端优化获得最高性能。
性能 指南介绍了这些客户端优化。
故障排除指南 介绍了将 Azure Cosmos DB Java SDK v4 与 Azure Cosmos DB SQL API 帐户配合使用时的常见问题、解决方法、诊断步骤和工具。
启用客户端日志记录
后续步骤
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。