`
newleague
  • 浏览: 1501423 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

大型高并发高负载web应用系统架构-缓存架构策略

阅读更多

目前在网站的架构构成中普遍使用到缓存来提供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应用系统架构】 在构建大型网站时,确保其健壮性、稳定性和扩展性至关重要。为了应对大规模用户访问和高并发请求,以下是一些关键的架构策略和技术: 1. **HTML静态化** HTML静态化是提高...

    高并发高负载大型网站系统架构

    【高并发高负载大型网站系统架构】是指设计和构建能够处理大规模用户访问、高并发请求的网站系统。这种系统架构必须具备高安全性、高稳定性、高并发处理能力和高负载承受能力,以应对如淘宝等大型电商平台所面临的...

    基于大型高并发高负载网站的系统架构

    ### 基于大型高并发高负载网站的系统架构 #### 概述 随着互联网技术的飞速发展,大型网站面临着前所未有的挑战——如何在保证用户体验的同时,应对高并发访问和高负载的情况。这就需要一系列复杂的系统架构设计和...

    大型高并发 web 应用系统架构

    大型高并发网站的性能除了受硬件设施影响外,高性能的软件技术应用和高度优化的 系统架构的作用也格外重要...最后,文章给出一套大型高并发 web 应用系统架构,并对架构分层进行分析介绍,给出实际可行性分析和性能分析

    大型高并发web应用系统架构分析与设计

    综上所述,大型高并发Web应用系统的架构设计需要综合运用多种技术手段,包括但不限于CDN内容分发、负载均衡、缓存加速、高性能Web/应用服务器以及分布式文件系统和数据库等。通过对这些技术的合理配置和优化,可以...

    大型高并发高负载网站的系统架构

    【大型高并发高负载网站的系统架构】是一个关键的话题,涉及到如何设计和构建能够承受大量用户访问和高并发请求的网站。随着互联网业务的发展,网站技术已经变得极为复杂,特别是对于大型网站而言,它们需要应对的...

    说说大型高并发高负载网站的系统架构.txt

    ### 大型高并发高负载网站的系统架构 随着互联网技术的发展与普及,越来越多的大型网站如门户网站等面临着巨大的挑战,特别是在处理高并发请求时。本文将深入探讨这些大型网站如何通过采用一系列技术和策略来应对高...

    高并发web架构完整1

    《高并发Web架构完整1》是一份关于优化和构建高性能Web站点的综合资源,共分为五个部分。在当今互联网行业中,随着用户数量的急剧增长,Web应用必须具备处理高并发请求的能力,才能确保服务的稳定性和用户体验。本...

    高并发高负载的大型网站系统架构

    高并发高负载的大型网站系统架构是一个复杂的技术问题,对于大型网站来说,需要综合考虑硬件、软件、编程语言、数据库、Web 服务器、防火墙等多个方面的技术。下面从低成本、高性能和高扩展性的角度出发,讨论一些...

    说说大型高并发高负载网站的系统架构(更新)

    【大型高并发高负载网站的系统架构】 在面对大规模用户访问和高并发请求时,大型网站需要采取一系列的策略和架构设计以确保系统的稳定性和高效性。以下是一些关键的知识点: 1. **HTML静态化**: - 静态HTML页面...

    大型高并发高负载网站的系统架构.pdf

    【大型高并发高负载网站的系统架构】 随着互联网行业的飞速发展,大型企业网站面临着前所未有的挑战,包括海量数据处理、高并发访问、安全性、信息检索效率等方面的提升需求。本文将通过对国外大型IT网站,尤其是...

    大型高并发高负载网站的系统架构1

    【大型高并发高负载网站的系统架构】是一个关键的话题,涉及到如何设计和构建能够承受大量用户访问和并发请求的网站。以下是对这个主题的详细解释: 1. **HTML静态化**: HTML静态化是提高网站性能的重要手段,...

    大型网站系统构架-高并发高负载

    本文将详细探讨如何构建能够支持高并发和高负载的大型网站系统架构。 #### 一、高性能服务器的选择 高性能服务器是支撑大规模网站的基础。选择合适的硬件配置非常重要,包括但不限于: - **CPU**:多核处理器可以...

    网站--高并发web架构

    在IT行业中,高并发Web架构是构建大型、高性能互联网应用的核心技术之一。它涉及如何处理大量用户同时访问网站或服务的场景,确保系统的稳定性和响应速度。以下是对高并发Web架构的详细阐述: 1. **负载均衡**:当...

    高性能高并发服务器架构

    ### 高性能高并发服务器架构的关键知识点 #### 1. 高性能高并发服务器架构概述 - **背景**: 在互联网迅速发展的背景下,越来越多的网站面临着大量用户访问带来的挑战。为了应对这种挑战,需要构建高性能、高并发的...

Global site tag (gtag.js) - Google Analytics