推广

系统设计中需要了解的缓存技术

iseeyu3年前 (2024-02-21)推广130

数据中心

原文地址

摘要

你有没有注意到,如果你在一个网速很慢的环境下浏览网站,页面的文本加载比图片加载更快。然而,你稍后再访问同一网站时,你会发现页面加载速度很快。当你访问一个全新的网站,它需要比经常访问的网站(如Facebook或亚马逊)更多的加载时间。你知道为什么会这样吗?答案是缓存。

低网速下加载Instagram页面

上图是我的Instagram页面在网速慢的情况下的样子。正如您所看到的,显示了文本数据,而您无法看到图像,因为页面仍在加载。

提供用户最佳体验是提高留存率和用户粘性的关键。当今世界竞争激烈,由于糟糕的用户体验,业务受到影响。想象你正在一个视频网站上看你最喜欢的电视剧,但是视频一直在缓冲。你会在这样的网站上继续看吗?‘

缓存:其工作原理是“局部性引用”。缓存充当数据的本地存储,以加快查找或检索速度。缓存的主要目标是减少读延迟并提高应用程序的吞吐量。下一节我们看一个现实生活中的缓存案例类比。

缓存的现实类比

假设你每天都做晚餐。你需要不同的原料,蔬菜,香料等来准备食物。但是你每天都会去超市买菜吗?那太麻烦,太耗时了。所以,你会首先检查你的厨房或冰箱里有没有这些材料。这样就避免了去超市的麻烦。

冰箱就像蔬菜的缓存

在这里,你的冰箱就像一个缓存或本地蔬菜商店。使用缓存的最大好处是节省时间,你可以快速准备你的食物。

缓存工作原理

后端应用程序通常将数据存储在数据库中。当客户端要获取任何数据时,应用程序通过查询数据库,获取数据,并将其返回给用户。数据库服务器作为一个单独的进程运行,可以和应用服务器在不同的计算机上运行。

应用服务器从DB获取数据

从数据库读取数据非常耗时,因为它需要网络传输和从文件系统获取数据的IO操作。如果数据存储在缓存中,读取操作将会非常快。当客户机重复请求相同的数据时,从缓存中获取数据比从数据库中获取数据更有意义。

例如:如果一条twitter被广泛传播,所有的客户端都会试图获取同一条推文的数据。由于twitter有数百万用户,使用缓存将避免对数据库的数百万次调用。

此外,缓存还减少了数据库的负载。如果在缓存中读到数据,将省去数据库调用,从而减少数据库的压力。简单地说,可以将缓存看作存储键值对的哈希表。从缓存读取数据的过程如下图所示:

从Cache读取数据的过程

缓存的核心概念

TTL存活时间

缓存容量有限制的。必须清除缓存中应用服务器不再使用的条目。例如视频应用Netflix,服务器将把用户最常观看或最热门的视频缓冲到缓存中。它不需要存储收视率随着时间的推移而下降的视频。

数据淘汰策略

根据应用程序访问数据的方式,缓存可能在某个时间点被填满。因此,我们需要想出一种策略来从缓存中删除数据,腾出空间用于存储将来更有可能被访问的数据。

有多个缓存回收策略,比如:LRU (最近最少使用)、LFU (最不频繁的使用)、MRU (最近使用)等。这些策略使用预定义的逻辑从缓存中淘汰数据。我们将在下一节中讨论上述每一项。

LRU最近最少使用

此策略从缓存中删除最近使用最少的数据。一旦缓存满了,最近最少使用的数据就会从缓存中删除,最近读取的数据会添加到缓存中。

你可以想象Facebook在缓存中存储名人的照片。关注者的数据访问模式是对最近的照片感兴趣。当缓存满了,它将剔除最早添加的照片。

LFU最不经常使用的

此策略从缓存中删除最近使用最少的条目。一旦缓存满了,最不经常使用的条目就会从缓存中删除,最近访问的条目会添加到缓存中。

当你在发短信的时候输入任何一个单词,你的手机输入法就会推荐你选择多个单词,而不是输入整个单词。在内部,你的手机软件维护了一个缓存,包含了你输入的所有单词及其频率。

手机软件推荐单词补全

缓存稍后将删除使用频率最低的单词。如果多个单词之间存在关联,那么最近最少使用的单词将被排除。在上面的例子中,如果你开始使用“feature”,“features”,“feather”等词,它就会停止向你推荐“feat”这个词(因为它会从缓存中被删除)。

MRU最近最频繁使用

在MRU中,最近使用的条目被删除,而旧的条目则优先保存在缓存中。如果数据访问模式是用户不太可能查看最近访问过的条目,则使用该策略来淘汰数据。让我们看一个例子。

类似探探APP

上图是一种约会应用,通常会缓存用户的所有潜在匹配对象。当用户左右滑动个人资料时,应用程序不应该再次向用户推荐相同的资料。如果再次推荐,将导致糟糕的用户体验。有必要将最近阅读过的个人资料剔除。即应用程序必须从缓存中删除已经被用户刷过的数据。

