范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

12缓存数据库成为瓶颈后,动态数据的查询要如何加速?

  通过前面学习,你已经了解了在高并发大流量下,数据库层的演进,包含数据库层的主从分离和分库分表。
  测试你的系统架构已经可以支撑几十万的DAU了,整体的架构如下图:
  整体上来看,数据库分成了主库和从库,数据也被切分到了多个数据库节点上。但是随着并发的增多,存储数据的增多,数据库的磁盘IO逐渐成了系统的瓶颈,我们需要一种更快的组件来降低请求响应时间,提升系统性能。这时就引入了我们今天的主角:  缓存
  什么是缓存,如何将它的优势最大化呢?
  本节课缓存篇的总纲,从缓存的定义、缓存的分类和缓存的优劣势三个方面来了解缓存的设计思想和理念。再用4节课针对性的掌握缓存的正确使用姿势,以便在实际的工作中更好的使用缓存提升系统的性能。  什么是缓存
  缓存是一种存储数据的组件,它的作用就是让对数据的请求更快的返回。
  我们经常把缓存放到内存中来存储,所以就有人把内存跟缓存画上了等号,完全外行。作为业内人士,你要知道我们在某些场景下可能还会使用SSD作为冷数据的存储。比如360开源的Pika就是使用SSD解决Redis容量瓶颈的问题。
  实际上,凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的,都可以称为缓存。那么说道这里,我们就需要知道常见硬件组件的延时情况是什么,这样做方案的时候可以有直观的印象。所幸,业内已经有人总结出这些数据了,我们整理如下:
  从这些数据可以看到,做一次内存寻址大概需要100ms,而做一次磁盘的查找需要10ms,从这里 我们就可以看出内存作为存储介质和磁盘作为存储介质性能上的差距,所以,内存是一种最常见的缓存数据介质。
  缓存作为一种常见的空间换时间的性能优化手段,很多地方应用案例:  1、缓存案例
  Linux 内存管理是通过一个叫做 MMU(Memory Management Unit)的硬件,来实现从虚拟地址到物理地址的转换的,但是如果每次转换都要做这么复杂计算的话,无疑会造成性能的损耗,所以我们会借助一个叫做 TLB(Translation Lookaside Buffer)的组件来缓存最近转换过的虚拟地址,和物理地址的映射。TLB 就是一种缓存组件,缓存复杂运算的结果,就好比你做一碗色香味俱全的面条可能比较复杂,那么我们把做好的面条油炸处理一下做成方便面,你做方便面的话就简单多了,也快速多了。这个缓存组件比较底层,这里你只需要了解一下就可以了。
  在大部分的笔记本,桌面电脑和服务器上都会有一个或者多个 TLB 组件,在不经意间帮助我们加快地址转换的速度。
  再想一下,你经常刷的抖音,平台上的短视频实际使用内置的网络播放器来完成  ,网络播放器接受的是数据流,将数据下载下来之后,经过分离音视频流,解码等流程之后输出到外设设备上。
  如果我们在打开一个视频的时候才开始下载数据的话,无疑会增加视频的打开速度,并且播放过程中会有卡顿,所以我们播放器中通常会设计一些缓存的组件,在未打开视频时候缓存一部分视频数据,比如我们打开抖音,服务端可能一次会返回三个视频信息,我们再播放第一个视频的时候,播放器已经帮我们缓存了第二个 三个视频数据,这样在播放第二个视频的时候,给用户 秒开的感觉。
  除此之外,我们知道的http协议也是有缓存机制的。当我们第一次请求静态资源时,比如一张图片,服务端除了返回图片信息,在响应头里面还有一个 etag 的字段。浏览器会缓存图片信息及这个字段的值,当下一次在请求的时候,请求头里会有一个 if none match 字段,并且把 etag的值写进去发给服务端。服务端比对图片信息是否有变化,如果没有,返回一个304的状态,浏览器会继续使用缓存的图片信息,通过这种缓存协商的方式,可以减少网络传输数据大小,从而提升页面展示的性能。
  2、缓存与缓冲区
  讲了缓存案例,想必你对缓存已经有了一个直观且形象的了解了。除了缓存,我们再开发过程中还经常听到一个相似的名词——
  缓冲区。那么什么事缓冲区,跟缓存有什么区别呢?
  缓存可以提高高低速设备的访问速度,或者减少复杂耗时计算带来的性能问题,理论上可以通过缓存解决所有关于慢的问题,比如从磁盘随机读取数据慢,从数据库查询数据慢只是不同的场景耗用的成本不同。
  缓冲区则是一块临时存储数据的区域,这些数据后面会被传输到其他设备上缓冲区更像一种消息队列的模式,用以弥补高速设备和低速设备 的速度差,比如我们将数据写入磁盘时,并不是直接刷盘,而是写到一块缓冲区里面,内核会标记这个缓冲区为脏,当经过一段时间或者缓冲区比例到达一定阈值时,有单独的线程把脏数据刷到硬盘上。这样就避免了每次写数据带来的性能问题。
  以上就是缓存和缓冲区的区别,那么我们常用的缓存有哪些?我们又该如何使用缓存才能将他的优势最大化呢?  缓存分类
  我们日常开发中,常见的缓存主要有:静态缓存、分布式缓存、热点本地缓存。
  对于日均PV几十亿的门户网站来说,如果每天发布的内容都是保存在数据库,页面展示的时候通过穿透数据库来读取,这样显然来说是不合适的,即使我们使用了分布式缓存,基于成本考虑仍然是不划算的。
  所以我们的解决思路是每篇文章在录入的时候渲染成静态页面  ,放置在所有的前端Nginx或者squid等web服务器上,这样用户访问到的优先就是服务器上缓存的静态页面,再对旧的文章执行一定的清理之后依然可以保证90%以上的命中率。
  这种缓存只能针对静态数据来缓存,对于动态的缓存你可以选择分布式缓存,那么为什么要考虑本地缓存呢?
  答案是我们遇到极端的热点数据查询的时候,热点本地缓存主要部署在应用服务器的代码中,用于阻挡热点查询对于分布式缓存或者数据库的压力。
  比如某位明星的热点时间,会短时间引起很多围观用户,造成瞬间大量请求命中某一个缓存节点或者一个数据库分区,速度极快。
  那么我们通常使用的本地缓存方案有哪些呢?如 hashmap,guava cache , ehcache等,他们和应用程序部署在同一个文件中,是不需要跨网络调度,速度极快,所有可以用来阻挡某些热点查询。
  比如电商系统中有这样一个场景:首页的商品信息是每隔一段时间会更新的,但是展示是不需要实时的可以设置每隔30S更新一次,这个场景我们就可以利用guava cache 把商品信息缓存在本地,然后每隔30s 去后台重新拉取更新后的商品信息,在缓存起来。
  首先,初始化的操作如下:  CacheBuilder> cacheBuilder = CacheBuilder.newBuilder().maximumSize(maxSize).recordStats(); //设置缓存最大值 cacheBuilder = cacheBuilder.refreshAfterWrite(30, TimeUnit.Seconds);  //设置刷新间隔 LoadingCache> cache = cacheBuilder.build(new CacheLoader>() {    @Override    public List load(String k) throws Exception {      return productService.loadAll(); // 获取所有商品    } });
  这样你获取商品信息的时候可以调用Loading Cache 的 get 方法,就可以优先从本地缓存中获取商品信息,如果缓存不存在就是使用CacheLoader中的逻辑从数据库加载数据。
  由于本地缓存部署在应用服务器的,而我们的应用服务器通常部署多台,当数据更新时,我们不能确定哪台服务器本地中了缓存,更新或者删除所有服务器的缓存不是一个好的选择,所以我们通常会等待缓存过期,因此这种缓存的有效期很短,通常为分总或者秒级,便面返回给前端脏数据。  缓存的不足
  缓存的主要作用提升访问速度,从而抵抗住高并发请求,那么缓存是不是能解决一切问题呢,肯定不是,凡是事务都有两面性,我们更需要了解它的不足,从而更好的发挥缓存的优势。
  首先,缓存适合读多写少的场景,最好带有一定的热点属性  ,缓存毕竟受限于存储介质不可能缓存所有的数据,当数据有热点属性才能保证一定的缓存命中率,所以一旦当场景读少写多的时候,缓存的作用就不那么明显了。
  其次,缓存会带来系统的复杂度,并且存在数据不一致的风险  。当更新数据库成功,更新缓存失败的时候,缓存中就会存在脏数据,对于这种场景我可以考虑使用较短的国企时间和手动清理缓存方式解决。
  再次,之前提到的缓存通常使用内存作为存储介质,但是内存不是无限的  。因此我们再使用缓存的时候要注意评估存储量级,对于存储成本极大的数据,慎用缓存方案。
  最后,缓存给运维也带来一定的成本。  运维需要对组件有一定的了解。
  缓存虽然有这么多问题,但是对系统的性能提升毋庸置疑的,所以我们在走架构方案设计的时候一定要把缓存考虑进去。
  缓存不仅仅是一种组件的名字,更是一种设计思想,任务加速读请求的组件和设计方案都是缓存思想的体现。

