首页 > 编程知识 正文

分布式缓存异常,分布式缓存

时间:2023-05-05 10:40:25 阅读:44618 作者:1277

前面几篇文章从实战的角度,介绍了memcached的应用、容灾、监控等。 但是,缺乏理论解释和原理分析。 本文从理论角度进行介绍,宏观上对“分布式缓存、无SQL”等技术有所了解,以供进一步学习使用。 构建大规模的web APP应用时,缓存技术可以说是必须的,但学习的必要性是不言而喻的。

分布式缓存概述

1.1分布式缓存的特性

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

1 )高性能:传统数据库面临大数据访问时,磁盘I/O往往成为性能瓶颈,导致响应速度过高。 分布式缓存以高速存储器作为数据对象的存储介质,数据以key/value格式存储,理想情况下可获得DRAM级别的读写性能。

2 )动态可扩展性:支持灵活的可扩展性,通过动态地适应或减少节点不断变化的数据访问负载,在提供可预测的性能和可扩展性的同时最大限度地提高资源利用率

3 )高可用性:的可用性包括数据可用性和服务可用性。 基于冗馀机制实现高可用性,无单点故障,支持故障自动检测,透明地执行故障切换,不会因服务器故障而中断缓存服务或丢失数据动态扩展时自动平衡数据分区,同时保证缓存服务的持续使用。

4 )易用性:提供单个数据和管理视图; API接口很简单,与拓扑无关。 动态扩展或故障恢复时不需要手动配置。 自动选择备份节点; 大多数缓存系统提供图形管理控制台,便于统一维护。

5 )分布式代码执行:在每个数据节点上并行执行任务代码,并且通过由客户端聚合返回结果有效地避免高速缓存数据的移动和传输。 最新的Java数据网格规范JSR-347添加了分布式代码执行和对Map/reduce的API支持。 主要的分布式缓存产品,如IBM WebSphere eXtreme Scale、VMware GemFire、GigaSpaces XAP和Red Hat Infinispan也支持这种新的编程模式。

1.2典型应用场景

分布式缓存的典型APP场景被分类为以下类别:

1 )页面缓存。 一种用于缓存HTML、CSS、图像等网页的内容片段,多用于社交网站等

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

3 )状态缓存。 缓存包括Session会话状态和横向扩展APP应用时的状态数据等,这类数据一般很难恢复,对可用性要求高,往往适用于高可用性群集。

4 )并行处理。 通常需要共享大量的中间计算结果

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

6 )极限事务处理)分布式缓存为办公APP应用提供高吞吐量、低延迟解决方案,支持高并发事务请求处理,广泛应用于铁路、金融服务、电信等领域。

1.3分布式缓存的发展

分布式缓存经历了几个发展阶段,其目标是朝着构建更好的分布式系统的方向发展,从最初的本地缓存到灵活的缓存平台,再到灵活的APP应用平台。 1 )本地缓存:的数据存储在APP应用代码所在的存储器空间中。 具有可以高速访问数据的优点。 缺点是数据不能分布式共享,没有容错能力。 典型地为Cache4j等

2 )分布式高速缓存系统:数据分散存储在一定数量的集群节点间,具有能够扩展高速缓存容量(静态扩展)的优点; 缺点是扩展过程中需要大量配置,没有容错机制。 典型地例如Memcached

3 )灵活缓存平台:的数据分布存储在群集节点之间,并基于冗馀机制提供高可用性。 优点是可以动态扩展,具有容错能力; 缺点是拷贝备份对系统的性能有一定的影响。 典型地例如Windows Appfabric Caching

4 )柔性APP应用平台:柔性APP应用平台,代表了云环境下分布式缓存系统未来的发展方向。 简单来说,柔性APP应用平台是柔性高速缓存和代码执行的组合,通过将业务逻辑代码传输到数据所在的节点进行执行,大大降低了数据传输开销,提高了系统性能

1.4分布式缓存和NoSQL

NoSQL也称为Not Only Sql,主要是指支持非关系、分布式和水平扩展的数据库设计模型。 NoSQL放弃了传统关系数据库的严格事务完整性和规范化约束,采用弱一致性模型。 对于NoSQL系统,传统的数据库很难满足云环境下APP应用数据的存储需求,具体体现在以下三个方面:

1 )根据CAP理论,一致性(一致性)、可用性(可用性)和分区容错)三个要素最多可同时满足两个,三者不能兼得。 在云平台上部署的大量web APP应用程序中,数据可用性和分区容错优先级高于正常,三者不能兼得

2 )传统的数据库很难适应新的数据存储访问模式。 Web 2.0站点和云平台上有大量的半结构化数据,包括用户会话数据和对时间敏感的事务数据

、计算密集型任务数据等,这些状态数据更适合以Key/Value 形式存储,不需要RDBMS 提供的复杂的查询与管理功能;
3) NoSQL 提供低延时的读写速度,支持水平扩展,这些特性对拥有海量数据访问请求的云平台而言是至关重要的.传统关系型数据无法提供同样的性能,而内存数据库容量有限且不具备扩展能力.分布式缓存作为NoSQL 的一种重要实现形式,可为云平台提供高可用的状态存储与可伸缩的应用加速服务,与其他NoSQL 系统间并无清晰的界限.平台中应用访问与系统故障均具有不可预知性,为了更好地应对这些挑战,应用软件在架构时通常采用无状态设计,大量状态信息不再由组件、容器或平台来管理,而是直接交
付给后端的分布式缓存服务或NoSQL 系统.
1.5 分布式缓存与极限事务处理

随着云计算与 Web 2.0 的进一步发展,许多企业或组织时常会面对空前的需求:百万级的并发用户访问、每秒数以千计的并发事务处理、灵活的弹性与可伸缩性、低延时及7×24×365 可用性等.传统事务型应用面临极限规模的并发事务处理,出现了极限事务处理型应用,典型的有铁路售票系统.Wikipedia 认为,极限事务处理是每秒多于500 事务或高于10 000 次并发访问的事务处理.Gartner 将极限事务处理(extreme transactionprocessing,简称XTP)定义为一种为事务型应用的开发、部署、管理和维护供支持的应用模式,特点是对性能、可扩展性、可用性、可管理性等方面的极限需求.Gartner 在其报告中预测指出,极限事务处理型应用的规模将由2005 年的10%提升至2010 年的20%,极限事务处理技术是未来5 年~10 年的热点技术.极限事务处理的引入,无疑给传统Web 三层架构带来了新的挑战.即,如何在廉价的、标准化的硬件和软件平台之上,对大容量、业务关键型的事务处理应用提供良好的支撑.分布式缓存作为一种关键的XTP 技术,可为事务型应用提供高吞吐率、低延时的技术解决方案.其延迟写(write-behind)机制可提供更短的响应时间,同时极大地降低数据库的事务处理负载,分阶段事件驱动架构(staged event-driven architecture)可以支持大规模、高并发的事务处理请求.此外,分布式缓存在内存中管理事务并提供数据的一致性保障,采用数据复制技术实现高可用性,具有较优的扩展性与性能组合.



  相关文章推荐

  关于NoSQL的选型和使用

 memcached单点故障与负载均衡

memcached性能监控

在Windows .NET平台下使用Memcached

 “集群和负载均衡”的通俗解释

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。