大型网站架构系列:缓存在分布式系统中的应用(一)

news/2024/5/14 7:57:05/文章来源:https://blog.csdn.net/weixin_34162695/article/details/85922013

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。

本文是缓存在分布式应用第一篇文章,介绍缓存的原理,缓存的分类,缓存的设计,CDN缓存(原理,架构参考和技术实践),反向代理缓存(原理,Squid架构实践和常用代理缓存之间的比较)。本文主要是自己的学习总结和网络文章摘录,供学习之用。

本次分享大纲

  1. 缓存概述
  2. CDN缓存
  3. 反向代理缓存
  4. 分布式缓存
  5. 本地缓存
  6. 缓存架构示例
  7. 参考资料
  8. 分享总结

一、缓存概述

缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题提供高性能的数据快速访问

1.1缓存的原理

(1)将数据写入/读取速度更快的存储(设备);

(2)将数据缓存到离应用最近的位置;

(3)将数据缓存到离用户最近的位置。

1.2缓存分类

在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用。

(1)CDN缓存;

(2)反向代理缓存;

(3)分布式Cache;

(4)本地应用缓存;

1.3缓存媒介

常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等;

缓存的内容:文件,数据,对象;

缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式)

1.3缓存设计

缓存设计需要解决以下几个问题:

(1)缓存什么?

哪些数据需要缓存:1.热点数据;2.静态资源;

(2)缓存的位置?

CDN,反向代理,分布式缓存服务器,本机(内存,硬盘)

(3)如何缓存的问题?

  • 过期策略

1.固定时间:比如指定缓存的时间是30分钟;

2.相对时间:比如最近10分钟内没有访问的数据;

  • 同步机制
  1. 实时写入;(推)
  2. 异步刷新;(推拉)

二、CDN缓存

CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂,跨运营商的网络访问会很慢。为了解决跨运营商或各地用户访问问题,可以在重要的城市,部署CDN应用。使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

2.1CND原理

CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

(1)未部署CDN应用前

网络请求路径:

请求:本机网络(局域网)——》运营商网络——》应用服务器机房

响应:应用服务器机房——》运营商网络——》本机网络(局域网)

在不考虑复杂网络的情况下,从请求到响应需要经过3个节点,6个步骤完成一次用户访问操作。

(2)部署CDN应用后

 

网络路径:

请求:本机网络(局域网)——》运营商网络

响应:运营商网络——》本机网络(局域网)

在不考虑复杂网络的情况下,从请求到响应需要经过2个节点,2个步骤完成一次用户访问操作。

与不部署CDN服务相比,减少了1个节点,4个步骤的访问。极大的提高的系统的响应速度。

2.2 CDN优缺点

(1)优点(摘自百度百科)

1、本地Cache加速:提升访问速度,尤其含有大量图片和静态页面站点;

2、镜像服务:消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量;

3、远程加速:远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度;

4、带宽优化:自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

5、集群抗攻击:广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量。

(2)缺点

1.动态资源缓存,需要注意实时性;

解决:主要缓存静态资源,动态资源建立多级缓存或准实时同步;

2.如何保证数据的一致性和实时性需要权衡考虑;

解决:

  1. 设置缓存失效时间(1个小时,最终一致性);
  2. 数据版本号;

2.3CND架构参考

摘自《云宙视频CDN系统》

 

2.4 CND技术实践

         目前,中小型互联网公司,综合成本考虑,一般租用第三方CDN服务,大型互联网公司,采用自建或第三方结合的方式。比如淘宝刚开始使用第三方的,当流量很大后,第三方公司无法支撑其CDN流量,淘宝最后采用自建CDN的方式实现。

淘宝CDN,如下图(来自网络):

 

三、反向代理缓存

反向代理是指在网站服务器机房部署代理服务器,实现负载均衡,数据缓存,安全控制等功能。

3.1缓存原理

反向代理位于应用服务器机房,处理所有对WEB服务器的请求。如果用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。通过降低向WEB服务器的请求数,从而降低了WEB服务器的负载。

 

