主动学习

服务端缓存

为系统引入缓存的理由

从开发角度来说,引入缓存会提高系统的复杂度,因为你要考虑缓存的失效、更新、一致性等问题(硬件缓存也有这些问题,只是不需要由你来考虑,主流的 ISA 也都没有提供任何直接操作缓存的指令);
从运维角度来说,缓存会掩盖掉一些缺陷,让问题在更久的时间以后,出现在距离发生现场更远的位置上;
从安全角度来说,缓存可能泄漏某些保密数据,这也是容易受到攻击的薄弱点。

理由有
第一种,为了缓解 CPU 压力而做缓存。
第二种,为了缓解 I/O 压力而做缓存。

一种是以 Guava Cache 为代表的同步处理机制。即在访问数据时一并完成缓存淘汰、统计、失效等状态变更操作,通过分段加锁等优化手段来尽量减少数据竞争。
另一种是以 Caffeine 为代表的异步日志提交机制。这种机制参考了经典的数据库设计理论,它把对数据的读、写过程看作是日志(即对数据的操作指令)的提交过程。

写在最后

缓存可能存在什么风险弊端?
1,缓存数据与源数据的一致性(如与数据库不一致等)
2,开发过程中需要程序员操作缓存,要求程序员正确使用
3,缓存数据线上排查问题比较麻烦,进程内缓存无法探查缓存内容

《周志明的软件架构课》学习笔记 Day16相关推荐

  1. 读《周志明的软件架构课》--学习笔记和感想随笔

    主要记录对周老师的<周志明的软件架构课>的学习笔记,本篇章是对课程不可变基础设施部分的学习,从虚拟化的技术理解容器技术的产生和发展,从部署运维角度理解应用的封装,从网络虚拟化理解容器网络, ...

  2. 《周志明的软件架构课》学习笔记 Day11

    1.主动学习 TCC事务 TCC(Try-Confirm-Cancel) TCC 方案,它天生适合用于需要强隔离性的分布式事务中,它是一种业务侵入性较强的事务方案,要求业务处理过程必须拆分为" ...

  3. 《周志明的软件架构课》学习笔记 Day6

    1.主动学习 RESTful 服务 REST概念:资源,表征,状态,转移. 服务端与客户端分离(Client-Server) 无状态(Stateless) 可缓存(Cacheability) 分层系统 ...

  4. 《周志明的软件架构课》学习笔记 Day7

    1.主动学习 本地事务如何实现原子性和持久性 事务处理 事务处理几乎是每一个信息系统中都会涉及到的问题,它存在的意义就是保证系统中的数据是正确的,不同数据间不会产生矛盾,也就是保证数据状态的一致性(C ...

  5. 《周志明的软件架构课》学习笔记 Day1

    1.主动学习 每个开发者都需要学习「如何构建一个可靠的分布式系统」 工作这么多年,发现架构设计,还是需要从业务中来迭代,「作为一名架构师,在软件研发的过程中,最难的事儿,其实并不是如何解决具体某个缺陷 ...

  6. 《周志明的软件架构课》学习笔记 Day5

    1.主动学习 远程服务调用(Remote Procedure Call,RPC) RPC 是我们构建分布式系统的最基本前置条件. 这篇文章我们来了解周志明老师笔下的 RPC. RPC 出现的最初目的, ...

  7. 《周志明的软件架构课》学习笔记 Day15

    主动学习 负载均衡 集群部署的特点 信息系统都需要利用多台机器来扩展服务能力,希望用户的请求不管连接到哪台机器上,都能得到相同的处理. 必须对用户一侧保持足够的透明,即使请求背后是由一千台.一万台机器 ...

  8. 《周志明的软件架构课》学习笔记 Day13

    主动学习 浏览器的客户端缓存 背景:当万维网刚刚出现的时候,浏览器的缓存机制差不多就已经存在了.在 HTTP 协议设计之初,人们便确定了服务端与客户端之间"无状态"(Statele ...

  9. 周志明jvm第三版笔记-第一部分:第一章 走进java

    1.1 概述:java过去.现在.未来简要概述 1.2 java技术体系 Java技术体系包括了以下几个组成部分: Java程序设计语言: 各种硬件平台上的Java虚拟机实现: Class文件格式: ...

最新文章

  1. c++ 高通、低通、带通滤波器_射频/微波滤波器
  2. python3 分割函数 partition rpartition 函数
  3. python给函数设置超时时间_在 Linux/Mac 下为Python函数添加超时时间的方法
  4. python 网页登录selenium_使用selenium登录网页
  5. standardscaler中参数copy的作用
  6. java mybatis 代码生成器_Java MyBatis-Plus 代码生成器
  7. mqtt java_MQTT和Java入门
  8. k8s安装nginx部署前端页面_Kubernetes(k8s)部署并测试nginx service
  9. Box2D物理引擎的使用方法
  10. WA5320-C-EI无线接入点,WX2510H-F无线控制器设置WAPI
  11. 计算机中英汉字段如何切换,电脑上中英文切换按哪个键
  12. 使用 openssl 进行 base64 编解码
  13. Google邮箱账号登陆存在异常活动怎么办?
  14. Java使用zip4j库 压缩文件工具类(自适应压缩包编码格式)
  15. 读书百客:《临江仙引·画舸》赏析
  16. 富途证券赴美上市喜迎开门红,盘中一度大涨近45%
  17. NFT国内化的“数字藏品” 国内互联网龙头的入局
  18. 解决Windows莫名其妙地从休眠状态唤醒的问题
  19. 二分法解一元三次方程c语言,电子技术的应用用二分法解一元三次方程的C++程序:保护环境的广告语...
  20. u盘linux 修复grub,CentOS修复Grub

热门文章

  1. 两种方法分割python多空格字符串
  2. linux开机自启动程序设置方法
  3. APS系统如何选型?(下)
  4. LATEX公式等号对齐方法
  5. 计算机网络双语常用词汇,计算机网络协议词汇Protocols
  6. ASPICE SWE3之——模型生成软件详细设计1 配置
  7. 基于JSP的运动会综合管理系统
  8. C语言~~自制-拼图游戏
  9. 曾经无限风光,再看IT业10大过山车人物
  10. turtle的函数及使用