适用对象:
卡珊德拉
重要
你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL。
本文介绍如何创建一个示例应用程序,该应用程序使用 Spring Data 通过 apache Cassandra Azure Cosmos DB存储和检索信息。
先决条件
- 一份 Azure 订阅。 如果还没有Azure订阅,可以激活 MSDN 订阅者权益或注册 [Azure 帐户]。
- 一个受支持的 Java 开发工具包 (JDK)。 有关在 Azure 上进行开发时可用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack上的
Java 支持。 - Apache Maven 3.0 或更高版本。
- 用来测试功能的 Curl 或类似的 HTTP 实用工具。
- Git 客户端。
注意
本文中介绍的示例实现自定义扩展,以便在使用适用于 Apache Cassandra 的 Azure Cosmos DB时获得更好的体验。 它们包括自定义重试和负载均衡策略,以及实现推荐的连接设置。 要更全面地了解如何使用自定义策略,请参阅版本 3 和版本 4 的 Java 示例。
为 Apache Cassandra 创建一个 Azure Cosmos DB 账户
在 Azure 门户菜单或主页中,选择“ 创建资源”。
在“新建”页面中搜索“Azure Cosmos DB”,然后选择它。
在“Azure Cosmos DB”页上,选择“创建”。
在 API 页上的 Cassandra 部分下,选择“ 创建”。
API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。
选择 Cassandra ,因为在本教程中,你将创建一个适用于 Cassandra API 的表。
若要了解有关 Cassandra API 的详细信息,请参阅 什么是适用于 Apache Cassandra 的 Azure Cosmos DB?。
在 “创建 Azure Cosmos DB 帐户 ”页上,输入新 Azure Cosmos DB 帐户的基本设置。
设置 值 说明 订阅 你的订阅。 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。 资源组 新建。
然后输入与 帐户名称相同的名称。选择“新建”。 然后输入帐户的新资源组名称。 为简单起见,请使用与 Azure Cosmos DB 帐户名称相同的名称。 帐户名 输入唯一名称。 输入标识此 Azure Cosmos DB 帐户的唯一名称。 你的帐户 URI ( cassandra.cosmos.azure.com),已追加到唯一帐户名称。
帐户名称只能使用小写字母、数字和连字符(-),并且长度必须介于 3 到 31 个字符之间。位置 离用户最近的区域。 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。 容量模式 预配的吞吐量 或 无服务器。 选择 “预配吞吐量 ”以在 预配吞吐量 模式下创建帐户。 选择 “无服务器 ”以在 无服务器 模式下创建帐户。 应用 Azure Cosmos DB 免费层折扣 应用 或 不适用。 使用 Azure Cosmos DB 免费层,可以在帐户中免费获取前 1,000 RU/秒和 25 GB 的存储空间。 详细了解免费层。 注意
每个 Azure 订阅最多可拥有一个免费的 Azure Cosmos DB 帐户。 创建帐户时必须选择加入。 如果您未看到应用免费层的折扣选项,则是因为订阅中的另一个帐户已经启用了免费层。
在“ 全局分发 ”选项卡上,配置以下详细信息。 使用本教程的默认值。
设置 值 说明 异地冗余 禁用 通过将你的区域与另一区域进行配对来启用或禁用帐户的全局分发。 稍后可以将更多区域添加到帐户。 多区域写入 禁用 利用多区域写入功能,可以利用全球数据库和容器的预配吞吐量。 可用性区域 禁用 可用性区域是 Azure 区域中的独立位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。 如果选择 “无服务器 ”作为 容量模式,则以下选项不可用:
- 应用免费层折扣
- 异地冗余
- 多区域写入
(可选)可以在以下选项卡上配置其他详细信息:
选择“查看 + 创建”。
检查帐户设置,然后选择“创建”。 创建帐户需要几分钟时间。 等待门户页显示“你的部署已完成”消息。
选择转到资源以访问 Azure Cosmos DB 账号页面。
配置示例应用程序
以下过程配置测试应用程序。
打开命令行,然后克隆以下任意一个示例:
对于 Java 版本 3 驱动程序和相应的 Spring 版本:
git clone https://github.com/Azure-Samples/spring-data-cassandra-on-azure-extension-v3.git对于 Java 版本 4 驱动程序和相应的 Spring 版本:
git clone https://github.com/Azure-Samples/spring-data-cassandra-on-azure-extension-v4.git注意
尽管前面Java版本 3 和版本 4 示例中所述的用法与上述Java版本 3 和版本 4 的用法相同,但包括自定义重试和负载均衡策略的实现有所不同。 建议查看代码,以便在对现有 Spring Java 应用程序进行更改时了解如何实施自定义策略。
application.properties在resources示例项目的目录中找到该文件,或创建该文件(如果该文件尚不存在)。在
application.properties文本编辑器中打开该文件,并在文件中添加或配置以下行。 将示例值替换为前面所述的相应值:spring.data.cassandra.contact-points=<Account Name>.cassandra.cosmos.azure.cn spring.data.cassandra.port=10350 spring.data.cassandra.username=<Account Name> spring.data.cassandra.password=********其中:
参数 说明 spring.data.cassandra.contact-points指定本文上文中所述的接触点。 spring.data.cassandra.port指定本文上文中所述的端口。 spring.data.cassandra.username指定你在本文中先前提到的用户名。 spring.data.cassandra.password请指定本文上文中提到的主要密码。 保存并关闭
application.properties文件。
打包并测试示例应用程序
浏览到 .pom 文件所在目录,以便生成并测试应用程序。
使用 Maven 生成示例应用程序。 例如:
mvn clean package启动示例应用程序。 例如:
java -jar target/spring-data-cassandra-on-azure-0.1.0-SNAPSHOT.jar使用
curl命令提示符创建新记录。 以下示例演示如何使用curl:curl -s -d "{\"name\":\"dog\",\"species\":\"canine\"}" -H "Content-Type: application/json" -X POST http://localhost:8080/pets curl -s -d "{\"name\":\"cat\",\"species\":\"feline\"}" -H "Content-Type: application/json" -X POST http://localhost:8080/pets你的应用程序应返回如下所示的值:
Added Pet{id=60fa8cb0-0423-11e9-9a70-39311962166b, name='dog', species='canine'}. Added Pet{id=72c1c9e0-0423-11e9-9a70-39311962166b, name='cat', species='feline'}.使用
curl命令提示符检索所有现有记录。 以下示例演示如何使用curl:curl -s http://localhost:8080/pets你的应用程序应返回如下所示的值:
[{"id":"60fa8cb0-0423-11e9-9a70-39311962166b","name":"dog","species":"canine"},{"id":"72c1c9e0-0423-11e9-9a70-39311962166b","name":"cat","species":"feline"}]
清理资源
执行完应用和 Azure Cosmos DB 帐户的操作以后,可以删除所创建的 Azure 资源,以免产生更多费用。 若要删除资源,请执行以下操作:
在 Azure 门户的“搜索”栏中,搜索并选择“资源组”。
从列表中选择为本快速入门创建的资源组。
在资源组“概览”页上,选择“删除资源组”。
在下一窗口中输入要删除的资源组的名称,然后选择“删除” 。