首页 > 解决方案 > Redis 宕机并带走了我们的应用程序。未来如何缓解这种情况?

问题描述

今天,我们的 Heroku 托管应用程序崩溃了,这意味着我们公司无法访问或使用我们的任何内部工具。这至少可以说是令人担忧的。

经过多次调试,结果是 Redis 因英国的 AWS 服务器崩溃而崩溃……欢乐时光。我们只将 Redis 用于 actioncable,因此一个连接工具的简单崩溃会导致整个应用程序崩溃,这似乎真的很奇怪。

以前有没有人遇到过这样的问题,并且知道将来有办法缓解这种情况?

标签: ruby-on-railsredisactioncable

解决方案


欢迎来到俱乐部 :) 有一些策略可以防止将来出现这种情况:

  1. 一般来说,您需要在您的 redis 客户端上实现断路器模式。

实现取决于您的应用程序架构,很难说使用它 - 它会 100% 匹配您的设计。

简而言之:您描述了规则,这些规则控制何时根本不发出所有到 Redis 的流量。比如:10 次连接在 30 秒内失败。当这种情况发生时,流量不会被打开,但会在一段时间后检查 Redis 是否返回,一旦返回 - 流量将被发送到 redis。

  1. 使用 Redis Sentinel 或 Redis Cluster(两者都需要您的 redis 客户端支持)。在这种情况下,您有一些故障转移模式 - 在 Redis 网站上阅读更多内容。

推荐阅读