如何将 Spring Data API for Apache Cassandra 与 Azure Cosmos DB for Apache Cassandra 配合使用

适用对象: Cassandra

本文演示了如何创建一个示例应用程序,该应用程序使用 Spring Data 通过 Azure Cosmos DB for Apache Cassandra 存储和检索信息。

先决条件

为完成本文介绍的步骤,需要满足以下先决条件:

注意

下面所述的示例实现自定义扩展,以便在使用 Azure Cosmos DB for Apache Cassandra 时获得更好的体验。 它们包括自定义重试和负载均衡策略,以及实现推荐的连接设置。 要更全面地了解如何使用自定义策略,请参阅版本 3版本 4 的 Java 示例。

创建 Azure Cosmos DB for Apache Cassandra 帐户

  1. 在 Azure 门户菜单或主页中,选择“创建资源” 。

  2. 在“新建”页面中搜索“Azure Cosmos DB”,然后选择它。

  3. 在“Azure Cosmos DB”页上,选择“创建”。

  4. API 页面上,选择 Cassandra 下的“创建”。

    API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。

    选择“Cassandra”,因为本快速入门将创建使用 API for Cassandra 的表。

    详细了解 API for Cassandra

  5. 在“创建 Azure Cosmos DB 帐户”页中,输入新 Azure Cosmos DB 帐户的基本设置。

    设置 说明
    订阅 订阅 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。
    资源组 新建

    然后,输入与帐户名称相同的名称。
    选择“新建”。 然后输入帐户的新资源组名称。 为简单起见,请使用与 Azure Cosmos DB 帐户名称相同的名称。
    帐户名 输入唯一的名称 输入标识此 Azure Cosmos DB 帐户的唯一名称。 帐户 URI 将是追加到唯一帐户名称的“cassandra.cosmos.azure.cn” 。

    帐户名称只能使用小写字母、数字及连字符 (-),必须为 3 到 31 个字符长。
    API Cassandra API 确定要创建的帐户的类型。 Azure Cosmos DB 提供五种 API:适用于文档数据库的 NoSQL、适用于图形数据库的 Gremlin、适用于文档数据库的 MongoDB、Azure 表和 Cassandra。 必须为每种 API 创建单独的帐户。

    选择“Cassandra”,因为本快速入门将创建使用 API for Cassandra 的表。

    详细了解 API for Cassandra
    位置 离用户最近的区域 选择用于托管 Azure Cosmos DB 帐户的地理位置。 使用离用户最近的位置,使他们能够以最快的速度访问数据。
    容量模式 预配吞吐量或无服务器 选择“预配吞吐量”以在预配吞吐量模式下创建帐户。 选择“无服务器”以在无服务器模式下创建帐户。
    应用 Azure Cosmos DB 免费层折扣 “应用”或“不应用” 使用 Azure Cosmos DB 免费层,你将在帐户中获得每秒前 1000 RU 的免费吞吐量和 25 GB 的免费存储。 了解免费层的详细信息。

    注意

    每个 Azure 订阅最多可以有一个免费层 Azure Cosmos DB 帐户,并且你必须在创建帐户时选择加入使用。 如果看不到用于应用免费层折扣的选项,这意味着订阅中的另一个帐户已启用免费层。

    Azure Cosmos DB for Apache Cassandra 的“新建帐户”页面

  6. 在“全局分发”选项卡中,配置以下详细信息。 对于本快速入门,可以保留默认值:

    设置 说明
    异地冗余 禁用 通过将你的区域与某个配对区域进行配对来启用或禁用帐户的多区域分发。 稍后可以将更多区域添加到帐户。
    多区域写入 禁用 借助多区域写入功能,可以利用全中国的数据库和容器的预配吞吐量。
    可用性区域 禁用 可用性区域是指 Azure 区域内的隔离区域。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。

    注意

    如果选择“无服务器”作为“容量模式”,则以下选项不可用:

    • 应用免费层折扣
    • 异地冗余
    • 多区域写入
  7. (可选)可以在以下选项卡中配置其他详细信息:

    • 网络 - 配置来自虚拟网络的访问
    • 备份策略- 配置定期连续备份策略。
    • 加密 - 使用服务管理的密钥或客户管理的密钥
    • 标记 - 标记是名称/值对,通过将相同的标记应用到多个资源和资源组,可以对资源进行分类并查看合并的账单。
  8. 选择“查看 + 创建”。

  9. 检查帐户设置,然后选择“创建”。 创建帐户需要几分钟时间。 等待门户页显示“你的部署已完成”消息。

    Azure 门户“通知”窗格

  10. 选择“转到资源”,转到 Azure Cosmos DB 帐户页。

配置示例应用程序

以下过程配置测试性应用程序。

  1. 打开命令 shell 并克隆以下示例之一:

    对于 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 示例是相同的,但为了包括自定义重试和负载均衡策略,它们采用了不同的实现方式。 如果要对现有的 Spring Java 应用程序进行更改,建议查看代码以了解如何实现自定义策略。

  2. 在示例项目的 resources 目录中找到 application.properties 文件,或者创建此文件(若此文件尚不存在)。

  3. 在文本编辑器中打开 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 指定本文上文中所述的主要密码
  4. 保存并关闭 application.properties 文件。

打包并测试示例应用程序

浏览到 .pom 文件所在目录,以便生成并测试应用程序。

  1. 使用 Maven 生成示例应用程序,例如:

    mvn clean package
    
  2. 启动示例应用程序;例如:

    java -jar target/spring-data-cassandra-on-azure-0.1.0-SNAPSHOT.jar
    
  3. 在命令提示符下使用 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'}.
    
  4. 在命令提示符下使用 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 资源,以免产生更多费用。 若要删除资源,请执行以下操作:

  1. 在 Azure 门户的“搜索”栏中,搜索并选择“资源组”。

  2. 从列表中选择为本快速入门创建的资源组。

    选择要删除的资源组

  3. 在资源组“概览”页上,选择“删除资源组”。

    删除资源组

  4. 在下一窗口中输入要删除的资源组的名称,然后选择“删除” 。