一、为什么使用缓存
在看这个问题之前,可以先看一下成功的软件产品具备哪些特点:
1)能解决目标用户的痛点;
2)能够为企业或个人带来利益;
3)具有不错的用户粘性;
其中一个极其重要的因素就是要有好的用户体验
二、分布式缓存的特性
分布式缓存具有如下特性:
- 高性能:当传统数据库面临大规模数据访问时,磁盘I/O 往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value 形式存储,理想情况下可以获得DRAM 级的读写性能;
- 动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提高资源利用率;
- 高可用性:可用性包含数据可用性与服务可用性两方面.基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切换,不会因服务器故障而导致缓存服务中断或数据丢失.动态扩展时自动均衡数据分区,同时保障缓存服务持续可用;
- 易用性:提供单一的数据与管理视图;API 接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于统一维护;
- 分布式代码执行(distributed code execution):将任务代码转移到各数据节点并行执行,客户端聚合返回结果,从而有效避免了缓存数据的移动与传输.最新的Java 数据 格规范JSR-347中加入了分布式代码执行与Map/reduce 的API 支持,各主流分布式缓存产品,如IBM WebSphere eXtreme Scale,VMware GemFire,GigaSpaces XAP 和Red Hat Infinispan 等也都支持这一新的编程模型.
三、缓存应用场景
分布式缓存的典型应用场景可分为以下几类:
1)、页面缓存:用来缓存Web 页面的内容片段,包括HTML、CSS 和图片等,多应用于 交 站等;
2)、浏览器缓存、服务端缓存、数据库缓存;
3)、平台级缓存:在系统开发的时候,适当地使用平台级缓存,往往可以取到事半功倍的效果。平台级缓存在这里指的是用来写带有缓存特性的应用框架,或者可用于缓存功能的专用库(如 PHP 中的 Smarty 模版库);
4)、应用级缓存:当平台级缓存不能满足系统性能要求的时候,就要考虑使用应用级缓存了。应用级缓存,需要开发着通过代码来实现缓存机制。这里是 NoSQL 的胜场,不论是 Redis 还是 MongoDB,以及 Memcached 都可以作为应用级缓存的重要技术。一种典型的方式是每分钟或一段时间后统一生成某类页面存储在缓存中,或者可以在热数据变化时更新缓存;
5)、状态缓存:缓存包括Session 会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高,多应用于高可用集群;
6)、并行处理:通常涉及大量中间计算结果需要共享;
7)、事件处理:分布式缓存提供了针对事件流的连续查询(continuous query)处理技术,满足实时性需求;
8)、极限事务处理:分布式缓存为事务型应用提供高吞吐率、低延时的解决方案,支持高并发事务请求处理,多应用于铁路、金融服务和电信等领域;
四、分布式缓存的发展
分布式缓存经历了多个发展阶段,由最初的本地缓存到弹性缓存平台直至弹性应用平台[8],目标是朝着构建更好的分布式系统方向发展(如下图所示).
- 本地缓存:数据存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的,如Cache4j;
-
内容相似性推荐服务给出了与已看历史中节目类似的电影或者电视节目的相似性列表。一旦计算出了相似性,就存储在 SimpleDB/S3 中,前端使用 EVCache。
当任何应用或者算法需要这些数据的时候,可以从 EVCache 提取数据,并返回结果。具体过程如下:
1)一个客户向 Web 应用发了一个页面请求,处理这一请求需要得到一个电影或电视节目的相似性列表;
2)Web 应用查询 EVCache 来得到这些数据,这样场景的典型缓存命中率高于 99.9%;
3)如果缓存没有命中,Web 应用将调用相似性计算服务来计算这些数据;
4)如果已经计算过的数据也没有命中的话,相似性计算服务将从 SimpleDB 中读取数据。如果在 SimpleDB 没有,相似性计算服务根据给出的电影或电视节目重新计算相似性;
5)相似性计算服务在计算出电影或电视节目的数据后,将数据写入到 EVCache 中;
6)最后,相似性计算服务生成客户端所需要的响应并返回给客户端。参考地址:
- https://www.cnblogs.com/softidea/p/5555578.html
- https://blog.csdn.net/gitchat/article/details/78913230
不足之处,还望大牛多多指点,相互学习,共同进步~
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8582 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!