反向代理一般缓存静态资源,动态资源转发到应用服务器处理。常用的缓存应用服务器有Varnish,Ngnix,Squid。

3.2 Squid示例

Squid 反向代理一般只缓存静态资源,动态程序默认不缓存。根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要 HTTP 头标记:

Last-Modified: 告诉反向代理页面什么时间被修改

Expires: 告诉反向代理页面什么时间应该从缓冲区中删除

Cache-Control: 告诉反向代理页面是否应该被缓冲

Pragma: 用来包含实现特定的指令,最常用的是 Pragma:no-cache

 

Squid 反向代理加速网站实例

(1)通过DNS的轮询技术,将客户端的请求分发给其中一台 Squid 反向代理服务器处理;

(2)如果这台 Squid 缓存了用户的请求资源,则将请求的资源直接返回给用户;

(3)否则这台 Squid 将没有缓存的请求根据配置的规则发送给邻居 Squid 和后台的 WEB 服务器处理;

(4)这样既减轻后台 WEB 服务器的负载,又提高整个网站的性能和安全性。

3.2 代理缓存比较

常用的代理缓存有Varnish,Squid,Ngnix,简单比较如下:

(1)varnish和squid是专业的cache服务,nginx需要第三方模块支持;

(2)Varnish采用内存型缓存,避免了频繁在内存、磁盘中交换文件,性能比Squid高;

(3)Varnish由于是内存cache,所以对小文件如css,js,小图片啥的支持很棒,后端的持久化缓存可以采用的是Squid或ATS;

(4)Squid功能全而大,适合于各种静态的文件缓存,一般会在前端挂一个HAProxy或nginx做负载均衡跑多个实例;

(5)Nginx采用第三方模块ncache做的缓冲,性能基本达到varnish,一般作为反向代理使用,可以实现简单的缓存。

 参考:

http://www.cnblogs.com/itfly8/p/5562610.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_701461.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样使用CSS3媒体查询(Media Queries)制作响应式网站

自本周开始博主将开始同大家一起研究响应式web设计,CSS3 Media Queries是入门,本周更新,博主将给大家分享media queries的一些常用的用法及注意事项。 Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,…

squid正反向代理-加快网站访问速度

配置squid代理服务器加快网站访问速度一:squid服务概述Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服…

名称:53KF网站客服系统 v3.0.1官方版

2019独角兽企业重金招聘Python工程师标准>>> 名称:53KF网站客服系统 v3.0.1官方版 版本:3.0.1 软件大小:107 KB 软件语言:简体中文 软件授权:免费版 应用平台:Win7/Win2003/Vista/Win2000/WinXP…

《网站设计 开发 维护 推广 从入门到精通》——2.3 页面设计创意思维

本节书摘来自异步社区《网站设计 开发 维护 推广 从入门到精通》一书中的第2章,第2.3节,作者: 何新起 , 娄彦杰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 页面设计创意思维 一个网站如果想确立自己的形象,就必须…

【全栈项目上线(vue+node+mongodb)】04. 怎么在一台主机上面部署多个网站,详细操作指南...

怎么在一台主机上面部署多个网站 使用Nginx的虚拟化配置 环境 使用一键安装lnmp环境请参考 https://segmentfault.com/a/11... 第一步:执行 lnmp vhost add lnmp vhost add 输入自己要绑定的域名,比如我现在需要绑定 itnote.cn 我在这个地方输入&#xf…

java门户网站项目代码_基于jsp的企业门户网站-JavaEE实现企业门户网站 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的企业门户网站, 该项目可用各类java课程设计大作业中, 企业门户网站的系统架构分为前后台两部分, 最终实现在线上进行企业门户网站各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类企业门户网站相关的实体…

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼,后来写了一篇博客(《后台管理UI的选择》)介绍了选择过程与常用后台UI,令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间,最后界面效果还是不佳&#xf…

谈谈读“SEO实战密码”的一些感悟

写在前面:SEO是叱咤网络营销、线上营销十多年的工具之一,当前不管是搜索引擎平台、电子商务平台、任何线上平台,都还在参考引用和不断完善SEO这门营销艺术。作为一新兴而又颇受争议的网络营销工具,从发展、进阶、火热、低迷的这一…