全新比亚迪海豹曝光,我突然看不懂特斯拉车主的审美了新能源汽车市场的竞争可谓相当激烈,绝大部分的厂家都持续看好这个赛道。目前最引人关注的两家新能源车企分别为特斯拉以及比亚迪。这两家车企目前在国内做得比较好,也经常有人拿两者的产品进行1200亿表示赔不起,知网崩了知网,对大多数人来说并不陌生,在学术工作者中流传着这样一句话,没有经历一次论文知网查重的洗礼,人生是不完整的,可见中国知网在中国论文市场的比例可以用垄断来形容,天价的费用,无形之中知网崩了,此前涉嫌垄断问题被市场监管局调查鞭牛士4月30日消息,今日晚间,有网友在新浪微博反应称,知网崩了刷新一下是登录状态,再刷一下又没登录了,然后登录的时候忘了密码去改密码又说我用户名ip不对,刷新成登录状态的时候下载IP地址开放打脸了多少国外生活的大博主4月份,IP地址开发功能陆续在微博今日头条抖音小红书快手知乎等平台陆续开放,既用户在使用平台时候会显示用户所属省份和地区,有些平台甚至还会在部分评论或回答中显示用户IP属地小尾巴,大疆运动相机大疆Action2运动相机采用模块化设计,通过磁吸卡扣结构将相机与屏幕拓展模块拼接,即可实现自拍时也能看清自己的脸DJIACTION2DJIACTION2觉得大疆重新定义运动相机的索尼将于5月11日推出新款Xperia手机索尼重新启动Xperia系列,再次焕发活力,新款即将来袭。不久前索尼在其YouTube官方频道上发表了一篇帖子,内容虽然简短,但明确证实了新款Xperia系列的诞生,索尼称之为盛大单反相机选多大储存卡合适?单反相机选多大储存卡合适单反相机的储存卡应该怎么选,到底哪种比较合适,多大的才好,这其实是很有讲究的,但是很多人估计都不怎么重视。我们来看看,相机储存卡的选择都需要注意些什么事项呢一块不够再拼一块,苹果手机末代M1芯片让人瞥见微处理器的未来最近,很多人的M1芯片版苹果MacBook和MacMini到货了。在不少测试中,我们看到了令人期待的结果M1芯片跑分比肩高端X86处理器,对标的CPU是Ryzen4900HS和英特小米和荣耀没那么差劲,这三款手机放心买,五一换新机刚好合适这两年关于小米和荣耀手机的负面一大堆,小米发热发烫烧WIFI,荣耀抄袭华为大绿边,仿佛他们就是最差的手机一样,其实并不是这样,看销量就知道,这两个品牌手机还是非常让大家认可的,那么IntelCPU的发展历程(二)。在2013年世界500强排行榜中,Intel排在第183位。8位处理器Intel8008808080851972年Intel推出了8008,它是4004的拓展。8008是8位微处买冰箱要记住,认准选购三大要点,告别气味不会结霜冰箱已经成为了人们生活中的必备家电,它是唯一一款需要全天候运转的家用大电器,所以我们选择冰箱的时候,也需要重点考虑它的使用体验。目前市面上的冰箱品类很多,价格方面也存在很大的差距,
Pixel6Pro感人配置遭曝料,Pixel5命运悲惨跌至感人价有消息称,Pixel6Pro配备120Hz显示器,该手机配备12G内存,配备潜在变焦摄像头,支持电池共享,也就是反向无线充电,屏幕分辨率为3120x1440,UWBwell1200全运会山东第一有人不服全运会金牌榜明明是山东第一,但偏偏看到很多文章说是广东第一,不知道他们是怎么算的,即使按照奥运会时期美国的算法也是山东第一啊!感觉和他们无法讲道理,你给他看金牌榜,他给你讲历史,你iPhone13震撼来袭,iPhone12价比百元机,果粉服气9月15日凌晨1点,苹果正式发布iPhone13系列新产品,售价5199元。四款新iPhone都继承了直角中框设计,刘海区域缩小了20。iPhone13mini和iPhone13的AppleWatch7重磅发布,Watch6跌至感人价创历史9月15日凌晨,苹果举行秋季新产品发布会,带来了iPhone13系列新型iPad和iPadmini。此外,苹果还发布了新的AppleWatchSeries7,在屏幕充电耐久性等方面易图通与北汽新能源达成合作,未来有望实现高阶自动驾驶近日,易图通科技(北京)有限公司(以下简称易图通)与北京新能源汽车股份有限公司(以下简称北汽新能源)达成合作,双方将就L3L4级自动驾驶相关项目进行深入研发,共同推动自动驾驶相关应数字孪生技术,让酷炫的智慧城市不再遥不可及人们与智慧城市的距离还可以再缩短一些,得益于数字孪生技术,使得人们可以先在虚拟映射中完成规划。智慧城市对于不同的人,不同的角色所处不同立场都会有不同的定义。在普通人眼中上班不拥堵,高精地图现状分析与实现方案研究摘要随着自动驾驶技术研究的逐渐深入和智能汽车精细化监管需求的不断增长,高精地图的重要性逐渐凸显。高精地图是近几年兴起的产物,国内外有关高精地图数据采集生产可视化表达等诸多研究取得了国标自动驾驶分级标准正式出炉2020年或为L3级自动驾驶元年我国正式拥有自己的自动驾驶汽车分级标准!3月9日,工信部正式发布汽车驾驶自动化分级推荐性国家标准报批公示,而正式标准拟于2021年1月1日开始全国实施。该标准明确了我国汽车驾驶自动从安全的角度看自动驾驶站在2020年年尾回看智能驾驶,这一年黑科技层出不穷,无疑是一片琳琅满目的壮观景象超大的显示屏娱乐功能强大智能座舱高度数字化OTA远程升级几乎是新车型标配ADAS辅助驾驶功能也越来揭秘矢量地图的前世今生这是一期矢量地图成长故事自传。凭谁问廉颇老矣,尚能饭否?用来形容今天的主人公也许是最为贴切不过了。第一章高贵的矢量地图前世我的前世是手绘纸质地图,下文就统称地图啦,所以不要再问我到王志勤车联网支持实现无人驾驶的思考无人驾驶是车辆作为运载工具智能化网联化发展的核心应用功能,也是车联网智慧交通产业发展的核心应用服务。网联无人驾驶则是在车辆智能化基础上,通过车联网实现车与车车与路等的互联和信息交互