« 上一篇下一篇 »

是否合理利用了应用层Cache机制?

对于Web应用,活跃数据的数据量总不会特别大,有些活跃的数据更是很少变化。对于这类数据,是否必要每次都到数据库中去查询呢?如果能够将变化相对较少的部分活跃数据通过应用层Cache机制缓存到内存中,对性能的提升肯定是成数量级的,而且由于是活跃数据,对系统整体性能的影响也会很大。

    当然,通过Cache机制成功的案例数不胜数,但是失败的案例同样并不少见。如何合理地通过Cache技术让系统性能得到较大的提升也不是通过寥寥几笔就能说清楚的,这里我仅根据以往的经验列举一下什么样的数据适合通过Cache技术来提高系统性能。

    1、系统各种配置及规则数据
   
    由于这些配置信息变动的频率非常低,访问概率又很高,所以非常适合使用Cache。

    2、活跃用户的基本信息数据
   
    虽然我们经常会听到某某网站的用户量达到成百上千万,但是系统的活跃用户量很少能够都达到这个数量级。也很少有用户每天没事干去将自己的基本信息改来改去。更为重要的一点是用户的基本信息在应用系统中的访问率及其频繁。所以用户基本信息的Cache,很容易让整个应用系统的性能出现一个质的提升。

    3、活跃用户的个性化定制信息数据
   
    虽然用户个性化定制的数据从访问率来看,可能并没有用户的基本信息那么频繁,但相对于系统整体来说,也占了很大的比例,而且变更频率一样不会太多。从Ebay的paypal通过MySQL的Memory存储引擎实现用户个性化定制数据的成功案例就能看出来,对这部分信息进行Cache的价值。虽然通过MySQL的Memory存储引擎并不像传统意义层面的Cache机制,但是正是对Cache技术的合理利用和扩充造就了项目整体的成功。

    4、准实时的统计信息数据
   
    所谓准实时的统计数据,实际上就是基于时间段的统计数据。这种数据不会实时更新,也很少需要增量更新,只有当重新构建该统计数据的时候才需要做一次全量更新操作。虽然这种数据即使通过数据库来读取效率可能也会比较高,但是执行频率很高之后,同样会消耗不少资源。既然数据库服务器非常珍贵,我们为什么不能放在与应用相关的内存Cache中呢?

    5、其他一些访问频繁但变更较少的数据

    除了上面这4种数据之外,在各种系统环境中肯定还会有各种各样的变更较少但是访问很频繁的数据。只要合适,都可以将他们的访问从数据库移到Cache中。

« 上一篇下一篇 »