paip.cache 缓存架构以及性能提升总结
paip.cache 缓存架构以及性能提升总结
1
缓存架构以及性能(贯穿读出式(LookThrough) 旁路读出式(LookAside) 写穿式(WriteThrough) 回写式(CopyBack)
2
Cache的分级体系设计(L1—L3,mem>file)以及性能
作者Attilax 艾龙, EMAIL:1466519819@qq.com
来源:attilax的专栏
地址:http://blog.csdn.net/attila
1 缓存架构以及性能(贯穿读出式(Look Through)
旁路读出式(Look Aside) 写穿式(Write Through) 回写式(Copy Back)
在增加了Cache之后,便存在数据在Cache及存储之间如何存取的问题。读写各有2种方式。
贯穿读出式(LookThrough)
该方式将Cache隔在调用者与存储之间,调用者对存储的所有数据请求都首先送到Cache,由Cache自行在自身查找。如果命中,则切断调用者对主 存的请求,并将数据送出;不命中,则将数据请求传给存储。该方法的优点是降低了调用者对存储的请求次数,缺点是延迟了调用者对存储的访问时间。
旁路读出式(LookAside)
在这种方式中,调用者发出数据请求时,并不是单通道地穿过Cache,而是向Cache和存储同时发出请求。由于Cache速度更快,如果命中,则 Cache在将数据回送给调用者的同时,还来得及中断调用者对存储的请求;不命中,则Cache不做任何动作,由调用者直接访问存储。它的优点是没有时间 延迟,缺点是每次调用者对存储的访问都存在,这样,就占用了一部分总线时间。
写穿式(WriteThrough)
任一从调用者发出的写信号送到Cache的同时,也写入存储,以保证存储的数据能同步地更新。它的优点是操作简单,但由于存储的慢速,降低了系统的写速度并占用了总线的时间。
回写式(CopyBack)
为了克服贯穿式中每次数据写入时都要访问存储,从而导致系统写速度降低并占用总线时间的弊病,尽量减少对存储的访问次数,又有了回写式。它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而存储中的数据不变(数据陈旧)的情况。但此时可在Cache 中设一标志地址及数据陈旧的信息,只有当Cache中的数据被再次更改时,才将原更新的数据写入存储相应的单元中,然后再接受再次更新的数据。这样保证了 Cache和存储中的数据不致产生冲突
2 Cache的分级体系设计(L1—L3,mem>file)以及性能
Cache分级结构的主要优势在于,对于一个典型的一级缓存系统的80%的申请都发生在内部,只有20%的申请是与外部打交道。而这20%的外部申请中的80%又与二级缓存打交道。因此,只有4%的申请定向到存储中。
一级Cache的容量, 使 性能随之成正比例地提高,还需设置二级Cache。直到L3 Cache。
不同的缓存使用不同的框架。。L1cache一般可用编程语言内部hashmap来实现...L2使用本地cache 框架,,L3 使用远程cache..
3 Cache分类架构(业务cache);提升性能
比如mysql一系列小缓存组成的 。比如表缓存,记录缓存,key缓存,权限缓存等 。
4 Cache应该设置多大
Cache与存储的空间比为4:1000,即128kB Cache可映射32MB数据;256kB Cache可映射64MB。在这种情况下,命中率都在90%以上
5 内存以及文件缓存(Ehcache,, Oscache)
以上就是内存级别的缓存,但是很多情况下是满足不了企业应用的,大数据量的缓存肯定 还是要保存到文件,这个时候光用JDK来实现就比较复杂了,这里当然要用到第三方开源框架来实现了,,推荐还是与,,hibernate采用了 Ehcache做为其缓存机制默认实现,Oscache没深入研究,但是Ibatis推荐的缓存为这个。
为什么要缓存,无非就是节省访问时间已经大并发量带来的访问上资源的消耗,这个资源有软资源和硬资源,做java的几乎每天都在有意识或者无意识的跟缓存打交道,最常见的缓存,Connection Pool,还有IOC其实也算一个。
6 Memcache
7 EhCache总结使用
for (int n = 0; n < 20; n++) {
System.out.println(" nowsize:" + n);
String f = filex.read("c:\\main.dmg",
"gbk");
String string =
"v" + f + n;
SoftReference sr=new SoftReference (string);
// ObjectWrap ow=new ObjectWrap();
// ow.item=sr;
cache.put(new Element("key" + n, sr));
try {
Thread.sleep(200);
} catch (InterruptedException e) {
//
TODO Auto-generatedcatch block
e.printStackTrace();
}
}
System.out.println("ff");
// cache.flush();
//System.out.println("---------" +cache.get("key2").getValue());
===============
ehcache.xml============
<ehcache>
<diskStore path="/atitmpdir"/>
<!--java.io.tmpdir
maxElementsInMemory:内存中最大缓存对象数。
· maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。
开启diskPersistent功能,只要使用的是CacheManager单例模式,下一次启动的时候就会调用上一次运行的缓存。因为我们每次重启程序,谁也不希望之前的缓存会消除,所以,这个功能是针对,当项目DOWN掉的时候,缓存依旧存在,项目开启后,继续引用缓存,不必要重新写入
-->
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="10"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="mycache"
maxElementsInMemory="30"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="500"
overflowToDisk="true"
diskPersistent="true"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
8 PHP Cache缓存机制与文件缓存原理
PHP Cache缓存机制与文件缓存原理 - derrck - 博客园.htm
9 参考
ehcache常用API整理 - 李哥在javaeye - ITeye技术网站.htm
Ehcache和MemCached比较分析 - 踏雪无痕 - 博客频道 - CSDN.NET.htm
ehcache memcache redis 三大缓存男高音 - 滴水穿石,厚积薄发 - 博客频道 - CSDN.NET.htm
ehcache参数简介 - 天道酬勤 - 博客频道 - CSDN.NET.htm
ehcache常用API整理 - 李哥在javaeye - ITeye技术网站.htm
EHcache的配置与使用 - 小梦想的小脚印的日志 - 网易博客.htm.lnk
Ehcache缓存配置 - mgoann的专栏 - 博客频道 -CSDN.NET.htm
Java缓存框架 EhCache - liudaoru - 悟 - ITeye技术网站.htm
oscache ehcache oscache与ehcache的区别 - hjm4702192的专栏 - 博客频道 - CSDN.NET.htm
oscache 与 ehcache的对比 - kissjava的专栏 - 博客频道 -CSDN.NET.htm
【EhCache】Java缓存框架使用EhCache结合Spring AOP - OPEN 开发经验库.htm
关于JCS,OSCache, EHCache这三个缓存方案? -CSDN论坛 -CSDN.NET.htm
缓存之ehcache 之使用 - Java - 学习交流 - 私塾在线 - 只做精品视频课程服务.htm.lnk
paip.cache 缓存架构以及性能提升总结的更多相关文章
- Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案
Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案 1. 业务场景 android+webview h5 css背景图性能提升1 2. ...
- 如何利用缓存机制实现JAVA类反射性能提升30倍
一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> ...
- 再谈HTTP2性能提升之背后原理—HTTP2历史解剖
即使千辛万苦,还是把网站升级到http2了,遇坑如<phpcms v9站http升级到https加http2遇到到坑>. 因为理论相比于 HTTP 1.x ,在同时兼容 HTTP/1.1 ...
- 【转】Nginx学习---Nginx&&Redis&&hcache三层缓存架构总结
[原文]https://www.toutiao.com/i6594307974817120782/ 摘要: 对于高并发架构,毫无疑问缓存是最重要的一环,对于大量的高并发,可以采用三层缓存架构来实现,n ...
- Java进阶专题(十八) 系统缓存架构设计 (下)
前言 上章节介绍了Redis相关知识,了解了Redis的高可用,高性能的原因.很多人认为提到缓存,就局限于Redis,其实缓存的应用不仅仅在于Redis的使用,比如还有Nginx缓存,缓存队列等等.这 ...
- 面试题之java缓存总结,从单机缓存到分布式缓存架构
1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...
- 并发编程二、CPU多级缓存架构与MESI协议的诞生
前言: 文章内容:线程与进程.线程生命周期.线程中断.线程常见问题总结 本文章内容来源于笔者学习笔记,内容可能与相关书籍内容重合 偏向于知识核心总结,非零基础学习文章,可用于知识的体系建立,核心内容 ...
- Web 应用性能提升 10 倍的 10 个建议
转载自http://blog.jobbole.com/94962/ 提升 Web 应用的性能变得越来越重要.线上经济活动的份额持续增长,当前发达世界中 5 % 的经济发生在互联网上(查看下面资源的统计 ...
- java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程
亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...
随机推荐
- 【Tyvj1601】魔兽争霸(主席树,树套树)
题意:要求在N个数的序列中支持以下操作: 1:将第X个元素加上Y 2:询问当前K大值 n<=30000,m<=50000 思路:树状数组套主席树 Tyvj又炸了,还不知道对不对 ..12] ...
- create file遇到操作系统错误5拒绝访问
create file遇到操作系统错误5拒绝访问当用C#程序执行SQL创建一个数据库时出现错误:CREATE FILE 遇到操作系统错误 5(拒绝访问. 原因及解决方法如下:这是因为SQL Serve ...
- deep learning
今天跑一个模型,程序都没变,就配置文件变了.但是总是很快就显示loss为nan. 检查配置文件还是不行,把其中loss改为0还是不行.最后搁置了一下,再回头对比一下电脑上的和服务器上的,发现一个配置文 ...
- Revenge of Nim hdu 4994 (博弈)
http://acm.split.hdu.edu.cn/showproblem.php?pid=4994 题意:现在有两个人在取石子,共有n堆石子,每堆石子取完后才可以取下一堆石子,最后一个取石子的人 ...
- Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3
什么是Genymotion? Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. Genymotion支持Windows.L ...
- python-flask 框架使用 flask_mongoengine
开发环境配置 再使用 mongodb 之前,需要先安装 pymongo ,以及flask_mongoengine 1. 切换到 virtualenv 环境 . /pyenv/bin/activate ...
- andorid SQLite数据库的增删改查 和事务操作
.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
- 关于php中正则匹配包括换行符在内的任意字符的问题总结
要使用正则匹配任意字符的话,通常有以下几种方法,这里我分别对每一种方法在使用的过程中做一个总结: 第一种方式:[.\n]*? 示例 ? PHP preg_match_all('/<div cla ...
- 关于使用tracert命令检测网络问题
tracert命令是一个电脑网络工具-Windows命令行界面程序和内建命令,运行该命令后可以显示本机IP到达目标IP所经过的路由器IP地址,和响应的延迟信息! 在windows操作系统中,点击“开始 ...
- CSS中父元素高度没有随子元素高度的改变而改变,应该如何解决?
如果子元素没有设置浮动(float),父元素实际上会根据内容,自动宽高进行适应的. 当子元素增加了浮动后,最简单的处理方法是给父元素添加overflow:hidden属性,此时父元素的高度会随子元素的 ...