云计算设计模式(一)Cache Aside模式

云计算设计模式(一)Cache Aside模式

按照需要将数据从数据存储中加载到缓存中。这将提高访问数据的性能,也会帮助提高保存在缓存中的数据和数据存储中数据的一致性。


上下文和问题

应用使用缓存来提升重复访问保存在数据存储中数据的性能。然而,希望缓存中的数据和数据存储中的数据总是保持一致,是不现实的。因此,应用需要实现一种策略来保证缓存中的数据尽可能新,同时也可以探测和处理缓存数据过期的情况。


解决方案

很多的商业缓存系统可以提供透读(read-through),透写(write-through)和后台写(write-behind)的操作,在这些系统中,应用通过访问缓存抽取数据,系统将从数据存储中加载数据并添加到缓存中;任何对缓存中数据的修改,都将自动写回到数据存储中。


如果缓存不提供这些功能,那么,维护数据的一致性,就是使用缓存数据的应用程序的职责。

应用程序可以通过实现实现read-aside策略,来模仿read-through的功能,这个策略在需要的时候,加载数据到缓存中,下面的图标列举了如何使用Cache-Aside模式在缓存中保存数据。



如果应用更新了信息,可以遵循Write-through策略,更新数据存储中的数据,并将缓存中相应的数据项失效。

当这个数据项下次被访问的时候,使用Cache-aside模式,将导致更新后的数据被从数据存储中抽取出来,重新添加到缓存中。


问题和思考

当你决定使用Cache-aside模式时,需要考虑以下几点:

1)缓存数据的生命周期

很多缓存实现了过期策略,当缓存中的数据在一个指定的时间内没有被访问,缓存服务器会将数据失效,并将其从换出中移除。为了保证Cache-aside是有效的,就需要确保过期策略与应用程序使用的数据的访问模式想匹配。不要让缓存的过期时间太短,因为这将导致应用不断的从数据存储加载数据,并添加到缓存中。同样的,不要让过期时间太长,这样数据容易过期。记住,缓存对于相对静态的数据,或者频繁被读取的数据来说,更为有效。

2)驱逐数据

与存储原始数据的数据存储相比,缓存的大小一般都有限制,在必要的时候,需要清理数据。大部分的缓存使用最少最近使用策略来选择需要驱逐的数据。但这是可以定制的。配置缓存的全局属性和其他属性,加上每个缓存数据的过期属性,来保证缓存是具有成本效益的,因为全局的驱逐策略,对于每个数据项来说,并不总是合适的。举个例子,如果一个缓存数据项从数据存储加载数据是非常昂贵的,那么,更有效的方式是,牺牲那些频繁访问,但是开销更小的的项目,将这些数据一直留存在缓存中。

3)启动缓存

很多解决方案会预先根据应用程序经常需要的数据,预先计算缓存。并作为启动过程的一部分。在这种场景下,当数据过期,或者被驱逐的时候,Cache-Aside模式仍然是有效的。

4)一致性

Cache-Aside模式并不能保证数据存储和缓存之间的一致性。数据存储中的一个数据项,可能在任何时候被外部进程改变,这个改变无法被反射到缓存中,直到下一次数据被加载。在一个存在跨数据源的数据复制的系统中,如果同步频繁发生,问题会变得很严重。

5)本地(内存)缓存

一个缓存可以被存储到应用程序的本地内存中。在这种环境中,如果应用频繁访问相同的数据的话,Cache-Aside模式也是有效的。然而,本地缓存是私有的,因此不同的应用实例都会持有相同数据的一份缓存。这些缓存可能会很快在各个应用程序实例之间变得不一致。因此,可能需要更频繁的过期和刷新保存在私有缓存中的数据。在这种场景下,需要研究是否需要使用共享缓存或者分布式缓存。


何时使用这个模式

当符合下面的条件时,可以使用:

1)缓存不提供原生的read-through和wirte-through操作的支持

2)需要的资源是不可预测的,这个模式使得应用能够按需加载数据,不会假设应用将会需要哪些数据。


在下面的情况下,模式可能不适用:

1)缓存的数据集是静态的,如果将数据加载到可用的缓存空间,在应用程序启动的时候启动缓存数据,并且适用某种策略防止缓存失效。

2)缓存会话状态信息在web应用中,在这种环境中,你应该避免在C/S程序中额外的引入依赖关系。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值