软件设计之缓存使用

llguanli llguanli     2022-09-07     165

关键词:

原网址将会不断更新 :   作程的技术博客  《软件设计之缓存的使用 - 总结》  it.zuocheng.net 

本文主要讨论分布式环境下,缓存怎样在软件设计作用、原理、实现方式及注意问题。

缓存的作用

  • 减小原始数据訪问压力
  • 提高资源利用率

缓存的原理

局部性原理

缓存的实现方式

查询算法

  • 散列算法,Hash 、 MD5 等
  • B数、二叉树、有序二分查找等

存储

  • 仅仅将訪问量最高的部分数据放入缓存
  • 将数据放到比原始IO速率更高的存储介质中

缓存资源回收

  • RUL 算法
  • 定时清理
  • 设置资源有效时间

缓存的存储介质

  • CPU 寄存器
  • 内存
  • 本地文件
  • 分布式系统(Memcache 、 Redis)
  • 数据库缓存数据表

缓存设计注意的问题

资源的一致性。Cache coherence

  • 避免数据脏读
  • 多级缓存的一致性协议

系统的鲁棒性

空间换时间

多级缓存


高并发系统设计之缓存(代码片段)

本文已收录至Github,推荐阅读👉Java随想录这篇文章来讲讲缓存。缓存是优化网站性能的第一手段,目的是让访问速度更快。说起缓存,第一反应可能想到的就是Redis。目前比较好的方案是使用多级缓存,如CPU... 查看详情

成为架构师课程系列高性能系统设计之分布式缓存

...了解了在高并发大流量下,数据库层的演进过程以及库表设计上的考虑点。你的垂直电商系统在完成了对数据库的主从分离和分库分表之后,已经可以支撑十几万DAU了,整体系统的架构也变成了下面这样:从整体上看,数据库分... 查看详情

[分布式服务]海量互联网服务设计之降级设计

...级体验降级服务要点上周在[分布式服务]海量互联网服务设计的有损价值观这篇文章中提到,与金融行业服务要求的强一致性不同,海量互联网服务要求的是能够扛住更高的qps,服务降级研究的问题是在服务器资源有限的情况下,... 查看详情

《20171101-构建之法:现代软件工程-阅读笔记》

软件测试  按测试设计的方法分类    1)、黑箱:在设计测试的过程中,把软件当成“黑箱”,无法了解或使用系统的内部结构和知识。    2)、白箱:在设计测试过程中,设计者可以看到软件系统的内部结构,并... 查看详情

gof23种设计模式之己见

... 首先要说的就是设计模式的定义,我记得这是上学期《软件设计模式》考试中的第一道名词解释题,当时为了应付考试而背得滚瓜烂熟,可是这个学期一转眼就忘记了。软件模式是一套被反复使用、多数人知晓的、经过分类编... 查看详情

作业六之设计模式

...中解决问题的一种方案,不同的领域有不同的模式。随着软件工程领域的发展,模式的一般概念被应用到软件开发领域,软件设计模式被提出,设计模式的出现能让我们以前人一些成熟的设计方案为基础,来指导我们新项目的开... 查看详情

redis简介,安装

...放在距离计算机最近的位置以加快处理速度。缓存是改善软件性能的第一手段,在复杂的软件设计中,缓存几乎无处不在。大型网站架构设计在很多方面都使用了缓存设计。Redis就是目前缓存的主流技术。缓存主要用来存放那些... 查看详情

揭秘设计模式之享元模式(代码片段)

...、全国统一社保联网、身份证实名联网、各种第三方抢票软件通过缓存用户信息,不停的去12306官网去查询是否有票,他们都有缓存共享的概念,比如身份证、社保联网可以防止重复办理,浪费资源,节省大量钱财。享元模式定义享元... 查看详情

分布式系列之缓存设计中常见的问题

   缓存这个东西相信大家工作中都接触得比较多,相应的在不同场景下也会遇到各种各样的问题。下面我列举几种可能会遇到的问题并提供一些解决建议。 1、如何把海量数据存放在缓存中并提供快速查询  ... 查看详情

http系列之:http缓存

简介为了提高网站的访问速度和效率,我们需要设计各种各样的缓存,通过缓存可以避免不必要的额外数据传输和请求,从而提升网站的请求速度。对于HTTP协议来说,本身就自带有HTTP缓存。今天我们就深入探讨一下HTTP中的缓存... 查看详情

8.软件架构设计:大型网站技术架构与业务架构融合之道---高并发问题(代码片段)

第8章高并发问题8.1问题分类 8.1.1侧重于“高并发读”的系统 1.场景一:搜索引擎 读写的差异: a)数量级 b)响应时间 c)频率 2.场景二:电商的商品搜索 3.场景三:电商系统的商品描述,图片和价格 8.1... 查看详情

java:数据结构笔记之lru缓存机制的简单理解和使用(代码片段)

...缓存机制1、题目原题链接运用你所掌握的数据结构,设计和实现一个LRU(最近最少使用)缓存机制。它应该支持以下操作:获取数据get和写入数据put。获取数据get(key)-如果关键字(key)存在于缓存中,则获取关键字的值... 查看详情

软件工程课程设计之xmal

前言  最近做软件工程课设,因为需要用到可视化界面,经过仔细考察,在小组成员的建议下,最后决定使用XMAL做前台。题目分析  题目:物理环境包括温度、湿度、大气压力、光照等参量。软件能够以图形化方式,实时... 查看详情

glide4.12图片框架之多级缓存源码设计分析(代码片段)

...载图片的流程、以及Glide图片通过巧妙的空view的Fragment的设计实现的Glide的图片加载的三大生命周期函数onStart、onStop、onDestroy。Glide的框架的源码量确实比较大,今天我们再详细分析一下,Glide的框架的缓存模块的设计。... 查看详情

glide4.12图片框架之多级缓存源码设计分析(代码片段)

...载图片的流程、以及Glide图片通过巧妙的空view的Fragment的设计实现的Glide的图片加载的三大生命周期函数onStart、onStop、onDestroy。Glide的框架的源码量确实比较大,今天我们再详细分析一下,Glide的框架的缓存模块的设计。... 查看详情

设计模式之行为型备忘录模式

在不破坏对象的封装性的前提下,在对象之外捕获并保存该对象内部状态以便日后对象使用或者对象恢复到以前的某个状态。//Page备忘录类varPage=function(){//信息缓存对象varcache={};returnfunction(page,fn){//判断该页数据是否在缓存中if(c... 查看详情

软件测试之效能测试

效能测试(PerformanceTest):用户使用软件,不光是希望软件能够提供一定的服务,而且还要求服务的质量要达到一定的水平。软件的效能是这些“非功能需求”或者“服务质量需求”的一部分。软件在设计时能否提供令用户满意的... 查看详情

加速与缓存技术之varnish

...能且开源的反向代理服务器和HTTP加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的squid相比,varnish具有性能更高、速度更快、管理更加方便等诸多优点,很多大型的网站都开始尝试使用varnish来替换squi... 查看详情