专家也要小心,HTTPS网址的网站就一定安全吗?

随着越来越多网站使用 SSL以提升在 Google搜寻中的排名(请参考安全牛之前的报道”谷歌调整搜索排名算法,激励网站采用HTTPS安全协议“),使用者将必须了解到 HTTPS 前缀不再是他们判断网站是否安全的识别标志。他们必须在输入认证数…

15 -Flask构建弹幕微电影网站-基于角色的访问控制

本章内容: 基于角色的访问控制 已上线演示地址: http://movie.mtianyan.cn 项目源码地址:https://github.com/mtianyan/movie_project 基于角色的访问控制 角色的访问控制: 将职责和功能划分一个角色,比如电影管理员,预告管理员。 模型: Auth…

菜鸟站长应该如何防止网站被恶意攻击

随着互联网的发展,很多人都已经有了自己的网站。无论是企业,商家还是个人。以前,做一个网站都得在上千上万元。如今,网站建设的的价格也不再那么贵了,几百块钱就可以做一个网站。而且,这些几百块钱的网络公…

漫画:为什么一到年底,部分网站就会出现日期混乱?

作者 | 漫话编程本文经授权转载自漫话编程(ID:mhcoding)2019年最后一天,在家里看着跨年晚会,享受着这一年最后一天的闲暇时光,女朋友在旁边玩手机。看了一会之后她突然问我一些很奇怪的问题。于是我拿过他的…

百度或者Google---SEO优化

google和百度的技术差别: 1.百度还认不清哪个是原创的 2.google蜘蛛不够百度快 4.google排名结果随时变化 流量、权重、权威、内容、用户体验、用户关注度等等细节的排名,已表达了SEO的算法。 重要搜索引擎的网站登录入口地址: http://www.webmasterhome.cn/seo/add…

_网站建站基础第十一课(域名解析服务器环境linux安装宝塔)

在服务器,域名(国内备案)购买好之后,就可以开始搭建网站了,建站要为服务器解析好域名,然后配置好服务器环境,服务器环境就以linux系统宝塔面板为例给大家演示:域名备案成功后,进入服务器商的控制…

御用导航官方网站提醒提示页_电脑上使用便签记录工作计划如何设置闹钟定时提醒?...

平常工作日程事务比较多时,就很容易忘掉一些工作,这个时候很多工作族会选择经常使用的电脑工具来记录每日的工作计划,电脑如何设置闹钟定时提醒工作计划呢?电脑便签可以用来记录工作计划闹钟定时提醒的软件,建议使用敬…

关于大型网站技术演进的思考(七)--存储的瓶颈(7)

本文开篇提个问题给大家,关系数据库的瓶颈有哪些?我想有些朋友看到这个问题肯定会说出自己平时开发中碰到了一个跟数据库有关的什么什么问题,然后如何解决的等等,这样的答案没问题,但是却没有代表性,如果出…

高并发网站解决方案

2019独角兽企业重金招聘Python工程师标准>>> 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单。随着互联网业…

服务器安装织梦网站数据库,DedeCMS数据库及服务器空间更换教程

网站空间不稳定会影响SEO优化的效果,因为会降低搜索引擎对于网站的信任度判断,特别是最近使用香港空间的网站,会经常性遇到网站无法打开,或者打开速度非常慢,为了彻底解决稳定问题,唯有更换服务器空间&…

jar 工程我怎么在网页上url访问某一个方法_url及url参数与seo网站优化的关系

短视频,自媒体,达人种草一站服务首先我还是援引下百度百科关于url的定义。统一资源定位符(Uniform Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网…

网博士自助建站系统_自助建站的优缺点介绍

自助建站我想大家都不陌生了,如果还不知道自助建站是什么的同学可以去小编之前的文章看看,有简单的介绍。话说回来,虽然自助建站越来越普及了,但是很多企业的老板并不知道自助建站到底和传统建站有什么区别?目前为止&a…