`
hzjxy0624
  • 浏览: 12784 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

[转]网站缓存策略

阅读更多
目前在网站的架构构成中普遍使用到缓存来提供WEB应用的性能,由于网站规模的不同,分别存在如下几种类型的缓存架构。

(1)单机缓存

(2)简单分布式缓存

(3)使用复制方式的缓存集群

(4)使用散列方式的缓存集群

(5)高性能高、可靠的缓存集群

下面对于上述几种缓存策略的实际应用的适用情况以及优缺点进行详细分析,当然并没有一个缓存的教条存在,有的只是参考案例,对于具体的应用来讲要具体分析。

(1)单机缓存

      单机缓存也就是WEB应用和缓存是同一个应用,也就是最简单的缓存策略,大家在程序中使用的static的HashMap、List这些都可以算作缓存的范畴。比较有代表性的单机缓存有OSCache、Ehcache。

      OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。OSCache有以下特点:缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。

      Ehcache来源于Hibernate,是一个纯java的在进程中的缓存,它具有以下特性:快速,简单,为Hibernate2.1充当可插入的缓存,最小的依赖性,全面的文档和测试。

      对于WEB应用程序采用单机缓存策略可以大大提高系统的吞吐量。笔者曾经在一个电信的WEB应用程序中使用OSCache来缓存数据,将主页面以及菜单对 应的页面级别的数据缓存起来,以及在不是通过“more”方式查询出来的数据也就是说在页面中可以直接访问的数据都缓存起来,定时进行更新,对于系统的性 能大大提升,对于数据库的访问量大大的减少了,主页面可以达到1000个并发。

      单机缓存的读写访问在所有的缓存策略中的性能最高,代价最小,在数据量不大并且在并发性能要求不是很高的情况下是非常合适的。单机缓存存在的问题是,可以 缓存的数据量受到限制,并且它和应用部署到同一个服务器上彼此竞争消耗系统资源,无法扩展,并且在WEB访问量上涨,WEB需要集群部署的时候在所有的集 群中都需要保存同样规模的缓存数据,不能彼此共享。

(2)简单分布式缓存

     简单的分布式缓存有两种代表性的部署方式。

     1、单实例的memcached部署方式

     在讲到缓存的时候,memcached可能就无人不知啦,可以考虑单独部署一台memcached服务器,作为中央缓存服务器,多个应用以都分别以客户端 的方式通过memcached服务器存取缓存数据,这样就避免了单机缓存方案中同样的数据需要在多个应用服务器中重复缓存的弊端。

      2、OSCache和Enhence的分布式缓存

      OSCache和Enhence可以使用JGroups进行缓存数据的广播,实现自动同步多个应用的缓存数据,在一个应用更新缓存之后该应用自动广播该缓存信息到其它应用的缓存,其它应用不需要再次访问数据库来再次加载数据更型缓存。

      上述两种简单的分布式缓存策略相对于单机缓存来讲存在较大进行,尤其是使用memcached的方式,由于memcached缓存的性能非常高,分离了应 用和缓存服务器,可以在集群部署WEB应用的时候大大提高系统的吞吐量。至于OSCache和Enhence方式实现的分布式缓存则还是基于单机缓存的方 式,只不过是优化了缓存数据的存放性能,基本限制没有得到改变。

(3)使用复制方式的缓存集群

在满足如下几个条件的时候可以使用复制方式的缓存集群策略:

1、需要缓存的数据量不是特别大,没有超过单机的限制

2、需要极高的读取缓存的性能

3、缓存中的数据变更的频率不是特别大

对于满足上述3点要求的WEB应用,我们可以采用复制方式的缓存集群来提高系统的性能。通常的方式为使用虚拟IP的方式将多个缓存实例作为一个集 群,该集群对于客户端应用来说是透明的,在一个缓存服务器宕机的时候,对于客户端来说没有影响。当一个应用更新了缓存的时候,该缓存实例通知集群中的其他 缓存服务器,由缓存集群自动完成各个缓存服务器中缓存数据的同步。

(4)使用散列方式的缓存集群

在满足如下几个条件的时候可以使用散列方式的缓存集群策略:

1、需要缓存的数据量特别巨大

2、需要极高的读取缓存的性能

3、允许单点故障

文章来源:http://java-jianan.iteye.com/blog/926635
分享到:
评论

相关推荐

    ASI缓存策略下载图片

    ASI缓存策略是iOS开发中一种常见的图片下载与缓存技术,主要应用于移动应用中,以提高用户体验,尤其是涉及到大量图片展示的场景,如图片浏览器或社交媒体应用。在这个主题下,我们将深入探讨ASI缓存策略如何工作,...

    Http页面缓存机制(转)

    - 管理复杂:管理和维护缓存策略需要考虑多个因素,如缓存策略的选择、更新机制等。 综上所述,HTTP页面缓存机制是提高网络应用性能的关键技术,但同时也需要合理管理和配置,以平衡性能提升和数据一致性。了解并...

    详解php缓存技术用于开发网站

    ### 详解PHP缓存技术在网站开发中的应用 在当今高度依赖互联网的时代,网站的响应速度...然而,合理的缓存策略和管理机制是关键,开发者需要根据网站的具体需求和数据特性,灵活选择和调整缓存方案,以达到最佳效果。

    ios-一个类的模型转字典,还有很多基于AFNetworking封装的请求类(缓存和不缓存).zip

    总结来说,这个压缩包提供了一套完整的解决方案,涵盖了模型对象到字典的转换和基于AFNetworking的网络请求,包括缓存策略。对于iOS开发者来说,这样的工具能够简化网络编程,提高开发效率,同时也为应用程序的性能...

    android数据缓存

    - LRU(Least Recently Used):最近最少使用的缓存策略,当缓存空间满时,删除最近最少使用的数据。 - TTL(Time To Live):数据存活时间,设定数据在缓存中存储的最大时长,过期后自动清理。 3. **缓存实现...

    图片缓存框架使用

    5. **自定义缓存策略**:虽然Glide提供默认的缓存策略,但开发者可以根据需要自定义。例如,可以通过重写`GlideModule`来调整缓存大小,或者使用`RequestOptions`设置缓存策略。 6. **测试和调试**:在`...

    PHP查询缓存.doc

    在实际应用中,通常会结合多种缓存策略,如同时使用时间触发和内容改变触发,以确保数据的时效性和性能优化。 总结来说,PHP查询缓存是提高Web应用性能的重要手段,通过对SQL查询结果的存储和复用,减少数据库交互...

    hibernate二级缓存示例源码

    对于每个实体类,我们需要决定是否启用二级缓存以及使用哪种缓存策略。在实体类上添加`@Cacheable`注解,可以启用二级缓存。同时,可以通过`@Cache`注解设置缓存策略,例如: ```java @Entity @Cacheable(true) @...

    Bitmap 三级缓存

    例如,Glide库提供了一些高级特性,如自动管理Bitmap的生命周期、内存和磁盘缓存策略、异步加载等,极大地简化了图片处理的工作。开发者可以通过定制Glide的模块来适应特定的缓存需求。 总结来说,Bitmap的三级缓存...

    安卓图片加载缓存相关-引用开源框架通过AsyncHttpClient实现网络图片查看器.rar

    AsyncHttpClient库允许开发者自定义缓存策略,例如可以设置本地缓存大小,控制网络请求的优先级,以及当网络不可用时如何使用缓存数据。在Android中,常见的缓存策略包括内存缓存和磁盘缓存。内存缓存能快速响应用户...

    仿网易新闻的缓存机制,完成图片缓存,并在断网的情况下依旧可以查看图片

    本项目仿照网易新闻的图片缓存策略,旨在实现一个即使在网络断开的情况下仍能查看之前加载过的图片的功能。这一机制对于提高应用的离线可用性,减少网络请求,以及优化用户在弱网络环境下的体验具有重要意义。 首先...

    jjfa.rar_缓存命中

    标题“jjfa.rar_缓存命中”暗示了我们正在讨论的是一种针对高流量场景的高效缓存策略。下面将详细阐述这种缓存策略的核心原理、实施方法以及其对系统性能的影响。 缓存命中率是指从缓存中成功获取数据的次数与总...

    [转]android图片缓存

    图片缓存在Android中最常见的实现方式是利用双缓存策略,即内存缓存和磁盘缓存。内存缓存通常使用LruCache(基于最近最少使用原则的缓存淘汰算法)或者其升级版DiskLruCache。内存缓存响应速度快,但容量有限;磁盘...

    android中DiskLruCache缓存类

    本文将深入解析DiskLruCache的工作原理、使用方法以及与其他缓存策略的比较。 首先,了解DiskLruCache的基本概念。LRU缓存策略是一种常用的内存管理策略,当缓存空间满时,会优先淘汰最近最少使用的数据。而...

    ios 图片缓存类

    4. **内存缓存策略**:内存缓存的大小通常有限,因此需要合理地设置缓存策略。可能的策略包括LRU(Least Recently Used)最近最少使用,LFU(Least Frequently Used)最不经常使用,以及基于容量限制的策略。这个...

    Android缓存方案

    3. 混合缓存策略:根据数据类型和需求,可以结合使用数据库和文件缓存,例如,将经常访问但不经常变更的数据存储在内存(LRU缓存),将结构化的、不常变更的数据存储在SQLite,而大文件或非结构化的数据则采用文件...

    iOS 缓存功能类

    总结,"iOS 缓存功能类"是iOS开发中提升应用性能的关键组件,它通过有效的字符串和图片缓存策略,减少了重复计算和网络请求,提高了用户体验。理解和掌握缓存机制及其实现,对于优化iOS应用性能具有重要意义。

    winform简单缓存类实例

    在.NET Framework中,WinForm应用程序通常使用C#来开发,而缓存机制是提升应用程序性能的一个重要手段。...不过,要根据实际场景选择合适的缓存策略,确保缓存能带来真正的性能提升,而不是成为新的瓶颈。

    ASP.NET 数据库缓存

    总的来说,ASP.NET 2010的数据库缓存策略能够显著优化Web应用的性能,通过合理地使用缓存,开发者可以创建更加高效、响应快速的网站。在实际开发中,应根据具体需求和资源情况,选择合适的缓存策略和配置,以达到...

    分布式缓存.docx

    Ehcache是一个流行的Java缓存框架,它支持内存和磁盘存储,提供了多种缓存策略,如LRU(Least Recently Used)或LFU(Least Frequently Used)。Ehcache还允许通过RMI进行分布式缓存,虽然使用较少,但在特定场景下...

Global site tag (gtag.js) - Google Analytics