微软发布 Azure Redis Cache 服务的跨地域复制功能

  • Martin Abbott
  • 张卫滨

2018 年 3 月 14 日

话题:Azure语言 & 开发架构

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

微软最近宣布 Azure Redis Cache 服务对跨地域复制(geo-replication)功能的支持发布正式版本 (general availability),Azure Redis Cache 是开源 Redis 缓存的微软托管实现。在 2017 年 6 月,微软曾经发布过它的公开预览版本

对跨地域复制的支持需要两个 Azure Redis Cache 实例,一个作为主(primary)缓存,另外一个作为从(secondary)缓存。副本不一定必须要放到与主缓存不同的 region 中,但是如果这样做的话,在主缓存不可用的时候,能够提供额外的弹性。在当前的实现中,副本只能放到一个 region 中。对于应用来说从缓存是只读的,而写操作是由服务异步处理的。

跨地域复制是通过 Azure Portal 中的主缓存和从缓存的链接来配置的:

图片来源:https://docs.microsoft.com/en-us/azure/redis-cache/cache-how-to-geo-replication#add-a-geo-replication-link

在配置跨地域复制之前,需要预先满足一些条件:

  • 缓存必须位于 Premium 层
  • 缓存必须在相同的 Azure subscription 中
  • 从缓存必须具备与主缓存相同的定价层级或者更高的定价层级
  • 如果主缓存是集群的,那么从缓存必须也是集群的,并且具有相同数量的分片(shard)
  • 缓存必须都处于运行状态
  • 缓存都不能启用 Redis 持久化

Azure Redis Cache 跨地域复制目前不支持主从缓存之间的自动化故障切换(failover)功能。这会引入一个手动的步骤,需要进行应用的配置变更,这意味着服务可能会有一些停机的时间。微软的首席项目经理 Ye Gu 在博客文章中对其进行了解释:

…两个 Azure Region 之间的物理距离会明显增加整体响应时间的延迟。因此,Azure Redis Cache 不会自动故障切换至另外一个 Region 中的跨地理副本缓存。

故障切换是通过取消主缓存中对从缓存的链接来实现的。取消链接之后,从缓存就会变成新的主缓存,并且能够接受写入请求。

该项服务面临来自其他云厂商的直接竞争,包括 Amazon、Heroku 和 Redis。

Amazon AWS ElastiCache 支持多 zone 的地理复制,这是通过Multi-AZ 结合自动化故障处理功能实现的。与 Azure Redis Cache 类似,故障切换也不是即时的,在采取行动之前可能会耗费几分钟的时间,但它是自动进行的,并且会重新配置 DNS 设置,以便于减少应用的重新配置。

Heroku Redis支持高可用性,这是通过在备用的 zone 中持有一个单独的副本来实现的。它以类似于 AWS ElastiCache 的方式支持自动化故障切换,与 AWS 相同,它的切换也不是即时的,但是它会确保主缓存不再有效,而不是短暂的不可用。在服务的更高层级,故障切换对使用它的应用是透明的。

类似于 AWS ElastiCache,Redis Enterprise Cloud方案支持多 region,但是它声明其故障切换的耗时是秒级的,而不是分钟级的,而且它以“serverless”的方式运行,这与其他主要厂商基于实例的方案有所不同。

Azure Redis Cache 只能在该服务的 Premium 层级使用。其成本依赖于 Premium 层的等级,现在的价格区间从 P1 层的大约 400 美元 / 月到 P4 层的 3200 美元 / 月。尽管服务本身是免费的,但是你需要相同层级的两个实例,或者更高层的从缓存实例。另外,根据微软的说法,如果从缓存位于不同的 region 中,在主缓存和从缓存实例之间进行同步时,服务还会产生额外的数据出口的费用。

查看英文原文Microsoft Announce General Availability of Azure Redis Cache Geo-Replication

Azure语言 & 开发架构