我在新加坡的 2 个可用区使用 AWS 负载平衡和多个 Web 服务器。
我现在正在寻找跨两个可用区部署 elasticache 节点,并想知道是否存在由 Web 服务器访问不同可用区的 elasticache 节点引起的延迟问题?
更新 - 实际上经过更多调查后,似乎一个 elasticache 集群只能存在于一个可用区中。因此,处理可用区中断的最佳解决方案是什么?
我在新加坡的 2 个可用区使用 AWS 负载平衡和多个 Web 服务器。
我现在正在寻找跨两个可用区部署 elasticache 节点,并想知道是否存在由 Web 服务器访问不同可用区的 elasticache 节点引起的延迟问题?
更新 - 实际上经过更多调查后,似乎一个 elasticache 集群只能存在于一个可用区中。因此,处理可用区中断的最佳解决方案是什么?
您说得对,ElasticCache 尚不支持多可用区功能。但是 AZ 之间 1ms 的低延迟通常不是什么大问题。
缓存的目的是从内存中进行长时间且频繁的 SQL 查询。这不是 300 毫秒的 SQL 查询,您可以通过单个内存查找来提供它。与 1ms 相比,网络延迟应该不是问题。
作为 ElasticCache 的缓存的第二个属性是您正在对其进行预热并使用数据库中的实时数据对其进行保温。你永远不应该期望你的缓存作为一个整体是最新的,因为后台的数据一直在变化。预计会丢失集群中的缓存节点(与大型系统中的任何其他故障一样),因为您的系统应该相当快地预热新创建的缓存节点。ElasticCache 将为您替换故障节点,但您需要用缓存数据再次填充它。
关于可用区之间的冗余,您可以查看 AWS描述:
在不同的可用区设置冗余缓存集群
Amazon ElastiCache 监控您的缓存节点的运行状况,并在发生网络分区、主机硬件或软件故障时替换它们。但是,鉴于缓存的短暂性,缓存节点替换开始为空(也称为“冷”),并且根据您的工作负载模式,可能需要一些时间来重新填充数据(也称为“预热”)。此外,Amazon ElastiCache 提供的自动替换功能仅限于单个可用区。如果您的应用程序对缓存节点的故障恢复或“预热”时间很敏感,或者您希望增强对可用区级别故障的容错能力,您可能希望在不同的可用区中部署冗余 ElastiCache 集群。
管理数据冗余的方法之一是让您的应用程序将所有缓存写入应用到这些可用区中的缓存节点。如果主可用区中的一个或多个缓存节点发生故障,您可以将读取定向到辅助可用区中的相应缓存节点,而 Amazon ElastiCache 会恢复主可用区中的缓存节点。
可用区之间的延迟通常在 2ms 左右,所以不,这通常不是问题。
我真的需要更多地了解您如何使用它才能解决您问题的第二部分。由于它只是一个缓存层,因此应用程序通常只能在降级模式下运行,直到 AWS 修复问题或您进行手动干预。或者,可以将应用程序设计为自动故障转移到不同可用区中的第二个集群。发生这种情况时,缓存将不得不从持久数据存储中重建。您可以让缓存未命中发生,也可以在应用程序开始使用它之前先启动它。