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

news/2024/5/13 10:04:57/文章来源:https://blog.csdn.net/weixin_33719619/article/details/93964567

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

本文是缓存在分布式应用第一篇文章,介绍缓存的原理,缓存的分类,缓存的设计,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,一般作为反向代理使用,可以实现简单的缓存。

转载于:https://www.cnblogs.com/itfly8/p/5562610.html

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

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

相关文章

android 开发工具网站

2019独角兽企业重金招聘Python工程师标准>>> 常用的android开发工具,包括android studio,adt-bundle,sdk等等 AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的An…

AppScan大型网站分割扫描

大型网站扫描到后边会出现扫不动,大型网站扫描时间过长等情况。但如果要在短时间内扫描完某个大型网站,这样就可以进行分割扫描,把一个大型站点分割为多个较小的再进行扫描分割。有两种分割扫描的方法:(都可以较短时间…

网站平台架构演变史(二)

上篇文章大致降了网站架构的一个大致发展趋势,这篇咱们讲讲数据库。数据库在大并发的情况下是最容易出现问题的,往往都是由于写操作引发的网站访问缓慢或者崩溃,之前说过12306就是这个问题。 大并发的时候,打个比方,上…

技术网站存在的意义

想找个实现下面标题的仿抖音视频浏览的小程序,找到了好多,看到这个,而且收费,抱着一丝希望,花钱下载的,结果内容一点也不感人,下载的内容,网上类似的例子太多了,然后这个…

[转]企业网站首页设计常见的6种布局方式

在 群里和大家交流时,看到太多的网页设计师发布企业站的个人作品,设计中总是摆脱不了大框套小框的设计布局思路,不加思索的跳入单一的网页布局形式中,于是 就有了把企业站常用的页面布局方式总结一下的想法,让大家包括…

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性...

简介 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、…

著名反恶意软件组织关闭博客网站 抗议 NSA 利用恶意软件攻击公共机构

近期,国外一篇博客披露,著名的反恶意软件组织MalwareMustDie决定关闭其博客网站,以抗议NSA(美国国家安全局)利用黑客工具入侵无辜国家的教育和公共服务器。 文章指出,Shadow Brokers(影子经纪人)团队之前曾泄露NSA黑客工具&#x…

SharePoint Online 创建门户网站系列之图片滚动

前 言 创建SharePoint Online栏目我们之前已经介绍过了,具体就是内容编辑器方式、自带WebPart方式和JavaScript读取后台数据前台做展示的三种; 但是,对于复杂的展示来说,这些方式还是会比较难以实现,虽然对于首页的图片…

10个很棒的学习Android 开发的网站

1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会。 2. Android Guides - CodePath CodePath是国外一…

美明尼苏达州法院网站遭遇持续DDoS网络攻击

美国明尼苏达州法院系统今天宣布由于受到一系列严重的DDoS网络攻击导致部门网站(mncourts.gov)在去年12月宕机时间长达10天。根据发送给订阅者的备忘录,该州的司法部门表示首次攻击发生在12月8日,使网站宕机1天时间;第二次攻击发生在12月21日&#xff0c…

阿里云+wordpress搭建个人博客网站【小白专用的图文教程】

【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4965163.html 【正文】 在阿里云上搭建使用个人博客主要分为以下几个步骤: 1、购买阿…

网站全国IP访问大屏幕显示

接触Python有一段时间了,经常用来做一些好玩的事,前几天跟领导聊天说到,要是能够实现全国各地访问流量的显示,那就最好了,刚好要申请一些大屏幕来,所以就想到了做这个。确实稍微大点的公司都有这类东西&…

2、使用Python3爬取美女图片-网站中的妹子自拍一栏

代码还有待优化,不过目的已经达到了 1、先执行如下代码: 1 #!/usr/bin/env python2 #-*- coding: utf-8 -*-3 4 import urllib5 import requests6 import random7 from bs4 import BeautifulSoup8 import json9 10 # 获取图片路径并保存 11 image_list …

【译】如何对网站进行优化提速?

快速的页面加载对提升搜索引擎排名、网站转化率和整体的用户体验是非常重要的。网站页面的加载速度也是衡量网站性能的一个重要因素。 如果网站不是以最好的性能在运行,迟缓的加载会让你在低的排名和搜索流量上花费更大的代价。页面的加载速度会对用户的行为和转化率…

python多线程爬取图片_python 多线程爬取网站图片(详解)

1网站整个图片的意思是,网站有用的图片,广告推荐位,等等除外萌新上路,老司机请略过第一步找出网站url分页的规律选择自己要爬取的分类(如果要所有的图片可以不选,显示的就是所有的照片,具体怎么操作请根据实…

SEO独家揭秘:搜索引擎如何识别链接作弊!

国内的搜索引擎在关于“外链”的文章里面,绝大多数会强调外链的价值,很少去强调链接背后的反作用,也就是今天要给大家深度解读的链接作弊。笔者在SEO领域从业多年,但是在搜索引擎链接分析这块,见证过各种链接对于排名的…

那些我不得不收藏的技术网站

文:祈澈姑娘程序员是一个庞大的集体,随着互联网物联网的不断发展,身边的程序员也越来越多了,技术交流网站亦是如此,下面总结的,是我们平时经常去的网站、博客、论坛等等,这里有互动式的在线课程…

python网站开发实例 flask_python-flask框架web服务接口开发实例

原博文 2020-01-17 16:40 − 一、flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。 二:安装框架 flask需要先安装再引用。pip install flask 安装成功见截图 三:flask开发接口流.…

Python在线学习网站大全

为什么80%的码农都做不了架构师?>>> Documentations Python Documentations The Python documentations are pretty much a must-read for those who want to learn the language, so Whether youre planning to use Python 3.x or stick with learnin…

纯html静态网站_建设网站时网站模板该怎么选?

点击上方“蓝字”关注我们  现在大部分企业网站都是基于企业网站模板制作,很多企业网站模板的设计和制作甚至数万块钱的定制建站更美观大气,而且对于企业来说,企业网站模板的存在,不但可以节省很大的资金,减少企业开…