`

缓存概述

 
阅读更多

1.1 分布式缓存的特性

 

分布式缓存具有如下特性: 

 

1) 高性能:当传统数据库面临大规模数据访问时,磁盘I/O 往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value 形式存储,理想情况下可以获得DRAM 级的读写性能; 

 

2) 动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提高资源利用率; 

 

3) 高可用性:可用性包含数据可用性与服务可用性两方面.基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失.动态扩展时自动均衡数据分区,同时保障缓存服务持续可用; 

 

4) 易用性:提供单一的数据与管理视图;API 接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于统一维护; 

 

5) 分布式代码执行(distributed code execution):将任务代码转移到各数据节点并行执行,客户端聚合返回结果,从而有效避免了缓存数据的移动与传输.最新的Java 数据网格规范JSR-347中加入了分布式代码执行与Map/reduce 的API 支持,各主流分布式缓存产品,如IBM WebSphere eXtreme Scale,VMware GemFire,GigaSpaces XAP 和Red Hat Infinispan 等也都支持这一新的编程模型. 

 

1.2 典型应用场景 

 

分布式缓存的典型应用场景可分为以下几类: 

 

1) 页面缓存.用来缓存Web 页面的内容片段,包括HTML、CSS 和图片等,多应用于社交网站等; 

 

2) 应用对象缓存.缓存系统作为ORM 框架的二级缓存对外提供服务,目的是减轻数据库的负载压力,加速应用访问; 

 

3) 状态缓存.缓存包括Session 会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高,多应用于高可用集群; 

 

4) 并行处理.通常涉及大量中间计算结果需要共享; 

 

5) 事件处理.分布式缓存提供了针对事件流的连续查询(continuous query)处理技术,满足实时性需求; 

 

6) 极限事务处理.分布式缓存为事务型应用提供高吞吐率、低延时的解决方案,支持高并发事务请求处理,多应用于铁路、金融服务和电信等领域. 

1.3 分布式缓存的发展 

 

分布式缓存经历了多个发展阶段,由最初的本地缓存到弹性缓存平台直至弹性应用平台[8],目标是朝着构建更好的分布式系统方向发展(如下图所示). 

 

1) 本地缓存:数据存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的,如Cache4j;

 

2) 分布式缓存系统:数据在固定数目的集群节点间分布存储.优点是缓存容量可扩展(静态扩展);缺点是扩展过程中需要大量配置,无容错机制.典型的,如 Memcached;

 

 

 

3) 弹性缓存平台:数据在集群节点间分布存储,基于冗余机制实现高可用性.优点是可动态扩展,具有容错能力;缺点是复制备份会对系统性能造成一定影响.典型的,如 Windows Appfabric Caching;

 

 

 

 

4) 弹性应用平台:弹性应用平台代表了云环境下分布式缓存系统未来的发展方向.简单地讲,弹性应用平台是弹性缓存与代码执行的组合体,将业务逻辑代码转移到数据所在节点执行,可以极大地降低数据传输开销,提升系统性能.典型的,如 GigaSpaces XAP. 

 

 

  

 

 

分享到:
评论

相关推荐

    asp2_0缓存概述

    【ASP.NET 缓存概述】 ASP.NET 缓存机制是微软.NET Framework 提供的一种优化Web应用程序性能的关键技术。它允许开发者存储数据在服务器内存中,以便后续请求可以快速获取,而无需重新计算或从数据库中检索。这显著...

    深入理解Hibernate缓存

    #### 一、Hibernate缓存概述 Hibernate作为一款流行的Java持久层框架,为开发者提供了高效且灵活的数据访问能力。其中,缓存机制是Hibernate性能优化的重要组成部分之一。理解Hibernate缓存的工作原理及配置方法...

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

    **缓存概述** 缓存的基本思想是将经常访问的数据暂存到高速、易访问的地方,以便下次请求时能快速获取。根据其部署位置和工作方式,缓存主要分为四类:CDN缓存、反向代理缓存、本地应用缓存和分布式缓存。 **CDN...

    volley 缓存

    **Volley 缓存概述** Volley 的缓存机制主要由两部分组成:内存缓存和磁盘缓存。内存缓存是短期存储,用于快速响应短时间内重复的请求;磁盘缓存则作为长期存储,用于在应用关闭或设备重启后仍然保留数据。 1. **...

    Android缓存——将数据以对象的方式缓存到本地

    一、Android缓存概述 Android提供多种缓存机制,包括内存缓存、磁盘缓存以及更复杂的数据库缓存。内存缓存如LruCache,适用于小量、高频的数据;磁盘缓存如SQLite数据库、SharedPreferences、文件系统等,适用于大量...

    Android-webview缓存

    一、Webview缓存概述 Webview的缓存机制主要包括两种类型:内存缓存(Memory Cache)和磁盘缓存(Disk Cache)。内存缓存用于临时存储最近访问过的网页数据,当用户再次访问时可以从内存中快速加载。磁盘缓存则将...

    linq 的全数据库缓存

    ### LINQ与数据库缓存概述 1. **LINQ简介**:LINQ(Language Integrated Query)是一种在.NET Framework 3.5中引入的新技术,它允许开发人员使用类似于SQL的语法查询数据,而无需显式地转换数据格式。LINQ支持多种...

    缓存技术详解

    #### 五、操作系统缓存概述 操作系统缓存主要用于提高文件系统的访问效率,常见的有: 1. **Windows Disk Cache**:Windows操作系统内置的文件系统缓存机制。 2. **Linux Disk Cache**:Linux内核提供的缓存机制,...

    Hibernate缓存深入详解 from ITEye

    **一、Hibernate缓存概述** Hibernate的缓存机制主要是为了减少对数据库的直接访问,提高系统性能。它通过在内存中存储数据来加快数据访问速度,分为一级缓存和二级缓存。 **二、一级缓存** 一级缓存是...

    spring缓存机制-根据condition加入缓存(三)

    ### 一、Spring缓存概述 Spring框架提供了一种统一的缓存抽象,支持多种缓存实现,如EhCache、Hazelcast、Infinispan、Guava等。通过`@EnableCaching`注解开启缓存功能,并使用`@Cacheable`、`@CacheEvict`、`@...

    Hibernate缓存深入详解

    Hibernate缓存概述** Hibernate提供了两级缓存:一级缓存和二级缓存。一级缓存是Session级别的,而二级缓存则是SessionFactory级别的全局缓存。这两级缓存都位于持久化层,存储着数据库数据的拷贝。 **2. 一级...

    jsp缓存方式

    #### 一、JSP缓存概述 JSP页面的缓存主要包括两方面:一是服务器端对JSP编译后的Servlet的缓存;二是客户端浏览器对JSP渲染后HTML页面的缓存。这两种缓存方式对于提升用户体验和减轻服务器压力都至关重要。 1. **...

    Hibernate_二级缓存 实验心得,手册

    #### 一、二级缓存概述 在学习Hibernate的过程中,二级缓存是一个非常重要的概念。与一级缓存不同的是,一级缓存默认为每个`Session`开启,用于存储当前`Session`内的实体状态。而二级缓存则是在`SessionFactory`...

    hibernate二级缓存示例源码

    二级缓存概述 Hibernate的一级缓存是Session级别的,它自动管理对象的状态,提供瞬时、持久化和脱管状态之间的转换。然而,一级缓存的范围有限,当Session关闭时,其中的数据会被清除。为了解决这个问题,...

    Hibernate缓存详解

    Hibernate缓存概述 缓存是存储在内存中的临时数据,当应用程序需要数据时,首先从缓存中查找,而不是直接查询数据库。这样可以减少网络延迟,提高数据访问效率。Hibernate的缓存分为一级缓存和二级缓存。 ### 2. ...

    MySQL缓存研究

    1. MySQL缓存概述 MySQL的缓存机制包括查询缓存、InnoDB的缓冲池、表定义缓存等。查询缓存用于存储已执行过的SQL查询及其结果,当相同的查询再次到来时,MySQL可以从缓存中直接返回结果,避免了解析和执行查询的过程...

    Java缓存技术

    #### 二、缓存概述 缓存是一种特殊的存储器子系统,其主要用于存储频繁访问的数据副本,以便于快速访问。任何位于速度相差较大的两种硬件或软件之间,用于协调两者数据传输速度差异的结构都可以被视为缓存。在Java...

    hibernate 缓存

    Hibernate缓存概述 **缓存的作用**:减少对数据库的访问次数,从而提高应用性能。Hibernate缓存位于应用和数据库之间,存储着数据库数据的副本。当需要数据时,Hibernate首先会在缓存中查找,若找到所需数据(称为...

    强烈推荐 打造高性能nginx缓存服务器

    #### Nginx缓存概述 Nginx是一款广泛使用的高性能HTTP服务器及反向代理服务器。从0.7.48版本开始,Nginx引入了缓存功能,允许将请求的结果缓存起来,从而提高响应速度并减轻后端服务器的压力。这一特性对于提升网站...

Global site tag (gtag.js) - Google Analytics