快速掌握:大型分布式系统中的缓存架构

  • 时间:
  • 浏览:1
  • 来源:大发彩神下载—大发彩神APP

Feed 缓存架构图

Guava Cache 的缓存更新策略如下图:



主要在数据架构、性能、储存成本、服务化等不同方面进行了优化增强。

当 Memcached 服务器用完分配的内存时,失效的数据被首先替换,或者是最近未使用的数据。

本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。

CDN 缓存应用如下图:



应用场景:一般只缓存体积较小静态文件资源,如 css、js、图片。

分布式缓存应用场景

它是使用最广泛的基于 Java 的缓存,可能它功能强大,经过验证,功能齐全,并与或者 流行的库和框架集成。



技术挑战

Guava Cache 特点与功能如下图:

Redis 的数据淘汰内部实现如下图:

反向代理缓存应用如下图:

新浪微博把 SSD 应用在分布式缓存场景中,将传统的 Redis/MC + MySQL 辦法 ,扩展为 Redis/MC + SSD Cache + MySQL 辦法 。



数据不一致,一般是可能网络不稳定或节点故障意味问题再次总出 的常见 3 个场景以及处置方案:

反向代理缓存应用图

数据淘汰内部实现:懒淘汰机制为每次往缓存放到数据的之后 ,完正都是存一个多多多多时间,在读取的之后 要和设置的时间做 TTL 比较来判断有无过期。

Memcached 特点

并通过 Redis 哨兵(Sentinel)和自动分区(Cluster)提供高可用性(High Availability)。

开源实现

Redis 数据淘汰策略

编程直接实现

缓存介质

Guava Cache 的数据行态如下图:

Redis 的数据模型如下图:



下面介绍分布式缓存常见的 2 大开源实现 Memcached 和 Redis。

缓存带来的复杂度问题

Redis 底层实现每种解析如下图:

它都还能不能存储键值对与 5 种不类式型的值之间的映射,都还能不能将存储在内存的键值对数据持久化到硬盘,都还能不能使用复制行态来扩展读性能。

Redis 持久化辦法

缓存高可用

分层缓存埋点



使用 CDN 缓存

缓存有无高可用,才能 根据实际的场景而定,并完正完正都是所有业务完正完正都是求缓存高可用,才能 结合具体业务,情况汇报汇报进行方案设计,类式临界点有无对后端的数据库造成影响。

启动的每种过程图解

可能什么什么都这么缓冲则先向 Web 服务器发出请求,撤出 数据,本地缓存后再发送给用户。通过降低向 Web 服务器的请求数,从而降低了 Web 服务器的负载。

指的是在应用中的缓存组件,其最大的优点是应用和 Cache 是在同一个多多线程内部,请求缓存非常快速,什么什么都这么不多的网络开销等。

主要处置方案:

分布式:实现数据的海量缓存。

复制:实现缓存数据节点的高可用。

缓存概述

应用场景:缓存字典等常用数据。

Ehcache 的主要行态如下图:

Redis 是一个多多多多远程内存数据库(非关系型数据库),性能强劲,具有复制行态以及处置问题而生的独一无二的数据模型。

指的是与应用分离的缓存组件或服务,其最大的优点是自身也不我一个多多多多独立的应用,与本地应用隔离,多个应用可直接的共享缓存。

初始化字典

分布式缓存的主要应用场景如下图:

分布式缓存接入辦法

数据读写流程图

主要处置方案:

对结果为空的数据也进行缓存,当此 Key 有数据后,清理缓存。

一定不占据 的 Key,采用布隆过滤器,建立一个多多多多大的 Bitmap 中,查询时通过该 Bitmap 过滤。

应用场景:主要缓存静态资源,类式图片,视频。

下面主要介绍缓存埋点常见问题以及处置方案,业界案例。

Memcached 基本架构

反向代理缓存

Redis 缓存设计原则

Guava Cache 缓存回收策略

未使用 CDN 缓存

缓存数据过期策略

Redis 的数据淘汰策略如下图:

Guava Cache 数据行态图

Ehcache 架构图

数据一致性

一齐,它的缺点也是应为缓存跟应用线程耦合,多个应用线程无法直接的共享缓存,各应用或集群的各节点都才能 维护另一方的单独缓存,对内存是本身浪费。

Memcached 是一个多多多多高性能,分布式内存对象缓存系统,通过在内存里维护一个多多多多统一的巨大的 Hash 表,它才能用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。

