微服务实战系列之Cache

前言

欢迎来到Cache(缓存)的世界!
自从世界第一台计算机诞生之日起,人们对效率的渴望逐步增强。从CPU到存储,从芯片到内存,一批又一批的先驱以一种孜孜不倦的“工匠”精神,为计算机运行效率的提升做出了不可磨灭的贡献。从而也为世界各国计算机的快速发展和普及铺平了道路,迎来了发展的春天!

本期主题,博主带着大家了解Cache,进而掌握如何使用Cache
首先,按惯例,请允许微服务大家族成员前来报到。如有需要请回看,欢迎三连:

  • 微服务实战系列之Nginx(技巧篇)
  • 微服务实战系列之Nginx
  • 微服务实战系列之Feign
  • 微服务实战系列之Sentinel
  • 微服务实战系列之Token
  • 微服务实战系列之Nacos
  • 微服务实战系列之Gateway
  • 微服务实战系列之加密RSA
  • 微服务实战系列之签名Sign

提到Cache,各位盆友,可联想到什么?

  • A. redis
  • B. cookie
  • C. ehcache
  • D. memcache
  • E. 其它

欢迎开始今天的旅程,允许博主带着各位盆友“逛一逛”,探一下Cache的内幕。


一、Cache简介

首先我们看一下,什么是缓存:

缓存是指可以进行高速数据交换的存储器,它先于内存与CPU交换数据,因此速率很快。
L1 Cache(一级缓存)是CPU第一层高速缓存。内置的L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般L1缓存的容量通常在32—256KB。
L2 Cache(二级缓存)是CPU的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速率与主频相同,而外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大越好,普通台式机CPU的L2缓存一般为128KB到2MB或者更高,笔记本、服务器和工作站上用CPU的L2高速缓存最高可达1MB-3MB。由于高速缓存的速度越高价格也越贵,故有的计算机系统中设置了两级或多级高速缓存。紧靠CPU的一级高速缓存的速度最高,而容量最小,二级高速缓存的容量稍大,速度也稍低。——百度百科

这是一段来自百科的标准定义,翻译成通俗的语言,大致是:

Cache是用于临时存储频繁使用的数据的存储 空间。

因此它具备几个特征:

1. 占内存
2. 多层级
3. 速度快
4. 体验佳

在这里插入图片描述

接下来,博主带着各位盆友对Cache的核心内容进行初步的剖析。

二、Cache核心

1. 数据共享

为什么数据共享?
那还要借上图加以说明:
在计算机组成结构中,数据读取大致遵循依次CPU—>缓存—>内存—>硬盘路线,当然成本逐步降低,效率也会变的渐行渐远。
因此,缓存数据不能太多,多而不美,也就失去了缓存的意义。
所以,我们在设计缓存的时候,一定考虑Hit(命中率),合理定义哪些属于高热数据。
在这里插入图片描述

2. 多层级

多层级什么概念?
根据服务的执行时序,在每个“关卡”设置缓存,达到综合利用资源的目的。
比如浏览器/客户端设置缓存;
比如web前端设置缓存;
比如后端服务设置缓存;
又比如,我们在架构设计时,可以考虑两级缓存等等。
在这里插入图片描述

3. 一致性

为什么考虑一致性?
因为缓存是缓存,数据是数据,操作有先后,结果分轻重。
如果缓存设计不佳,各种千奇百怪的问题就出现了,比如“幻读”等。那如何解决一致性问题呢?通常有几种策略:

  • 缓存失效

数据更新后,主动将缓存失效,下次请求时,重新load缓存,此乃最简单的策略。

  • 广播更新

在分布式系统中,我们常常最头疼的问题是如何发送消息,因此MQ也成了微服务中常见的组件。所以当数据更新后,可以通过MQ发布订阅消息,由各节点接收订阅并刷新缓存。此策略适用于异步交互场景。

  • 读写互斥

数据更新,有且仅有一个线程在操作。通过引入锁机制完成。此策略可能遇到性能问题。

  • 延迟刷新

与缓存失效策略相比,时间延后,但可能带来数据的延迟问题。

4. 时效性

缓存具备时效性,结合命中率,设计缓存时,应合理定义缓存的过期时间。通常与业务场景有关,需要加以鉴别。


结语

综上,博主针对Cache的基础,进行了初步的介绍。所谓平地起高楼,基础尤重要
理解了缓存的定义,就能够合理使用它。
好了,博主今日到此为止,下期再见!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/204271.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为P40无法链接adb的解决记录

真的很讨厌华为的设备,很多东西啥设备都能跑得好好的,就华为会出问题,简直就是手机界的IE。 情况:突然无法链接adb到P40,拔插无效,关闭开发人员选项再打开也无效,撤销USB调试授权也无效&#x…

西南科技大学电路分析基础实验A1(一阶电路的设计)

目录 一、实验目的 二、实验设备 三、预习内容(如:基本原理、电路图、计算值等) 四、实验数据及结果分析(预习写必要实验步骤和表格) 1. 观测一阶电

leetcode:有效的括号

