目前在网站的架构构成中普遍使用到缓存来提供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、允许单点故障
分享到:
相关推荐
大型高并发网站的性能除了受硬件设施影响外,高性能的软件技术应用和高度优化的 系统架构的作用也格外重要...最后,文章给出一套大型高并发 web 应用系统架构,并对架构分层进行分析介绍,给出实际可行性分析和性能分析
本文论述了高并发高负载网站系统架构发展现状、目前主要的解决方案,并重点介绍了数据库集群技术和WEB缓存技术,最后论述了网络负载均衡技术以及高并发高负载网站系统架构的研究方向。
解决之道——硬件篇 处理能力的提升:部署多颗CPU,选择多核心、具备更高运算频率、更大高速缓存的CPU; 处理能力的提升最直接的...策略:硬件设施是应对大负载的基础,硬件设施的投入可根据实际压力和预算量力而行。
Web负载均衡................................................................................................................................ 19 2.1 一些思考................................................
资料收集:高并发 高性能 高扩展性 Web 2.0 站点架构设计及优化策略 243 CommunityServer性能问题浅析 250 鸡肋式的多站点支持 250 内容数据的集中式存储 250 过于依赖缓存 250 CCS的雪上加霜 250 如何...
19 应用数据静态化架构高性能单页Web应用 377 19.1 整体架构 378 19.1.1 CMS系统 379 19.1.2 前端展示系统 380 19.1.3 控制系统 380 19.2 数据和模板动态化 381 19.3 多版本机制 381 19.4 异常问题 382 20 使用...
大型动态应用系统平台主要是针对于大流量、高并发网站建立的底层系统架构。大型网站的运行需要一个可靠、安全、可扩展、易维护的应用系统平台做为支撑,以保证网站应用的平稳运行。大型动态应用系统又可分为几个子...
缓存架构 jboss cache为代表的需要更新同步的分布式级缓存 以memcached为代表的不互相通信的分布式缓存 异步操作 使用集群 代码优化 多线程 资源复用 单例 对象池 数据结构 ...
《构建高性能Web站点》围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层...
为提高网站的高并发性能,提高开发效率及运营效率,主要按如下几个思路进行规划设计: 2.1.1负载均衡 1)四层交换负载均衡: 采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均衡。 2...
3.7 服务器并发策略 第4章 动态内容缓存 4.1 重复的开销 4.2 缓存与速度 4.3 页面缓存 4.4 局部无缓存 4.5 静态化内容 第5章 动态脚本加速 5.1 opcode缓存 5.2 解释器扩展模块 5.3 脚本跟踪与分析 第6章...
本书围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式...
围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、...
围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、...
本书围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式...
本书围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,涵盖了Web站点性能优化的几乎所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式...
系统架构设计 2.1 总体思路 为提高网站的高并发性能,提高开发效率及运营效率,主要按如下几个思路进行规划设 计: 2.1.1 负载均衡 1) 四层交换负载均衡: 采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来...
如何保障高并发系统的稳定运行,如采用流量控制、依赖管理、服务分级、开关等策略,以及介绍如何设计高并发系统。 如何优化应用的性能,包括前端优化、Java程序优化、数据库查询优化等。 如何进行Java应用故障...