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

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

作者: 学海一乌鸦 | 来源:发表于2020-04-23 21:15 被阅读0次

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缓存
    内容分发网络

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/thjzihtx.html