【问题标题】:Redis Session State Provider manage fallbackRedis Session State Provider 管理回退
【发布时间】:2016-01-15 06:14:05
【问题描述】:

我使用 Redis 作为会话状态提供程序,但由于我有很多用户,有时 Redis 会出现故障。所以我想要一个默认的 Session State Provider 以防第一个出现故障。

这可能吗? 还有其他解决方案吗?

谢谢

【问题讨论】:

标签: asp.net redis session-state-provider


【解决方案1】:

ASP.NET 的会话管道不支持回退到不同的会话提供程序,因此必须将回退功能融入 Redis 会话状态提供程序。但是 Redis 提供程序只与 Redis 对话,因此您必须自己执行此操作,或者在您自己的 project 分支中,或者通过创建您自己的自定义会话提供程序来继承 SessionStateStoreProviderBase 并包装对 @987654323 的访问@(以及在您的提供程序检测到 Redis 中断时您想使用的任何后备存储逻辑)。

但是您现在看起来一团糟:您应该将数据临时存储在哪里(一个进程内缓存?现在您正在谈论粘性会话。SQL Server?还有另一个要管理的服务器)......而且, Redis 恢复后,如何使用临时存储中的活动会话重新填充它?有很多问题需要思考,难怪微软不支持。

因此,正如@MatíasFidemraizer 所暗示的那样,您最好的选择是将精力集中在改进 Redis 部署上,以便它能够处理您的负载,并使用 Redis Sentinel 设置主从复制以进行自动故障转移。如果工作量太大,那么有许多商业解决方案可以为您完成繁重的故障转移(我工作的公司有一个非常简单的产品,名为 ScaleOut SessionServer

【讨论】:

    【解决方案2】:

    由于我有很多用户,有时 Redis 会出现故障

    我怀疑这应该是幕后的原因。你有足够的内存吗?可能有很多原因,但我怀疑问题是“很多用户”,除非你是谷歌、Twitter 或一些流量极高的网站,毕竟,Redis 也是为那个用例设计的......

    所以我会跳过你如何切换状态提供者的部分,我会去:

    还有其他解决方案吗?

    答案是Redis Sentinel (follow this link to learn more about it)

    来自官方文档:

    Redis Sentinel 为 Redis 提供高可用性。在实际中 这意味着使用 Sentinel 您可以创建 Redis 部署 它可以在没有人为干预的情况下抵抗某些类型的故障。

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 2015-05-17
      • 1970-01-01
      • 2021-04-22
      • 2012-02-12
      • 1970-01-01
      • 2019-02-12
      • 2021-09-13
      • 2011-03-27
      相关资源
      最近更新 更多