Redis在Web服务器上读取副本

Redis在Web服务器上读取副本,redis,scalability,Redis,Scalability,我目前正在开发一个系统,大量使用redis提供一系列web服务 该系统的关键标准之一是快速响应 目前布局(忽略负载平衡器等)如下: 2台前端播放框架2.x服务器 2台作业处理/持久性播放框架2.x服务器 1台MySQL服务器 2台Redis服务器,1台主服务器,1台从服务器 在这个设置中,redis提供两个任务——作为共享缓存和消息总线 目前,前端服务器承载着一个与Redis整体交互的服务 前端服务器尝试在读取服务器池(当前为主服务器和1个从服务器)之间平衡读取,但作为Redis,它们需要向

我目前正在开发一个系统,大量使用redis提供一系列web服务

该系统的关键标准之一是快速响应

目前布局(忽略负载平衡器等)如下:

  • 2台前端播放框架2.x服务器
  • 2台作业处理/持久性播放框架2.x服务器
  • 1台MySQL服务器
  • 2台Redis服务器,1台主服务器,1台从服务器
在这个设置中,redis提供两个任务——作为共享缓存和消息总线

目前,前端服务器承载着一个与Redis整体交互的服务

前端服务器尝试在读取服务器池(当前为主服务器和1个从服务器)之间平衡读取,但作为Redis,它们需要向主服务器进行写入。它们通过在队列上发送消息来处理缓存更新等,这些消息由作业处理服务器接收

作业处理服务器对Redis写入服务器进行阻塞侦听(BLPOP),并在必要时处理任务。它们是MySQL的唯一连接

目前,读取副本服务器是一个专用服务器,如果当前主服务器出现故障,则可以将其切换到写入主服务器

我在考虑在每个前端服务器上安装一个redis的读取副本从属服务器,这意味着读取延迟将更少,写入(队列消息)将通过单独的连接推送到写入服务器

如果我需要扩展,我可以添加更多的前端服务器和读从属服务器

对我来说,这听起来像是一个双赢,因为即使写服务器暂时退出,前端服务器仍然可以至少从其本地从属服务器读取数据并相应地采取行动


有人能想出为什么这不是一个好主意吗?

我理解这种方法的优点。。。但是考虑一下:当你只需要缩放一个组件(即FE服务器或ReDIS)而不是另一个组件时会发生什么?例如,更多的流量可能意味着你需要更多的应用服务器来处理它,而Redise的负载将大大减少。另一方面,如果您的数据集增长和/或Redise上的负载增加,则需要扩展这些数据集,而不是应用程序


设计应该符合您的要求,并且您建议的设置的简单性具有明确的吸引力(即,为了扩大规模,只需添加另一个相同的乐高积木),但根据我微薄的经验-任何听起来太好而不真实的东西通常都是。从长远来看,即使这对你现在起作用,你可能会发现自己在路上陷入困境。我的建议-将你的Redis与你的应用服务器分开,处理和/或在网络周围工作,并确保每一层都可以单独使用和扩展。

谢谢你的回复。是的,我明白你的意思。我想,因为服务器上的服务非常具体,实际上根本不密集,所以我拥有大量备用ram的潜在优势。如果我的redis内存需求膨胀,那么这是不切实际的。这是一个艰难的过程,因为我可以从两方面看到好处。