我在这里阅读了很多帖子,也在网上冲浪,但也许我问的问题不对。我知道在集群可用之前,Redis目前是主/从模式。然而,我想知道是否有人可以告诉我如何在逻辑上配置Redis以满足我的需求(或者如果它不是正确的工具)。
场景:
我们在美国的两端有两个网站。我们希望客户端能够在每个站点上以高容量进行写入。然后,我们希望每个客户端也能够在其站点上执行读取。但是,我们希望数据在姐妹站点的写入时间小于50ms内可用。考虑到我们有足够的带宽。有没有办法配置redis来满足我们的需求?我们的最大写入大小大约是5k,通常要小得多。主要的一点是,即使在默认情况下不支持,我如何have2正在相互同步的母版。
发布于 2011-10-10 03:48:42
Tom回答的问题是,您并没有运行任何类型的集群,您只是在向两个服务器写入数据。如果你想确保它们之间的一致性,这是一个问题。考虑当您的客户端向远程服务器写入失败时会发生什么。是否撤消对本地的写入?当您无法写入远程服务器时,应用程序会发生什么情况?当你不能从本地阅读时会发生什么?
第二个问题是Joshua提出的基本物理问题。对于往返,理论上最小处理时间为38ms,而(三个系统)两端的理论最大处理时间为12ms。我想说,在这种情况下,期望有点过高,带宽与延迟无关。您可能有一个10 and的管道,而这些计时仍然存在。也就是说,在12毫秒内在整个欧洲大陆传输5k也是一个很高的要求。你确定你有连接能力在50ms内传输5k数据,更不用说12了吗?我在整个欧洲大陆的私有无利用电路上看到ping时间超过50ms - ping无法传输5k数据。
您将如何保持这两个不相关的服务器同步?如果你真的需要整个欧洲大陆低于50ms的延迟,上述理论上的最佳情况意味着你有12ms的时间来运行同步算法。即使只有一次查询来检查另一台服务器上的数据,也意味着您处于50ms窗口之外。如果数据不同步,您如何修复它?考虑到上面的时间安排,我看不出在50ms内同步是可能的。
我建议重新审视基本的设计要求。具体地说,为什么会有这样的要求?在整个欧洲大陆往返50ms的延迟要求通常是营销或缺乏对细节的关注的迹象。我敢打赌,如果你分析需求,你会发现这个50ms的窗口是多余的,也是不必要的。如果不是,并且数据同步实际上很重要(可能),那么将需要有人确定是否值得花费大量的额外努力来编写同步代码,或者甚至可以将其保持在50ms的窗口内。跨洲低于50ms的延迟数据同步不是一个简单的问题。
如果不需要同步,为什么不简单地运行一台服务器呢?您可以在大陆的另一端使用一个仅用于恢复目的的从属。当然,这仍然意味着在最好的情况下,您有12ms的时间来获取数据并返回。我不会指望50ms的往返操作+延迟+5k/10k跨大陆的数据传输。
发布于 2011-09-24 21:01:34
以光速穿越美国大约需要19毫秒。<50ms将很难实现。
http://www.wolframalpha.com/input/?i=new+york+to+los+angeles
发布于 2011-09-24 07:25:54
这可能最好作为客户端的一部分来处理--只要让客户端同时写入两个节点即可。写入通常不需要同步,因此发送额外的命令不会影响拥有本地节点所获得的性能。
https://stackoverflow.com/questions/7519971
复制相似问题