我们在天天都在刷抖音,每天都有都差不多就几千个视频被发出去,我们都知道,一般数据存储在数据库中,比如mysql中,而mysql并发量很明显支撑不起来,那我们该怎么处理呢?
这个时候就需要一个缓存像redis,在数据存储之前将数据先放入并发量高的数据库中,最后在慢慢同步到数据库,这是文本类数据,那对象存储呢,就需要用的一个技术叫CDN了
CDN原理是什么呢?
CDN是文件缓存技术,本质是在全球各地添加存储服务器,当我们添加数据的时候会把数据缓存带全球各个服务器,当访问的时候,会先解析最近的服务器找到CNAME值,其次通过CNAME值解析ip地址访问数据
文本,数字类型数据缓存,数据库对应mysql如下
如图所示
用户读取数据 :首先会经过redis缓存层,缓存层第一次会去预热一些数据,之后冷热分离(就是将一些数据放入缓存设置过期时间,用户访问热key将一直存在,没有被经常访问的会自动消失),访问缓存层拿到数据,如果缓存层没有就回去mysql中拿到数据并放入缓存,以便下一次从缓存中获取用户写入数据 :当用户写入数据,一般会将数据写入到redis中,之后通过mq异步消费,logstash类进行同步到数据库,应为redis是基于分布式的ap理论,不需要保证强一致性
数据一致性问题:
1.先更新缓存再更新数据库,万一更新失败缓存就是错误的数据
2.先删除缓存后更新数据库延迟删除缓存,防止缓存在更新数据库的时候被修改,延迟双删
音频,视频,表情包资源数据缓存,数据库对应OSS如下
如图所示,CDN服务会在全球各地搭建服务器,并缓存一份内容给全球各个服务器
用户读取数据 :只需要读取到最近的服务器即可,比如我在上海访问北京,访问的其实是上海本地的服务器
用户写入数据 :当用户写入数据的时候,会将数据携入最近的服务器,比如我在上海写入数据,会写入上海的服务器,并且同步到全国各地服务器,北京访问也会在本地的服务器获取
像阿里云和腾讯云存储,比如阿里云的DCND,不需要在代码中修改,只需要在控制台加上服务即可,阿里服务器分布在各地会自动配置CDN
今天我们就以阿里云的OSS为例,进入网址阿里云免费试用 - 阿里云
1.首先必须对我们的网站主域名进行备案,否则用不了DCDN,(备案登记是我国大陆地区对网站的一项监管措施,必须合法完成备案登记后才能在我国大陆地区运营网站)点右上角这个备案
看这个视频就行,把自己的网站域名进行备案
2.之后查询dcdn,全球加速DCDN这个,点进去进入全站加速控制台DCDN控制台,添加DCDN域名
先购买,我这个是免费的,之后添加刚刚备案的域名
我也没有可以备案的,就照着填就行,不会可以搜索
添加加速域名后,系统会为您分配一个CNAME域名,CNAME域名经过DNS解析后将指向DCDN服务器
3.点击云解析DNS配置CNAME值通过配置CNAME域名实现网站加速_全站加速 DCDN(DCDN)-阿里云帮助中心
使用DCDN就成功了,之后进入还需要一些配置,比如可以访问私有bucket,搜索或者gpt都可