草庐IT

caching - Redis集群-网络延迟

coder 2023-11-07 原文

有一个新的 Redis 集群设置,我认识的一个团队正在我公司工作,以改进基于 Redis 的应用程序数据缓存。设置如下,一个 Redis 集群,有一个 Redis 主服务器和许多从服务器,比如 40-50(但当应用程序扩展时可以增加更多),每个虚拟机一个 Redis 实例。有人告诉我,此设置有助于部署在每个虚拟机上的服务器中的应用程序查询本地 Redis 实例中存在的数据,而不是查询网络中的实例,以避免网络延迟。定期地,Redis master 只更新任何修改或新创建或删除的数据(由关系数据库支持的数据),比如每 5 秒左右。这将启动与所有 Redis 从实例的数据同步操作。 Redis(从)的数据消费者(部署在所有虚拟机上的应用程序)读取更新的值进行处理。对于应用程序从数据中心网络内的 Redis 实例查询时所面临的网络延迟问题,这种方法是否正确?当 Redis 主节点与其所有从节点同步数据时,此设置是否会产生大量网络流量?

我无法从互联网上找到很多关于此的答案。非常感谢您对此提出意见。

最佳答案

这种架构的相关性在很大程度上取决于工作量。以下是重要标准:

  • 写入和读取操作之间的比率。显然,读取操作越多,架构就越相关。 IMO 的主要好处不一定是延迟 yield ,而是可扩展性、它带来的额外可靠性以及网络资源消耗。

  • 本地 Redis 访问成本与远程 Redis 访问成本之间的比率。不要假设远程 Redis 访问的唯一成本是网络延迟。它不是。在我的系统上,本地 Redis 访问成本约为 50 us(平均,工作量非常低),而远程访问成本为 120 us(平均,工作量非常低)。网络延迟约为 60 us。使用您自己的数据在您自己的系统/网络上测量同类数字。

这里有一些建议:

  • 不要对多个从实例使用单个 Redis 主实例。它将限制系统的可扩展性。如果你想扩展,你需要建立一个奴隶的层次结构。例如,让 master 复制到 8 个 slave。每个从站复制到在您的 64 个应用程序服务器上本地运行的 8 个其他从站。如果您需要添加更多节点,您可以在主节点或从节点级别调整复制因子,或者在此树中再添加一层以获得极高的可扩展性。它为您带来了灵 active 。

  • 考虑在应用程序和本地从站之间使用 unix 套接字,而不是 TCP 套接字。如果它对延迟和吞吐量都有好处。

关于您的最后一个问题,您确实需要评估本地和远程的平均延迟时间来决定这样做是否值得。请注意,Redis 用于同步主从的协议(protocol)接近于正常的客户端服务器流量。应用于主站的每个 SET 命令也将应用于从站。因此网络带宽消耗是相似的。所以最后,这实际上是您期望的读取次数和写入次数的问题。

关于caching - Redis集群-网络延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306013/

有关caching - Redis集群-网络延迟的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. ruby - Sinatra set cache_control to static files in public folder编译错误 - 2

    我不知道为什么,但是当我设置这个设置时它无法编译设置:static_cache_control,[:public,:max_age=>300]这是我得到的syntaxerror,unexpectedtASSOC,expecting']'(SyntaxError)set:static_cache_control,[:public,:max_age=>300]^我只想将“过期”header设置为css、javaascript和图像文件。谢谢。 最佳答案 我猜您使用的是Ruby1.8.7。Sinatra文档中显示的语法似乎是在Ruby1.

  3. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  4. ruby-on-rails - 在所有延迟的作业之前 Hook - 2

    是否可以在所有delayed_job任务之前运行一个方法?基本上,我们试图确保每个运行delayed_job的服务器都有我们代码的最新实例,所以我们想运行一个方法来在每个作业运行之前检查它。(我们已经有了“check”方法并在别处使用它。问题只是关于如何从delayed_job中调用它。) 最佳答案 现在有一种官方方法可以通过插件来做到这一点。这篇博文通过示例清楚地描述了如何执行此操作http://www.salsify.com/blog/delayed-jobs-callbacks-and-hooks-in-rails(本文中描述

  5. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  6. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  7. ruby - caches_page :all - 2

    有什么方法可以告诉Rails3在给定的Controller中缓存所有页面,而不必在调用caches_page时列出所有页面?我尝试了caches_page:all,但它不起作用。 最佳答案 有点像实现的错误,但我刚刚尝试过它并且它适用于Rails3.0.6:caches_page:except=>[] 关于ruby-caches_page:all,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/que

  8. ruby-on-rails - ApplicationController :Class 的未定义方法 `caches_action' - 2

    我正在尝试升级到Rails4beta1,但遇到了一些问题。简而言之,这就是我的应用程序Controller的样子。classApplicationControllercaches_action在Rails4中移到了它自己的gem中,因此包含gem应该可以解决问题。gem"actionpack-action_caching",github:"rails/actionpack-action_caching"但是当我运行我的请求规范或在浏览器中访问该应用程序时,我收到此错误。app/controllers/application_controller.rb:3:in`':undefinedm

  9. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  10. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

随机推荐