缓存技术和直播平台缓存总结
一、背景
数据库、磁盘、网络的访问速度慢,链路过长,各种媒介的访问的时间
当某个数据被访问过一次之后,过不了多久时间就会被再一次访问,存在大量这样的数据
二、缓存带来的好处
缓存数据通常来自内存,比磁盘上的数据有更快的访问速度。
缓存存储数据的最终结果形态,不需要中间计算,减少CPU资源的消耗。
缓存降低数据库、磁盘、网络的负载压力,使这些I/O设备获得更好的响应特性。
三、缓存思维导图总结
四、合理的使用缓存
频繁修改的数据:这种数据如果缓存起来,由于频繁修改,应用还来不及读取就已失效或更新,徒增系统负担。一般说来,数据的读写比在2:1以上,缓存才有意义。
没有热点的访问: 缓存使用内存作为存储,内存资源宝贵而有限,不能将所有数据都缓存起来,如果应用系统访问数据没有热点,不遵循二八定律,即大部分数据访问不是集中在小部分数据上,那么缓存就没有意义,因为大部分数据还没有被再次访问就已经被挤出缓存了。
数据不一致与脏读:一般会对缓存的数据设置失效时间,一旦超过失效时间,就要从数据库中重新加载。因此应用要容忍一定时间的数据不一致,如卖家已经编辑了商品属性但是需要过一段时间才能被买家看到。在互联网应用中,这种延迟通常是可以接受的,但是具体应用仍需慎重对待。还有一种策略是数据更新时立即更新缓存,不过也会带来更多系统开销和事务一致性的问题。因此数据更新时通知缓存失效,删除该缓存数据,是一种更加稳妥的做法。
缓存雪崩:缓存是为了提高数据读取性能的,缓存数据丢失或者缓存不可用不会影响到应用程序的处一一它可以从数据库直接获取数据。但是随着业务的发展,缓存会承担大部分的数据访问压力,数据库已经习惯了有缓存的日子,所以当缓存服务崩溃的时候,数据库会因为完全不能承受如此大的压力而宕机,进而导致整个网站不可用。这种情况称作缓存雪崩,发生这种故障,甚至不能简单的重启缓存服务器和数据库服务器来恢复网站访问。
缓存预热:缓存中存放的是热点数据,热点数据又是缓存系统利用LRU(最近最久未用)算法对不断访问的数据筛选淘汰出来的,这个过程需要花费较长的时间,在这段时间,系统的性能和数据库负载都不太好,那么最好在缓存系统启动的时候就把热点数据加载好,这个缓存预加载手段叫做缓存预热(warm up )。对于一些元数据如城市地名列表、类目信息,可以启动时加载数据库中全部数据到缓存进行预热。
缓存穿透:如果不恰当的业务、或者恶意攻击持续高并发的请求某个不存在的数据,因为缓存没有保存该数据,所有的请求都会落到数据库上,会对数据库造成很大的压力,甚至崩溃。一个简单的对策是将不存在的数据也缓存起来(其value值为null ),并设定一个较短的失效时间。
五、直播平台中缓存
阿里直播介绍
1) 通过采集设备将直播流推送至阿里云直播中心,推送的视频流通过CDN边缘节点进行加速保证上行传输的稳定性。移动端的推流工具可以使集成阿里云提供的直播推流SDK进行开发。
2) 视频流推送至阿里云直播中心后,可按需对视频流进行转码,录制,截图,安全审核等处理。
3) 处理好的视频流通过CDN内容分发网络下发至观众的设备中进行播放。移动端的播放设备可以继承阿里云提供的播放器SDK进行开发。
4) 直播视频除了可以进行转码截图等操作外,还可以进行直播转点播的操作,将录制下来的视频转至点播系统中再进行点播播放。
5) 边缘推流:边缘推流功能优先将视频推流至最优CDN节点,保证用户访问的都是最佳的上行网络,减少因上行传输带来的卡顿、拉流缓慢的问题。
功能优势
高覆盖:全球1500+CDN节点,国内700+,覆盖主流城市和地区。
智能化:优先接入距离用户最近的CDN节点,保证内容传输的稳定。
2.自研发的直播平台架构图
整个直播平台使用以下关键技术实现高性能:
CDN:将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率
直播:是基于领先的内容接入与分发网络和大规模分布式实时视频处理技术(含窄带高清TM)打造的音视频直播平台,提供易接入、低延迟、高并发、高清流畅的音视频直播服务
视频点播(VOD):集视频采集、编辑、上传、媒体资源管理、自动化转码处理(窄带高清TM)、视频审核分析、分发加速于一体的一站式音视频点播解决方案
本地redis:本地数据缓存
分布式对象文件:图像和视频访问加速
网络是按照流量来计算,如果直接访问应用服务器流量是CDN流量的3倍价格,CDN又可以减轻整个国内网站的负载,阿里云有直播和点播解决方案,已经相关服务的解决方案,开发门槛和效率大大提高,仅仅配合就可以使用并提供相关API和SDK,从成本、开发效率和维护保障上来更合算。
评论