`

网站架构之缓存应用(1)概念篇

阅读更多

网站缓存这个话题并不新颖,但是能否将它用好,可是一门学问,同一件工具在不同人的手中会做出不同的事情来。这里我来分享总结下我对于网站架构中缓存应用的一些看法和经验,大家有好的想法可以补充。
   
    第一:缓存的一些基本概念。
        1:缓存(CACHE)与缓冲(BUFFER)的区别,我认为缓存可以在某种程序上理解成一级缓存(Primary Cache),数据全局共享。缓冲则属于二级缓存,只对一部分对象共享数据,二级缓存在某种程序上主要是降低一级缓存组件的访问压力以及提高缓存的存取效率。
        2:缓存的一些基本属性:命中率,表示缓存命中的次数/总的请求数,这是缓存设计的重要质量指标之一;缓存执行效率,例如GET,INSERT,DELETE等;容量,即缓存介质的容量最大值;成本,即开发成本,部署成本,软硬件成本。
        3:缓存的问题,存储介质的选择往往左右缓存的设计,缓存在不命中时往往会使性能下降。
    第二:网站中缓存的应用场景:
        1:可以缓存整个页面的html,提高访问响应能力;
        2:针对局部页面元素进行缓存;
        3:对复杂数据的结果进行缓存,例如一个查询需要结合多个数据集,然后根据这些数据集进行相应的运算,即使每个子集查询有缓存,但还是需要额外的运算,这种情况可以考虑缓存计算后的结果。
        4:对耗时的查询进行缓存,例如产品列表页的查询。
        5:和上下文相关的用户数据,例如用户从订单埴写页进入到订单成功页,或者是从产品列表页点击详细产品进行预订时的订单填写页,此时这两个页面之间都需要传递大量的相关数值,我们可以把所有的数值封装在一个类中,然后通过缓存进行通信。
    第三:影响缓存命中率的因素。
        1:数据时实性,每个业务系统都对自己的数据有相应的要求,有些数据的实时性非常强,像每日的股票信息,这种情况如果设置了缓存,缓存的命中率会特别低。
        2:缓存粒度问题,一般来说是缓存的跨度太大,即此时的KEY值包含的条件太多,会出现缓存命中率特别低的情况。
    第四:提高缓存命中率的方法:
        1:增大存储介质的容量;
        2:对非常热点的数据进行捕捉,可以采用实时更新缓存的方式来平衡缓存与实时性的问题,例如可以单独开启一个后台服务来定时做更新缓存的工作。
        3:调整缓存KEY值的算法,尽量保证缓存KEY的细粒度,KEY-VALUE就是很好的细粒度例子。
        4:根据业务调整缓存的过期策略。
       
    第五:如何实现缓存组件:
        1:采用二级缓存架构,即在web server上设置二级缓存,这里的二级缓存即上面的提到的缓冲,只对具体的webserver进行数据共享,二级缓存可以考虑采用微软企业库的缓存组件来完成。由于一级缓存的实现往往都是单独的服务器,为了减少缓存服务器的压力,在webserver上对数据进行缓冲,在降低缓存服务器压力的情况下最大的好处在于缓存的存取速度上。
        2:一级缓存由单独的缓存服务器来完成,至于缓存服务器采用哪种缓存方案,可以根据不同的场景来决定。如果考虑到部署的方便性,可以采用微软企业库来完成一级缓存,如果服务器允许,可以采用memcached来实现。
        cache服务器采用微软企业库实现的优缺点:
        1:优点,开发以及部署都非常容易,不需要安装第三方软件等等;
        2:缺点,需要自己开发客户端功能以实现分布式,这里我们可以采用一致性hash算法来实现,同时如果服务以WCF形式公布开,在访问效率上也不是最优的,比起memcached的通信方式要差一些。
        memcached的优缺点:
        1:优点,通信方式比起wcf要高;
        2:缺点,需要第三方服务的支持,需要在服务器上安装memcached服务,这好像也不是什么重要的缺点。


        最后,贴出网站网页在数据访问上的流程图,供大家参考,在下面的文章中我会把实现的方案分享出来。
     
       

分享到:
评论

相关推荐

    浅谈网站架构中缓存的应用

    网站架构中的缓存应用是优化性能、提升用户体验和减轻服务器压力的关键技术。缓存机制能够减少不必要的数据库查询,加速数据的读取速度,从而提高整体系统响应时间。本文将深入探讨缓存的基本概念、类型、策略以及在...

    JAVA缓存概念体系及应用

    该压缩包中有一个WORD和一个PPT,WORD中介绍...PPT中介绍了缓存体系,JVM内存模型,JCONSOLE监控工具的使用,Oscache缓存架构 Ehcache缓存架构 Memcached缓存架构 JiveCache缓存架构 Terracotta JVM级缓存架构等相关技术

    大型分布式系统中的缓存架构

    本文将深入探讨缓存的基本概念,常见类型的缓存组件及其应用场景。 **缓存概述** 缓存的基本思想是将经常访问的数据暂存到高速、易访问的地方,以便下次请求时能快速获取。根据其部署位置和工作方式,缓存主要分为...

    大型网站架构说明 一个很好的网站架构说明

    在“大型网站架构系列一”中,首先会介绍网站架构的基础概念,包括什么是网站架构,它的重要性以及其在系统设计中的角色。这部分可能会涵盖网站架构的分类,如垂直架构和水平架构,以及它们各自的优缺点。此外,还会...

    藏经阁-高性能Web架构之缓存体系.pdf

    【高性能Web架构之缓存体系】是针对提升Web服务性能的关键技术进行深入探讨的主题,主要涵盖了缓存的多个层面,包括Buffer与Cache的区别、DNS与浏览器缓存、CDN与反向代理缓存、Web服务器与分布式缓存、数据库与操作...

    大促抗住零点洪峰-缓存架构体系课件

    #### 缓存应用场景 缓存技术可以广泛应用于以下场景: 1. **频繁查询数据缓存**:对于那些访问频率高且更新频率低的数据,如热门商品列表或用户基本信息,可以通过缓存来显著提升数据加载速度。 2. **列表排序分页...

    [高清]大型网站技术架构 核心原理与案例分析+李智慧.pdf

    首先,书中详细讲解了网站架构的基础知识,包括软件架构的基本概念、设计原则以及常见的架构模式,如分层架构、微服务架构、分布式系统等。这些基础知识对于理解复杂的网站架构至关重要,特别是对于初学者来说,能够...

    Web应用系统的缓存技术浅谈

    例如,文件系统缓存减少磁盘I/O操作,数据库缓存减少对文件系统的依赖,应用程序缓存减少对数据库的查询,Web服务器缓存减轻应用服务器负担,而客户端浏览器缓存则减少了对网站内容的重复下载。 操作系统级别的缓存...

    消除知识盲区 互联网缓存架构从理论到实践

    ### 消除知识盲区:互联网缓存架构从...通过理解缓存的基本原理和应用场景,结合具体的缓存技术和策略,可以构建出高效稳定的缓存架构。希望本文能够帮助读者更好地理解和运用缓存技术,为实际项目提供有价值的参考。

    企业级应用软件架构开发过程与实践

    本篇内容将围绕这一主题,依据提供的章节名称,深入探讨企业级应用软件架构的开发实践。 第一章:基础架构概述 在这一章中,我们将首先介绍企业级应用软件架构的基础概念,包括架构的定义、作用以及其在大型项目中...

    一种分布式微服务架构系统缓存解决方案.pdf

    分布式微服务架构是一种通过将应用程序拆分为一系列小服务的方式来构建复杂的应用程序的体系结构。这些服务围绕业务能力组织,并通过定义良好的、标准化的API进行通信。微服务架构促进了服务的自治性,这意味着每个...

    架构师之路--大型网站技术架构与解决方案

    架构师在大型网站的建设和发展中扮演着至关重要的角色,他们的工作涉及到了网站技术架构的设计、优化与问题解决方案的制定。大型网站技术架构不仅仅关注于代码的编写和功能的实现,它更是一个系统的工程,需要考虑到...

    网站架构集,关于网站架构的知识

    在本文中,我们将深入探讨网站架构的基本概念、关键要素以及常见问题,通过实例来阐述这些理论。 首先,我们需要理解网站架构的定义。网站架构是指在创建和运营一个网站时,对技术组件、数据流、用户界面和业务逻辑...

    大型网站架构方案pdf

    随着网站流量的增加,这种架构会面临性能瓶颈,因为Web应用和数据库之间存在相互干扰。此时,将Web服务器与数据库服务器进行物理分离成为必要的步骤。 **知识体系要点:** - **理解物理分离的意义:** 学习为什么要...

    分布式缓存架构1.docx

    ### 分布式缓存架构——Spring Boot搭建Ehcache+Redis的二级缓存 #### 一、引言 随着互联网应用的不断普及和发展,对于数据处理能力的要求越来越高,特别是对于那些高并发、低延迟的应用场景而言,缓存技术成为了...

    缓存技术浅谈PPT简介

    本文将深入探讨缓存的基本概念、常见缓存技术及其应用场景。 首先,缓存(Cache)是一种位于不同速度硬件或软件之间的中间层,用于减缓速度差异带来的影响。例如,在Web应用架构中,从数据库到应用服务器,再到Web...

    大型门户网站架构设计

    ### 大型门户网站架构设计 #### 一、三层架构简介及其局限性 ##### 1.1 三层架构原理 三层架构是一种常见的软件架构模式,它将应用程序分为三个逻辑层:应用表现层、业务逻辑层和数据访问层。这种分层方式有助于...

    大规模网站架构(ppt下载)

    【标题】:“大规模网站架构(ppt下载)” 在IT行业中,大规模网站架构是构建和管理能够处理极高流量、海量数据和复杂业务逻辑的网站体系结构的关键。这份名为“大规模网站架构”的PPT文档,很可能是对如何设计和...

    大型分布式网站架构设计与实践 PDF(带目录清晰完整版)

    #### 二、大型分布式网站架构的核心概念 1. **分布式系统基础**: - **定义**:分布式系统是由一组通过网络进行通信和协作的自治计算机组成的集合。 - **特点**:分布式系统的每个节点都可以独立运行,并且能够...

    JAVA缓存与大型网站架

    本文将深入探讨JAVA缓存及其在大型网站架构中的应用。 首先,我们需要理解缓存的基本概念。缓存是一种存储技术,用于临时存储频繁访问的数据,以便快速检索。在JAVA中,常见的缓存实现有Ehcache、Guava Cache和...

Global site tag (gtag.js) - Google Analytics