Guava Cache 缓存更新策略

在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。

Redis 数据模型



Guava Cache 的应用场景如下图:

架构特点

开源实现如下图:

CDN 缓存优点如下图:

缓存一般是 Key-Value 辦法 占据 ,当某一个多多多多 Key 不占据 完正都是查询数据库,假如有一天本身 Key,一个劲不占据 ,则会频繁的请求数据库,对数据库造成访问压力。

Redis 的持久化辦法 如下图:

Ehcache 都还能不能从线程内缓存扩展到使用 TB 级缓存的混合线程内/线程内部署。

Redis 的缓存设计原则如下图所示:

底层哈希表实现(渐进式Rehash)如下图:

新增字典元素图解

本地应用缓存

CDN(Content Delivery Network 内容埋点网络)的基本原理是广泛采用各种缓存服务器,将什么缓存服务器分布到用户访问相对集中的地区或网络中。

缓存主要分为四类,如下图:

Guava Cache 应用场景

可能缓存属于持久化数据的一个多多多多副本,或者不可处置的会再次总出 数据不一致问题,意味脏读或读不到数据的情况汇报。

优点

缓存概述

Server 端持久化的每种操作图解

Ehcache 的架构如下图:

缓存的分类

或者 特别热点的数据,高并发访问同一份缓存数据,意味缓存服务器压力过大。

在单应用不才能 集群支持可能集群情况汇报下各节点不多再互相通知的场景下使用本地缓存较离米 。

Ehcache 缓存数据过期策略如下图:

简单的说也不我将数据调用到内存中,或者从内存中读取,从而大大提高读取波特率。

Redis 还都还能不能使用客户端分片来扩展写性能,内置了 复制(replication),LUA 脚本(Lua scripting),LRU 驱动事件(LRU eviction),事务(transactions) 和不同级别的磁盘持久化(persistence)。

Ehcache 应用场景如下图:



Memcached 分布式集群实现



Redis 与 Memcached 的比较如下图:

Memcached

常见的问题主要包括如下几点:

数据一致性

缓存穿透

缓存雪崩

缓存高可用

缓存热点

缓存雪崩

分布式缓存

Ehcache 应用场景

Ehcache 过期数据淘汰机制:即懒淘汰机制,每次往缓存放到数据的之后 ,完正都是存一个多多多多时间,在读取的之后 要和设置的时间做 TTL 比较来判断有无过期。

Guava Cache

Redis 与 Memcached 比较

缓存的分类

Memcached 的特点如下图:

原文发布时间为:2018-08-05

本文作者:陈彩华

本文来自云栖社区合作者辦法 伙伴“数据和云”,了解相关信息都还能不能关注“数据和云”。

基本介绍:Guava Cache 是 Google 开源的 Java 重用工具集库 Guava 里的一款缓存工具。

Guava Cache 行态特点

可能用户请求的页面在代理服务器上有缓冲励志的话 ,代理服务器直接将缓冲内容发送给用户。



缓存穿透

基本介绍:Ehcache 是本身基于标准的开源缓存,可提高性能,卸载数据库并复杂可伸缩性。



缓存热点

Redis

处置:复制多份缓存副本,把请求分散到多个缓存服务器上,减轻缓存热点意味的单台缓存服务器压力

案例主要参考新浪微博陈波的技术分享,都还能不能查看原文《百亿级日访问量的应用如可做缓存埋点?》



Rehash 执行流程

Ehcache

业界案例

反向代理占据 应用服务器机房,处置所有对 Web 服务器的请求。

Memcached 的基本架构如下图:



SSD Cache 作为 L2 缓存使用,第一降低了 MC/Redis 成本占据 问题,容量小的问题,也处置了穿透 DB 带来的数据库访问压力。

分布式缓存的主要接入辦法 如下图:



Ehcache 主要行态

缓存介质如下图所示:

编程直接实现如下图:

Redis 数据淘汰内部实现

缓存数据过期策略:LRU(最近离米 使用)到期失效策略,在 Memcached 内存储数据项时,都还能不能指定它在缓存的失效时间,默认为永久。

下面逐一介绍分析什么问题以及相应的处置方案。

分布式集群实现:服务端并什么什么都这么 “ 分布式 ” 功能。每个服务器完正完正都是完正独立和隔离的服务。 Memcached 的分布式,是由客户端线程实现的。

Guava Cache 特点与功能

CDN 缓存

Guava Cache 的缓存回收策略如下图: