缓存系列之二:CDN与其他层面缓存

一:内容分发网络(Content Delivery Network),通过将服务内容分发至全网加速节点,利用全球调度系统使用户能够就近获取,有效降低访问延迟,提升服务可用性,CDN 第一降低机房的使用带宽,因为很多资源通过CDN就直接返回用户了,第二解决不同运营商之间的互联,因为可以让联通的网络访问联通让电信的网络访问电信,起到加速用户访问的目的, 第三:解决用户访问的地域问题,就近返回用户资源。
百度CDN:https://cloud.baidu.com/product/cdn.html
阿里CDN:https://www.aliyun.com/product/cdn?spm=5176.8269123.416540.50.728y8n
腾讯CDN:https://www.qcloud.com/product/cdn

1.1:用户请求的具体流程:

1.2:关于302调度:
如用的是是联通的网络,但是设置了一个电信的DNS,或者电信的用户设置了一个联通的DNS,在刚建立连接的时候CDN法获取到用户的真实IP,而是只能获取到用户的local DNS而判定用户是联通还是电信的网络,假如设置了错误的运营商DNS会被调度到错误的CDN 边缘节点,当和边缘节点连接之后就可以获取到用户的真实IP从而判断用户是联通还是电信的网络,如果是电信的网络被调度到了联通的CDN边缘节点或者是电信的网络被调度到了联通的CND边缘节点,那么可以给用户再发送一个302重定向的回复,用户的浏览器再根据新的地址进行连接,即可访问到正确的CND 边缘节点。

1.3:内容分发与分层:
提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,另外CDN可以将数据根据访问的热度不通而进行不通级别的缓存,例如访问量最高的资源访问CDN 边缘节点的内存,其次的放在SSD或者SATA,再其次的放在云存储,这样兼顾了速度与成本。

1.4:CND的主要优势:
缓存-缓存到最快的地方如内存,缓存的数据准确命中率高,访问速度就快
调度准确-将用户调度到最近的边缘节点
性能优化-CDN 性能相关
安全相关-抵御攻击等

1.5:自建CDN优缺点:
nginx+squid、nginx+varnish、nginx+ATS等方式可以自建
优点:
自建CDN 比较灵活,可以在访问用户较多的地方多部署服务器
成本比较容易控制
缺点:
费用高
团队技术要求高
问题不便排查,出问题不容易搞的定

二:应用层缓存:
2.1:应用程序级别的缓存:
指的是编译性语言需要编译成二进制可执行代码,比如c/c++/go等,其编译好之后就可以直接运行,另外还有解释性语言,比如php/python先编译成operate code即中间码也叫字节码,中间码不能直接运行需要解释器解释成机器码之后才能执行,因此中间码也算是缓存,php在5.5.0之后已经绑定了OPCache扩展,对于PHP 5.2,5.3,5.4等版本中可以使用PECL 扩展中的OPcache库,在5.5版本之前可以使用APC/Xcache等进行缓存也可以实现,但是5.5之后已经内置OPcache 就不需要APC和Xcache了,开启的话在编译PHP的时候使用–enable-opcache即可,因此使用PHP 推荐使用5.5之后的版本并打开OPcache以提升性能,另外如果在开启OPcache的情况下使用了软连接的方式部署代码会导致代码不更新,当代码更新之后需要重启php-fpm才可以识别并将新的代码进行编译成字节码并通过解释器解释给访问用户,apache 的mod_cache现在一般不使用,nginx的FastCGI缓存会导致代码代码更新后用户访问不生效,因此也不使用,所以动态语言就使用OPcache,FastCGI会导致不生效就直接关闭。

2.2:动态页面静态化:
将java的动态页面静态化,比如将每个具体产品的web页面静态化为html文件,然后通过nginx 的rewrite功能发布,即用户最终访问到的某个产品的web 页面是静态的页面,静态页面的访问速度是比较快的,生成的静态页面可以通过nfs、rsync、分布式存储等方式推送到各web服务器,如果静态页面生成的信息是错误的,可以将信息更改后通过推送平台重新生成新的web页面并同步到各web服务器,平时可以通过每间隔几个小时自动生成静态页面,比如每6小时生成一次动态页面并同步到各web服务器。

