缓存系列之二: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

转载于:https://www.cnblogs.com/reblue520/p/7327299.html

缓存系列之二:CDN与其他层面缓存相关推荐

  1. 缓存系列(一):什么是缓存

    1.缓存定义 存储在计算机上的一个原始数据复制集,以便于访问. 2.不同种类缓存 (1)本地缓存 本地缓存和应用同属于一个进程,使用不当会影响服务稳定性,所以通常需要考虑更多的因素,例如容量限制.过期 ...

  2. Redis系列(二):Redis缓存穿透和缓存雪崩是什么?

    一.Redis穿透 缓存穿透现象:用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询.发现也没有,于是本次查询失败.当用户很多的时候,缓存都没有命中,于是都 ...

  3. MySQL优化系列(二)--查找优化(1)(非索引设计)

    MySQL优化系列(二)--查找优化(1)(非索引设计) 接下来这篇是查询优化,用户80%的操作基本都在查询,我们有什么理由不去优化他呢??所以这篇博客将会讲解大量的查询优化(索引以及库表结构优化等高 ...

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

    缓存系列之一:buffer.cache与浏览器缓存 一:缓存是为了调节速度不一致的两个或多个不同的物质的速度,在中间对速度较快的一方起到一个加速访问速度较慢的一方的作用,比如CPU的一级.二级缓存是保 ...

  5. 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段

    2019独角兽企业重金招聘Python工程师标准>>> 剖析Elasticsearch集群系列之二:分布式的三个C.translog和Lucene段 博客分类: java 搜索引擎, ...

  6. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

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

    原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...

  8. 邮箱的创建及配置:Exchange2003系列之二

                  Exchange2003学习系列之二:邮箱的创建及配置 我们在上一篇文章中介绍了如何进行Exchange2003的安装,本文中我们介绍如何在Exchange2003中进行邮 ...

  9. springboot mybatis ehcache_SpringBoot入门建站全系列(十四)集成Redis缓存

    SpringBoot入门建站全系列(十四)集成Redis缓存 一.概述 本地缓存,就是使用应用内使用本地内存将数据暂缓存储,一般数据库的查询如果不怎么改动,可以用本地缓存暂存. 远程缓存,比如redi ...

最新文章

  1. android ListView中长按背景颜色可见性设置
  2. Object Pascal 中类型
  3. php 面向对象 特性,PHP面向对象三大特点学习
  4. 02 typedef
  5. 优秀!303篇论文获2020年度“优秀博士学位论文”!
  6. springMVC分析-1
  7. haproxy高可用
  8. SqlServer智能提示工具
  9. selenium+phantomjs截长图踩坑
  10. struts中ActionForm有什么作用?
  11. win7家庭普通版升级旗舰版 密钥
  12. 如何选择工业相机(转载)
  13. Mathtype(2),用于创建此对象的程序是 Equation。您的计算机尚未安装此程序或此程序无响应。
  14. 华丽而实用的Java图表应用
  15. ONOS(Open Network Operating System) from ONF
  16. DW-概率统计打卡task01
  17. XV6源代码阅读-虚拟内存管理
  18. HBase的协处理器(Coprocessor)、HBase如何使用二级索引、observer协处理器、 endpoint协处理器、Hbase 协处理器加载方式
  19. 2.zookeeper客户端使用与集群特性
  20. 不要嘀咕自己对新环境的适应能力

热门文章

  1. 常用的JS小功能整理
  2. Git Bash中npm配置,加速下载等作用
  3. linux下文件删除不了
  4. android 音乐app 进度条_让这些可爱的APP成为你的生活好帮手
  5. e3 v3服务器芯片组,请问e3 1231 v3搭配下面哪款主板性价比最高?最适合?为什么?
  6. java 验证码 添加背景图_java登陆界面怎么加背景图 会的我加你
  7. java 命令行读取_Java:从控制台(console,命令行)读取字符 | 学步园
  8. 升序排序中国_干货满满!6行python代码挑战展示2020下半年中国最娱乐的人气男明星人气排行榜top10!...
  9. 淘特“工厂直供模式”调研报告
  10. 产品案例:微信状态,有多牛逼?