缓存类型

直写式高速缓存

顾名思义,数据首先写入缓存,然后写入数据库。这种方式确保了缓存中的数据和数据库中的数据之间的一致性。在缓存上完成的每一次读都是最近一次写入的数据。

直写式缓存

然而,这种方法的缺点是应用程序写延迟增加。这种方法不适用于写比较多的系统。对于那些将数据持久化到数据库后需要频繁地重新读取数据的应用程序来说,这中方式是非常有用的。写时延可能会受到影响,但读时延和一致性会降低。

回写式高速缓存

从上面可以看出,直写式缓存不适用于大量写操作的系统,因为延迟可能会增加。另一种方法是先将数据写入缓存,并将数据标记为已修改数据(稍后在DB中更新)。

回写式高速缓存

使用异步作业可以定期读取缓存中所有修改过的条目,并在数据库中更新对应值。这种方法既不会影响读也不会影响写延迟。唯一的缺点是,由于缓存和DB之间的数据同步,会有延迟。由于数据库是数据的唯一来源,任何从数据库读取的应用程序都可能读取到旧数据。

像Youtube这样的网站使用回写式缓存来存储视频的观看次数。如果为每一个视频的每次观看而去更新数据库代价是很大的。将数据写入缓存,然后在数据库中同步是一个更好的解决方案。回写式缓存的使用可以降低读写时延。

Write Around缓存

一般后端应用程序会重读最常被读过的数据。在这种情况下,write around缓存被派上用场了。

write around 缓存

在这个策略中,数据库更新时不写入缓存。这避免了将不会被重新读取的数据加载到缓存。否则应用程序查询最近访问过的数据,就会导致缓存命中率下降。

分布式系统中使用的缓存示例

下面是开源缓存产品列表:

  • Redis
  • Memcached
  • VoltDB
  • Aerospike DBS
  • Apache Ignite

参考文献

  • List of In-memory databases
  • What is Caching?
  • Distributed Caching
  • Types of Caches
  • Tinder image
  • Cover image

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57507.html

相关文章

西安企业做百度推广,一个月花三千和花三万到底差在哪?

4|最近跟几个西安的老板聊天,发现一个挺有意思的现象:同样做百度推广,有人一个月花三千块,询盘不断;有人一个月砸三万,水花都没见着。问他们区别在哪,大多数人说不清楚,只知道'钱花了,没效果'。 5| 6|百度推广这东西,说复杂也复杂,说简单也简单。核心就一件事:让你的潜在客户搜某个词的时候,你的信息...

我想当策划,大学应该选什么专业?

我想当策划,大学应该选什么专业?

学,广告,传播,公关,这些专业其实都可以。另外也可以学像汉语言文学,以及一些跟文学相关的一些专业,会对你找工作有帮助。但是,你想从事这个这份职业,除了专业的学习之外,更多的是,你要在上学的时候积极参与一些更营销策划相关的社会实践。比如说你可以做一些兼职,比如说帮别人去写稿,...

服装市场营销策略分析,“定位不慎满盘皆输”

服装市场营销策略分析,“定位不慎满盘皆输”

不同的区域需要不同的策略,而不同的营销策略需要不同的销售思路来配合。因此,在研究女装产品销售思路之前,最好先对于市场与营销策略做一次深入地了解。1.市场区域化(market segmentation):目标营销的第一步,是将整个市场拆分成若干个同性质的小市场。2.目标市场的...

晚间悦读丨你的思维方式,决定你的人生高度!

晚间悦读丨你的思维方式,决定你的人生高度!

越长大,越发现,能够决定你人生高度的,往往是你的认知层次。 你的认知在哪个层级,你的人生就处在什么状态。你认知的高度,决定了你人生的高度。 那如何才能升级方式、提升认知能力呢?可以从这三个方面做出改变。 NO. 1 改变态度 有人...

编写项目营销策划方案六大要点

编写项目营销策划方案六大要点

现在商业发展非常迅速,的需求非常的大,但是要做好营销策划是有一定难度的,我把自己做营销策划的一些体会在这里分享给朋友们。营销策划方案六大要点我们先说项目营销策划方案这个话题。大部分的营销策划人都是在企业里工作,大部分项目之初都是来源于一个想法,创始人、老板或者创始团队的一个...

【商场营销策划】如何进行商场营销策划?

【商场营销策划】如何进行商场营销策划?

商场是策划者们关注的永恒话题,那么究竟该如何作好商场营销策划呢?掌握以下这几点营销策略设计原则,至关重要!1.义利兼顾的原则。商场在获取利润的同时要充分考虑到消费者的合法利益和商场的长远利益。在作商场活动营销策略方案的时候应该将这一点作为首要的原则。对商场有利而对顾客不利的...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片