三:其他缓存:
3.1数据缓存
3.1.1:分布式缓存:redis、memcached
3.1.2:数据库:MySQL的Innodb缓存、MYISA缓存

3.2:系统层:
3.2.1:操作系统
CPU缓存(L1的数据缓存和L1的指令缓存)、二级缓存、三级缓存
内存:buffer和cache、内存表缓存

3.3:物理层:
3.3.1:磁盘缓存:磁盘有自己的缓存,用RAID 卡的时候磁盘的缓存是关闭的。
3.3.2:RAID 卡缓存:服务器在使用raid 卡的时候磁盘的缓存默认是关闭的,避免因为突然断电而导致的缓存里面的数据丢失,看看到磁盘的换粗是关闭的,因为raid 卡可以带电池供电。
3.3.3:RAID 卡的基本操作命令:
查看当前RAID卡缓存策略
MegaCli64 -LDinfo -Lall -aAll
Default Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU

Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU
第一部分:
WriteBack:写缓存策略
WriteThrough:直接写入磁盘,不使用RAID卡缓存。
第二部分:
ReadAheadNone:不开启预读
ReadAhead:开启预读,在读操作的时候,预先把后面顺序的数据载入raid卡缓存,在顺序读的环境中能提供很好的性能,但是在随机读的环境中反而降低读的性能(适合文件系统,不适合数据库系统)
ReadAdaptive:自适应预读,在缓存和I/O空闲时选择预读,默认策略。
第三部分:
Direct:读操作不缓存到RAID卡缓存。
Cached:读操作缓存到RAID卡缓存。
第四部分:如果BBU(电池)出现问题是否启用Write Cache
No Write Cache if Bad BBU:如果BBU出现问题不使用Write Cache,从WriteBack自动切换到WriteThrough,默认配置。
Write Cache OK if Bad BBU: 如果BBU出现问题仍启用Write Cache,这种配置是非常不安全的,除非是有UPS或者双电源的情况下。
RAID卡策略更改
修改WriteBack:
MegaCli64 -LDSetProp -WB -Lall -aAll
修改WriteThrough:
MegaCli64 -LDSetProp -WT -Lall -aAll
修改No Write Cache if Bad BBU:
MegaCli64 -LDSetProp -NoCachedBadBBU -Lall -aAll
修改Write Cache OK if Bad BBU:
MegaCli64 -LDSetProp -CachedBadBBU -Lall -aAll

4.其它相关命令
查看机器型号 # dmidecode | grep"Product"
查看厂商 # dmidecode| grep "Manufacturer"
查看序列号 # dmidecode | grep "Serial Number"
查看CPU信息 # dmidecode | grep "CPU"
查看CPU个数 # dmidecode | grep "Socket Designation: CPU" |wc –l
查看出厂日期 # dmidecode | grep"Date"
查看充电状态 # MegaCli64 -AdpBbuCmd-GetBbuStatus -aALL |grep "Charger Status"
显示BBU状态信息 # MegaCli64 -AdpBbuCmd-GetBbuStatus –aALL
显示BBU容量信息 # MegaCli64 -AdpBbuCmd-GetBbuCapacityInfo –aALL
显示BBU设计参数 # MegaCli64 -AdpBbuCmd-GetBbuDesignInfo –aALL
显示当前BBU属性 # MegaCli64 -AdpBbuCmd-GetBbuProperties –aALL
查看充电进度百分比 # MegaCli64 -AdpBbuCmd-GetBbuStatus -aALL |grep "Relative State of Charge"
查询Raid阵列数 # MegaCli64 -cfgdsply -aALL|grep "Number of DISK GROUPS:"
显示Raid卡型号,Raid设置,Disk相关信息 # MegaCli64-cfgdsply –aALL
显示所有物理信息 # MegaCli64 -PDList-aALL
显示所有逻辑磁盘组信息 # MegaCli64 -LDInfo -LALL–aAll
查看物理磁盘重建进度(重要) # MegaCli64 -PDRbld-ShowProg -PhysDrv [1:5] -a0
查看适配器个数 #MegaCli64 –adpCount
查看适配器时间 #MegaCli64 -AdpGetTime–aALL
显示所有适配器信息 #MegaCli64 -AdpAllInfo–aAll
查看Cache 策略设置 # MegaCli64 -cfgdsply -aALL|grep Polic

