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

适用对象: 卡珊德拉

重要

你是否正在寻找一种数据库解决方案,以应对需要高扩展性、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 账户

  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 ,因为在本教程中,你将创建一个适用于 Cassandra API 的表。

    若要了解有关 Cassandra API 的详细信息,请参阅 什么是适用于 Apache Cassandra 的 Azure Cosmos DB?。

  5. 在 “创建 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 Cosmos DB for Apache Cassandra 的“新建帐户”页面

  6. 在“ 全局分发 ”选项卡上,配置以下详细信息。 使用本教程的默认值。

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

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

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

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

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

    Azure 门户“通知”窗格

  10. 选择转到资源以访问 Azure Cosmos DB 账号页面。

配置示例应用程序

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

  1. 打开命令行,然后克隆以下任意一个示例:

    对于 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 应用程序进行更改时了解如何实施自定义策略。

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

  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:

    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:

    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. 在下一窗口中输入要删除的资源组的名称,然后选择“删除” 。