使用适用于 Cassandra 的 Azure 托管实例

大规模构建云原生应用程序需要谨慎选择堆栈。一个流行的工具是 Apache 的 Cassandra 项目,这是一个 NoSQL 数据库,旨在快速扩展而不影响应用程序性能。它是处理大数据的理想平台,内置基于 Hadoop 的 map-reduce 工具,以及它自己的查询语言。它最初由 Facebook 开发,后来被用于 CERN、Netflix 和 Uber。
Azure 最初通过 Azure Marketplace 中的 DataStax 产品提供 Cassandra 支持,然后将 Cassandra API 支持添加到其自己的分布式 Cosmos DB,并为希望在 Azure VM 上构建和部署自己的 Cassandra 系统的用户提供指导。它现在正在开发自己的 Cassandra 实现,公开预览一组 Cassandra 托管实例,旨在与 Cosmos DB 一起工作。
Cassandra 是一个分布式数据库,每个节点通过八卦协议相互连接。节点在多台机器上运行,组织为数据中心并部署为节点环。所有节点都是对等节点,因此如果任何一个节点丢失,系统可以在替换开始时继续运行。环也可以与其他环对等,允许您让本地系统与云托管系统一起工作,或者一个区域与其他区域一起工作以实现全球弹性。可以根据需要在环中添加或删除节点,提供线性缩放。要使性能或容量翻倍,您需要做的就是将节点数量翻倍。
微软的 Azure Managed Instance for Apache Cassandra 最好被认为是将本地数据扩展到 Cosmos DB 的一种方式。本地 Cosmos DB 自发布后不久就一直存在需求,但它与 Azure 平台的深度集成使得微软很难将其分离。通过提供其 Azure 实施和 Cosmos DB 之间的集成,现在可以设置一个 Azure 托管的 Cassandra 环,并将其与本地和 Cosmos DB 对等。您现在可以在本地和云之间复制数据,利用 Cosmos DB 的功能运行全球规模的分布式应用程序,同时使用本地 Cassandra 实例在您自己的数据中心处理受监管的数据操作。
使用托管实例还有其他优势,因为您可以将 Cassandra 环的大部分日常操作移交给 Azure。它将自动提供升级和更新,处理补丁,使您的数据库始终运行最安全的软件版本。由于管理开销较少,您可以专注于构建应用程序而不是维护堆栈。
设置和运行 Azure 的 Apache 及其任何其他托管开源数据库之间没有太大区别。首先登录到 Azure 门户,然后搜索 Managed Instance for Apache Cassandra 以创建集群。
您需要执行将 Azure 服务添加到订阅的大部分步骤,从将其添加到资源组和选择位置。同时,选择名称并选择主机 VM 类型。在当前预览版中,您仅限于连接到四个 P30 磁盘的 DS14_v2 服务器。这些是非常强大的基于 Xeon 的系统,具有 16 个 vCPU、112GB 内存和 224GB SSD。支持多达 64 个数据盘和 8 个网卡,带宽为 12,000 Mbps。预计每台服务器每小时至少支付 2.11 美元,具体取决于您提供服务的位置。 P30 磁盘每个磁盘提供 1TB 的存储空间,每月至少花费 122.88 美元(装载额外费用)。
在 Azure 中运行 Casandra 并不便宜,但它不适合小型应用程序。即使您仅将应用程序用作通向 Cosmos DB 的网关,您也会围绕应用程序转移大量数据。
下一步将您的实例链接到新的或现有的 Azure 虚拟网络。任何 VNet 都需要具有 Internet 访问权限,因为它需要链接到多个不同的 Azure 服务。其中包括支持虚拟机扩展、管理加密密钥和证书,以及与 Azure 的安全和身份验证服务集成。如果要连接到现有 VNet,则必须从 Azure CLI 添加适当的权限,否则部署将失败。
您现在已准备好创建集群。一旦部署完毕,下一步就是创建一个支持 Cassandra 库的管理虚拟机。这将允许您使用 Cassandra 查询工具来管理您的数据库,使用您在创建集群时设置的管理员密码。您现在可以开始使用 Cassandra。
如果您考虑使用 Azure 中的 Cassandra 作为 Cosmos DB 的桥梁,您需要将 Azure 资源配置为混合集群。和以前一样,在 Azure 中创建和部署 Cassandra 集群,设置其名称并将其连接到 Azure VNet。您需要为节点到节点加密配置 Cassandra,因此如果您的本地安装未使用它,请启用它。导出加密证书并使用 Azure CLI 将它们安装在 Azure 托管的群集中。这些将使您的两个站点能够通过加密的八卦连接进行通信。
VNet 需要通过专用的 Express Route 连接或使用站点到站点 VPN 连接到本地网络。你使用什么取决于你打算发送到 Azure 的数据量,尽管实验集群可能会使用 VPN 来避免设置专用多协议标签交换 (MPLS) 连接的成本。
您将需要在托管集群中创建一个新的数据中心,使用 Azure CLI 获取其种子节点的详细信息。这些被添加到您的本地系统的配置详细信息,以及定义您的站点到站点复制策略。这个过程非常简单,只需要用 Cassandra 的查询语言编写几行代码。
该服务的一个有趣方面是支持 Azure 基于 Apache Spark 的分析工具 Databricks。如果您在与托管 Cassandra 服务相同的 VNet 中安装 Databricks,然后使用 Apache Spark Cassandra 连接器链接到您的端点,则您可以使用 Spark 和 Databricks 笔记本对 Cassandra 托管的数据运行分析。
有趣的是,微软对混合云运营的承诺如何转化为数据处理。通过提供运行 Cassandra 的托管路径,该公司为您的本地工具和云之间的 NoSQL 数据提供了一个天然的桥梁。这是一种双向连接,可以在本地处理敏感数据,同时利用应用程序的云规模(并最终扩展到 Cosmos DB 的全球规模)。
Cassandra 自己的复制协议提供了桥梁,而 Azure 确保它是最新的和安全的。结果是一组有效的工具解决了与链接云和数据中心相关的许多问题,这些工具可以利用 Apache Spark 等工具将数据交付给依赖大数据的其他 Azure 服务。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627