时间: 2024-08-03 04:22:51

缓存系列之二:CDN与其他层面缓存的相关文章

ArcGIS 高级地图缓存技术[4] 地图缓存进阶(二)——修改已经发布缓存服务的缓存级别

如上图所示,红箱子里有很多缓存管理的工具,这里我们要用的是里面的管理地图服务器缓存比例. 下图中,服务器输入本机,然后选择我们需要调整比例尺级别的服务,这个工具适用于我们的缓存已经发布,例如我们已经发布到 500 比例尺,现在我们想将缓存发布到 200 比例尺,这里我们追加一个 200 比例尺,然后在到我们服务缓存发布界面单独发布 200 比例尺的缓存即可. 单独更新或追加某一比例尺级别的缓存 单独更新某一级别的缓存,(如果是追加一个缓存级别,则用 1.2.2 里的方法先增加一个缓存级别再进行本

Tokyo Tyrant(TTServer)系列(二)-启动参数和配置

启动参数介绍 ttserver命令可以启动一个数据库实例.因为数据库已经实现了Tokyo Cabinet的抽象API,所以可以在启动的时候指定数据库的配置类型. 支持的数据库类型有: 内存hash数据库 内存tree数据库 hash数据库 B+ tree数据库, 命令通过下面的格式来使用,'dbname'制定数据库名,如果省略,则被视作内存hash数据库. ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pi

Sql Server来龙去脉系列之二 框架和配置

数据库对象 数据库维持了一系列表存储所有对象.数据类型/约束/配置项/资源等,在2008种我们叫他们为system base tables,并且这些表我们默认是看不到的.我们可以通过管理员登陆数据库,然后执行脚本: USE master; SELECT name FROM sys.objects WHERE type_desc = 'SYSTEM_TABLE'; 能查看到几十条数据.一般我们是不能查看到这些表里边的任何数据,只有通过DAC方式连接数据库才能查看到数据.这些数据主要被数据库引擎使用

CRL快速开发框架系列教程二(基于Lambda表达式查询)

本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(

缓存系列之一:buffer、cache与浏览器缓存

一:缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级.二级缓存是保存了CPU最近经常访问的数据,内存是保存CPU经常访问硬盘的数据,而且硬盘也有大小不一的缓存,甚至是物理服务器的raid 卡有也缓存,都是为了起到加速CPU 访问硬盘数据的目的,因为CPU的速度太快了,CPU需要的数据硬盘往往不能在短时间内满足CPU的需求,因此PCU缓存.内存.Raid 卡以及硬盘缓存就在一定程度上满足了CPU的数据需求,即CPU

java基础巩固系列(二):Integer与int之间的区别

在JDK1.5之后引入了自动装箱(autoboxing)与自动拆箱(unboxing),这让很多对java的初学者感到很疑惑,我刚才也是其中一员. 首先,有一些基本的概念需要了解: 1.Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2.Integer是一个类,用Integer声明一个变量是一个对象类型(或者说引用类型):int是基本类型,用int声明的变量是非对象类型,即不能在其上调用方法. 3."=="作用于对象上的时候,其比较的是对象的引用本身

WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现

原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过

CDN技术之--内容缓存工作原理

有CDN前的网站服务技术–硬件扩展:高成本,灵活性和可扩展性比较差–镜像技术(mirroring):镜像服务器安装有一个可以进行自动远程备份的软件,每隔一定时间,各个镜像服务器就会到网站的源服务器上去获取最新的内容–缓存技术(caching):缓存代理缓存被访问过的内容,后续的相同内容访问直接通过缓存代理获得服务–CDN:是缓存技术的基础上发展起来的,是缓存的分布式集群实现 从技术层面看,Web架构的精华有三处:–超文本技术HTML实现信息与信息的连接:–统一资源标志符URI实现全球信息的精确定

yum 系列(二) yum 常用命令

yum 系列(二) yum 常用命令 一.yum 常用命令 yum 命令:http://man.linuxde.net/yum yum 是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理 RPM 软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装. yum 提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记.