热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

网站系统二级缓存架构应用

作者Ayou:http:sudone.com架构图示:1、合并穿透当前端一级缓存采用了两台以上的squid后,同一个访问量较大的链接,假设其三分钟更新一次,每台squid就会每三分钟向后台发送一个请求更新这个链接,那么很显然两台squid就会每三分钟发送两个请求,n台squ

作者Ayou:http://sudone.com

架构图示:

 

 

1、合并穿透

当前端一级缓存采用了两台以上的squid后,同一个访问量较大的链接,假设其三分钟更新一次,每台squid就会每三分钟向后台发送一个请求更新这个链接,那么很显然两台squid就会每三分钟发送两个请求,n台squid就是n个。因此在负荷很重的系统中,在不停增加squid的同时,后台服务器的压力也会不停增长。这时使用二级缓存就可以将数台squid的穿透再做一层合并,假设是一台机做二级缓存,那么前端n台squid对同一链接的n次穿透,在经过这级squid后,就变成了1个请求发向后台,对后台服务器来说,压力就可以保持稳定。

2、保护

在出现某些异常情况时,前端缓存可能会全部失效,譬如前端缓存由于重启或其它原因清理了数据,squid这样的软件碰着bug时也会导致缓存失效。这时请求就会集成一股很大的冲击波,后台服务器扛不住的话一下就被击垮了。架上二级缓存后,二级缓存至少拥有相当于前端一台缓存的负荷能力,因此前端失效一台缓存后二级缓存是肯定能稳当地接下工作的,日常使用中因为前端缓存并不会跑在100%性能下,因此就算两三台前端缓存的量全穿过来二级缓存也能顶下,于此同时后台服务器的访问量仍然是保持稳定的。

3、可变

二级缓存在机器配置和服务器软件上未必和一级缓存是一个样的,甚至并不是一台机而是一个架构,这样二级缓存就能起到更多的作用。举几个例子:

1)nginx->proxy_store

nginx的proxy_store可以为静态地址提供高性能的缓存,而且还防住了类似xx.html?abc这种糟糕链接的穿透,在某网站的新闻和跟帖的架构中大量采用此种搭配。

2)nginx->squid

nginx的proxy_store虽然有较高的性能,但它只能缓存静态地址或rewrite后的地址,不能缓存带?和参数的那种链接,因此用nginx搭配squid也是一种方案,相比于proxy_cache来说,squid更为成熟,而且可以很方便地扩容。在动态地址较多的场合可以考虑此种搭配。

3)图片架构

图片服务是最容易出现容灾问题的地方,url_hash固然能解决容灾,但是它会在用户和cache之间多放一层纯代理,在超巨型系统中,多那么一层纯代理会有很大可能惹出麻烦来,而将这层纯代理放在架构的另一个地方——二级缓存,这个方案会更易于为人所接受。这时,前端缓存主要就负责处理并发,只用内存来存储,容灾就算达到很极端的情形,一个地址只缓存了几秒就被强制剔除,也可以拦住很多的请求了;而二级缓存就主要负责处理穿透,通过url_hash和很多硬盘来提供巨大的存储容量和IO性能,将请求全部挡在这一层;后台就轻松地保护好数据即可。



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • Dockerfile构建镜像的指令和说明
    本文介绍了Dockerfile是用来构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。通过创建一个Dockerfile文件并编写内容,可以快速创建自定义的镜像。文章还提供了一个示例,展示了如何使用Dockerfile创建一个本地构建的nginx镜像,并通过docker images命令查看镜像的版本。希望本文对大家的学习有所帮助,并希望大家多多支持编程笔记。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
失心人2702939300
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有