第一章:基础理论篇:从架构看缓存演进与分类

1.1缓存的场景

定义:

缓存:最通用的解释就是可以进行高速数据交换的存储器。


image.png

缓存的分类

  • 硬盘缓存(机械硬盘)
  • CPU 缓存(以intel的CPU为例)


    image.png

CPU首先从L1一级缓存里面取数据,如果不存在则从二级缓存、三级缓存最终去内存中取数据。
L1d:数据缓存 L1i:指令缓存

缓存与内存的区别

image.png

我理解缓存和内存的概念不一样,缓存可以是所在主机部署,那么他就是在内存中,也可以独立部署,比如分布式缓存等等;

缓存淘汰策略

  • 先进先出策略(FIFO)
  • 最不经常使用的(LRU)
  • 最近最少用(LFU)

缓存使用场景

前提:我们的应用抗不住用户并发访问量时,才会考虑使用。

  • 将数据库的部分数据写入到缓存中;
  • 列表排序分页场景;
  • 计数器(限流)
  • 详情内容放在缓存;
  • 分布式session(用户权限、用户登录);
  • 热点数据的排名(最热的数据放在前面);
  • 发布订阅(小型的消息发布与订阅);
  • 分布式锁;

单体架构看缓存

何为单体架构

一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序,我们通常称之为单体应用。通过tomcat+db就可以完成;

单体架构与缓存

image.png

本地缓存与集中式缓存


image.png

1.2从架构看缓存

单体项目特点

  • 单体项目中模块众多
  • 模块之间紧耦合,不利于拆分
  • 扩展性差
  • 项目布署较复杂

集群架构

何为集群架构

对应于单机,一台机器忙不过来,在多台机器上面部署相同的代码,通过Nginx来负载均衡;
即:同一个业务,部署在多个服务器上 。

集群架构与缓存的关系

image.png

集群架构的特点

集群架构特点

  • 以单体项目为基础进行业务系统的划分
  • 系统之间存在数据冗余,系统耦合度较高
    优点:
  • 项目架构简单,开发成本低
  • 可以针对某一系统瓶颈进行适当扩展
  • 不同系统可以用不同的技术实现
    缺点:
  • 全部功能依然在一个系统中,后期难为维护
  • 集群扩展到一定程度就会产生瓶颈

微服务

微服务架构特点

  • 系统服务独立拆分
  • 微服务单一原则
    优点:
  • 服务拆分更细,服务可以重复使用
  • 可以针对某个服务做性能扩展和优化
  • 服务布署容易,业务之间互相影响较小,可以分别对不同服务做部署升级
    缺点:
  • 服务越来越多,不好管理
  • 服务需要不断增加故障监控、故障自愈、故障预警功能才能从众多服务中了解服务的健康状态

微服务核心点

微服务架构图

image.png

1.3缓存分类

1.3.1客户端缓存

页面缓存

  • 页面自身可以对某些元素或者全部元素进行缓存;
  • 服务端将静态页面或者动态页面进行缓存,供客户端使用;

浏览器缓存

image.png
  • 减少冗余数据传输;
  • 降低服务器的压力;

app缓存

  • 安卓缓存
  • IOS缓存

1.3.2服务端缓存

数据库缓存

  • 数据库为了优化性能的自身缓存框架;
  • MySql的查询缓存Query Cache
  • 双刃剑:
    • 数据库修改比较少,可以大幅度提升查询效率;
    • 数据库修改比较多,成为系统的负担,反而降低查询效率;

平台级缓存

平台级缓存:带有缓存功能的专用库,或者具有缓存特性的框架

  • Ehcashe
  • Jboss Cache
  • OS Cache
  • Guava Cache

不用Map的原因

  • 内存管理:内存类,没有对内存进行控制和管理;
  • 缓存过期策略
  • 容量规划
  • Map是否是线程安全
  • 持久化
  • 多实例数据同步及一致性

应用级缓存

  • redis
  • memcache


    image.png
  • CDN缓存
    内容分发网络
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 微服务最近非常流行,各大互联网公司纷纷采用微服务架构体系,微服务架构模式正在为敏捷部署以及复杂企业应用实施提供巨大...
    Sting阅读 9,128评论 0 57
  • 转自:https://my.oschina.net/CraneHe/blog/703181 最近一直在关注关于微服...
    艾尔温阅读 2,713评论 0 52
  • 浩气展虹霓 人生一世总会有些不顺心的事,所以,我会选择走一走。总是喜欢戴着耳机,一个人散...
    知湫F阅读 124评论 0 2
  • /* 协议 1,自定义协议 2,添加方法 3,声明属性 4,在点击方法中调用 5,设置delegate属性,遵循协...
    吕谊在阅读 164评论 0 0
  • 都要十点了,他还未收摊。他车上红彤彤的糖心苹果,被路灯衬得格外的红,铁盆里的炭火已经要熄灭了,那剩下的一点火...
    一只特立独行的珠阅读 120评论 0 3