• 《深入分布式缓存 从原理到实践》笔记


    第一章

    1.1 缓存分类

    • 根据软件系统中的位置不同,分为三类:
      • 客户端缓存
      • 服务端缓存
      • 网络中缓存
    • 根据规模和部署方式分类
      • 单体缓存
      • 缓存集群
      • 分布式缓存

    1.2 为什么要用缓存

    提高系统性能,减少网络带宽使用,提高系统吞吐量,

    1.3 缓存发展-网页

    静态页面缓存->动态页面组件缓存->数据库分库分表->分布式缓存

    1.4 客户端缓存

    分为页面缓存和浏览器缓存

    • 页面缓存主要是客户端将页面保存成文件,获取的时候不通过网络而是本地获取在这里插入图片描述
    • 浏览器缓存,浏览器会在硬盘上开辟一个空间来储存资源副本作为缓存,提高客户端在浏览网页过程中的访问资源速度。
    • APP缓存,APP主要将缓存放在内存或者数据库和本地文件中,

    1.5 代理和边缘缓存

    反向代理可以缓存原始资源服务器的一些资源,帮助客户端以更快的速度获取web资源。边缘缓存最典型的就是CDN,CDN是内容分发网络的简称:
    在这里插入图片描述

    1.6 服务端缓存

    1.数据库缓存:比如Mysql的查询缓存,缓存Mysql query的结果集ResultSet。这样就省略了解析,优化器优化和存储引擎取数据的过程。
    2.平台级缓存:Encache,JBoss等
    3.应用级缓存:redis

    一个使用了多级缓存架构的系统如图:
    在这里插入图片描述

    第二章

    2.1 PAXOS,2PAC,3PAC,RAFT,LEASE

    这里讲了这几个分布式系统的中的算法和概念

    脑裂:一个高可用系统中,两个有联系的节点之间断开连接后,两个节点争抢共享资源导致系统混乱的过程。
    解决方法:仲裁机制,比如slave要变成master的时候,让第三方的仲裁节点也ping一下master。


    2.2 分布式系统设计策略

    1. 检测你还活着?
    2. 高可用
    3. 容错机制
    4. 重试机制
    5. 负载均衡

    1.心跳检测
    2.高可用设计模式
    • 主备模式:主机宕机的时候,备机接管主机的一切工作,比如数据库中的Master-Slave架构
    • 互备模式:两个主机
    • 集群模式:有多个节点在运行,同时可以通过主控节点分担请求
    3.容错性

    2.3 分布式系统设计实践

    1.全局ID生成

    业界有几种方案:

    • UUID:当前日期时间+机器识别号组成,但问题是字符串格式太长了
    • Mysql自增长ID,FLicker的方案,需要两个表
    • SnowFlake:https://blog.csdn.net/qq_32828253/article/details/110679170,是twitter的一种分布式ID生成算法

    第三章 动手写缓存

    在这里插入图片描述

    缓存的架构

    参考JSR107规范
    在这里插入图片描述

  • 相关阅读:
    加密与安全
    # ubuntu22下配置postgresql远程访问
    android java读写yaml文件
    【Leetcode】1027. Longest Arithmetic Subsequence
    ARM day4
    Gudu SQLFlow released查询和数据库的数据沿袭
    unity脚本_力 c#
    Redis高可用实战之Cluster
    强化学习:伪代码汇总及用DQN求解MountainCar-v0问题代码
    C语言代码封装MQTT协议报文,了解MQTT协议通信过程
  • 原文地址:https://blog.csdn.net/bupttulongming/article/details/127559597