题目描述 题目链接:20. 有效的括号 - 力扣(LeetCode) 题目分析 题目给了我们三种括号:()、{ }、[ ] 这里的匹配包括:顺序匹配和数量匹配 最优的思路就是用栈来解决: 括号依次入栈…

用于计算机屏幕安全摄像头系统:Screen Anytime Crack

Screen Anytime 是一款软件,旨在自动将整个用户会话或 PC/服务器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 会话的屏幕活动记录到视频日志文件中,以用于记录、审核和监控目的。通过重播其高度压缩的视频,您可以轻松回顾单台计算机或一组服务器/PC …

Joint Bilateral Upsampling

Abstract 图像分析和增强任务(例如色调映射、着色、立体深度和蒙太奇)通常需要在像素网格上计算解决方案(例如,曝光、色度、视差、标签)。计算和内存成本通常要求在下采样图像上运行较小的解决方案。尽管通用上采样方…

只需十分钟快速入门Python,快速了解基础内容学习。零基础小白入门适用。

文章目录 简介特点搭建开发环境版本hello world注释文件类型变量常量数据类型运算符和表达式控制语句数组相关函数相关字符串相关文件处理对象和类连接mysql关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源…

matlab绘图函数plot和fplot的区别

一、背景 有的函数用plot画就会报错,显示数据必须为可转换为双精度值的数值、日期时间、持续时间、分类或数组。 如下图所示: 但用fplot函数就没有问题,因此这里记录一下两者的区别,如果使用不当,画出的图可能就是下…

以太网通讯协议小结--持续更新中

一、以太网介绍 以太网是一种产生较早,使用相当广泛的局域网技术,局域网就是一个区域的网络互联,可以使办公室也可以是学校等等,大小规模不一。 目前以太网根据速度等级分类大概分为:标准以太网(10Mbit/s…

Redis-Redis高可用集群之水平扩展

Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三…

JOSEF 双可调漏电继电器 ZLR-T81 ZCT-80 面板嵌入式安装

ZLR-T系列漏电继电器(以下简称继电器)适用于交流电压为380.660V.至1140V系统中源率为50HZ电流为15~4000A线路中做有无中性点漏电保护. 系列型号 ZLR-T81漏电继电器 ZLR-T81ZCT-35漏电继电器 ZLR-T81ZCT-80漏电继电器 ZLR-T81ZCT-120漏电继电器 一、…

csv文件EXCEL默认打开乱码问题

这里讨论的问题是,当用记事本打开带有中文字符的csv正常时,用excel打开却是乱码。 简单概括就是:编码问题,windows的 excel打开csv文本文件时,默认使用的是系统内的ANSI,在中文环境下就是GB2312。如果写文件…

华为ospf和isis双点双向路由重分布的次优路径和环路终极解决方案

r5上直接导入直连路由 r3和r2进行双点双向路由重分布 查看R3去往R5产生了次优路径: 因为是R2先互相引入的isis和ospf,所以R3会产生次优路径,如果是R3先相互引入ospf和isis,那就是R2去R5会产生次优路径,而R3本身不会。…

Spark_Spark高阶特性

wscg filter导致断链 Codegen 向量化 simdjson Orc Parquet 支持批量读取 spark本身对parquet支持比较好,因为parquet

基于FPGA的五子棋游戏设计

基于FPGA的五子棋游戏设计 本文基于FPGA设计五子棋游戏,使用按键输入,使用VGA接口输出。五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为1010,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮…

牛客 算法题 golang语言实现

题目 HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序 描述 输入整型数组和排序标识,对其元素按照升序或降序进行排序数据范围: 1 ≤ � ≤ 10001≤n≤1000 ,元素大小满足 0 ≤ � &#…

有一种浪漫,叫接触Linux

大家好,我是五月。 嵌入式开发 嵌入式开发产品必须依赖硬件和软件。 硬件一般使用51单片机,STM32、ARM,做成的产品以平板,手机,智能机器人,智能小车居多。 软件用的当然是以linux系统为蓝本&#xff0c…

五分钟 k8s 实战-应用探针

Probe.png 今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了。 今天主要讲解 Probe 探针相…

SpringCloud 微服务全栈体系(十七)

第十一章 分布式搜索引擎 elasticsearch 七、搜索结果处理 搜索的结果可以按照用户指定的方式去处理或展示。 1. 排序 elasticsearch 默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有&#…

C语言进阶指南(11)(指针数组与二维数组)

*欢迎来到博主的专栏——C语言进阶指南 博主id:reverie_ly 文章目录 N级指针指针数组指针数组与二维数组数组指针作为函数的参数 N级指针 指针变量是一个存放地址的变量,在C语言中,每个变量都会有一个地址值。所以指针变量也有一个地址。 …

WIN10 x86环境部署ARM虚拟机(银河麒麟)

我们经常使用的是x86架构的cpu,而对于不同cpu架构的arm架构的操作系统,我们可以通过QEMU模拟器来进行模拟一个arm环境 1、部署前的准备 arm的镜像: 以此镜像为例:Kylin-Server-10-SP2-aarch64-Release-Build09-20210524.iso QE…