内存缓存(in-memory cache)

当建立一个大型Java应用时,引起性能问题大部分是延迟,延迟是指请求和响应之间的时间差,在一个分布式Java系统中引起延迟的原因有:

  1. 从磁盘上加装数据的IO延迟
  2. 跨网络加装数据的IO延迟。
  3. 在分布式锁上的资源争夺。
  4. 垃圾回收引起的暂停。

典型Ping时间是:本地机器是57µs;局域网是300 µs;从伦敦到纽约是100ms;对于1Gb网络,网络数据传输是每秒25MB – 30MB。对于10GB网络是每秒250MB – 350MB。使用SATA 3.0接口的SSD硬盘数据传输是每秒500-600MB。如果你有1G以上数据需要处理,磁盘延迟会严重影响应用性能。

硬件上最低延迟是内存,典型的内存缓存是每秒3-5 GB,能够随着CPU扩展。如果你有两个处理器,你就能每秒10GB,如果有4CPU就能获得 20GB. 有一个内存基准测试称为STREAM (http://www.cs.virginia.edu/stream/) 是测试许多计算机的内存吞吐量,一些在大量CPU帮助下能够实现每秒TB级别的吞吐量。

因此可以总结如下:

  • 内存是快的: 为了高性能,你需要在内存中处理数据。
  • 网络是慢的: 通过网络传输数据会严重影响性能,包括数据库连接池。

在许多应用中,应用的快速性能与数据实时更新需要寻找一个平衡点,有时你需要大胆地使用缓存,但是你可能会发现有旧脏数据现象发生,当然可以再抓取更新数据,但是可能会牺牲一些性能,你能,你可以鱼和熊掌兼得,那么就要花费购买更多硬件,增加软件的复杂性。

内存缓存原来作用是提高数据库访问性能。但是缓存不是数据库遮羞布,架构上缓存引入有着重要意义:状态对象:数据库的替代者。

缓存实际是内存,将状态置于内存而不是数据库,不但性能提升,还提高软件的可伸缩性和扩展性,直至轻松发展为分布式系统或云计算,这种缓存称为内存缓存(in-memory cache)或称 数据网格In-Memory-Data-Grid (IMDG);Java EE 7引入分布式 弹性缓存Elastic Caching ,作为其云核心战略的一部分。 云计算是一种计算和存储分离的模型,云计算本质是分布式可伸缩的内存计算,可见Amazon弹性缓存介绍。

当我们将DDD领域模型加载到内存中以后,我们就不再面向关系数据库中数据表编程,而是真正直接面向模型对象编程。Java内存模型优点:基于内存的并发模型,多线程机制,大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁。 多核并行计算模型 基于线程的异步模型(Domain Events)。

Twitter从Ruby转向JAVA的实践证明:Cache缓存 + JVM微调是Java/JVM的核心竞争力,这也是最容易被我们忽视的,因为很多使用Java系统(包括Spring + Hibernate)只是当作SQL语句的包装器来使用,负载主要集中在数据库上,根本不会使用In-memory Cache。

Jdon认为对象缓存恰好是领域模型和Java内存模型之间的衔接物,通过引入缓存,将领域模型落实到计算机平台上,如下图,基于此理念JdonFramework特点就是DDD + Cache,而Spring 3才刚刚加入缓存,两种框架相比可见关键性方向的不同:

内存缓存(in-memory cache)相关推荐

  1. 内存缓存(from memory cache)和硬盘缓存(from disk cache) 的区别

    引言 ?命中强制缓存时,资源会显示 from memory cache or from disk cache 两者的区别 内存缓存(from memory cache) 内存缓存具有两个特点,分别是快 ...

  2. 聊一聊缓存 [from memory cache 和 from disk cache]

    今天看到了一个问题,如果浏览器关闭了再打开, 请求还是from cache吗?  笼统的说yes 现在简单的来分析一下,首先,大家可以想一下,浏览器的缓存存放在哪里,如何在浏览器中判断强制缓存是否生效 ...

  3. disk cache(磁盘缓存) 和 memory cache(内存缓存)的区别

    disk cache(磁盘缓存) 和 memory cache(内存缓存)的区别 同: 都属于强缓存,现在浏览器缓存存储图像和网页等(主要在磁盘上),而你的操作系统缓存文件可能大部分在内存缓存中. 使 ...

  4. 浏览器缓存:memory cache、disk cache、强缓存协商缓存等概念

    文章目录 分类 memory cache disk cache Service Worker Push Cache 缓存过程 强缓存 1.Expires 2.Cache-Control Expires ...

  5. 浏览器缓存 from memory cache与from disk cache详解

    在chrome浏览器中的控制台Network中size栏通常会有三种状态 from memory cache from disk cache 资源本身的大小(如:1.5k) 那么问题来了 三种区别在哪 ...

  6. 浏览器缓存(一):强缓存 MEMORY CACHE 和 DISK CACHE

    关于memory cache 和 disk cache 随便浏览一个网站: 首次打开,或者开启浏览器的 Disable Cache(浏览器的Network下, 与Preserve log同级别),在s ...

  7. memory cache 和 disk cache

    from memory cache 和 from disk cache 最近在优化Vue项目,因此打开网页,按下F12.发现很多js,css得下载来自于 memory cache,引申出问题:请求时浏 ...

  8. 缓存存在那些位置?缓存位置可分Service Worker、Memory Cache、Disk Cache、Push Cache四种

    从缓存位置上来说分为四种,并且各自有优先级,当依次查找缓存且都没有命中的时候,才会去请求网络. Service Worker Memory Cache Disk Cache Push Cache Se ...

  9. java cache详解,Java内存缓存详解

    1.缓存为什么要存在 应用服务器资源是有限的,数据库每秒中接受请求的次数也是有限的.如果利用有限的资源来提供尽可能大的吞吐量呢,一个办法:减少计 算量,缩短请求流程(减少网络io或者硬盘io),这时候 ...

  10. 读取文件慢_页面缓存(Page Cache)-内存和文件之间的那点事儿(下)

    原文:https://manybutfinite.com/post/page-cache-the-affair-between-memory-and-files/ 翻译:RobotCode俱乐部 现在 ...

最新文章

  1. 官宣弃用Java 8!Kafka 3.0.0 新功能get
  2. 程序是什么--过滤器和状态机
  3. 关于IOCP完成端口的文章
  4. log4cxx编译过程–linux
  5. ubuntu16.04安装mysql-workbench
  6. 数据结构(一)——二叉树的性质与两种遍历方法
  7. python3 循环获取checkbutton_Python3 tkinter基础 Menu add_checkbutton 多选的下拉菜单
  8. Srs之Clion编译
  9. 2022趋势洞见之“云网端融合”
  10. access无法与wincc链接_wincc连接access
  11. 光谱数据计算CIE值(三刺激值、CIE1931、CIE1976、CCT)软件
  12. 如何写论文中的相关工作部分
  13. msdn.itellyou.cn文件类型大小统计
  14. 计算机桌面整洁,想让你的桌面变得整洁干净,这几款桌面整理软件别错过
  15. matlab output()函数,matlab 函数y=f(input,output)该如何实现?
  16. 康蒂尼药业再次冲刺港股:9个月营收4.4亿 龙磐创投是股东
  17. 键盘计算机的区别吗,机械键盘如何选购? 它和普通键盘有什么区别?
  18. 人工智能技术与物联网的融合
  19. 兄弟连高老师免费收徒
  20. 1010: 平行四边形

热门文章

  1. MATLAB小波变换图像处理简单示例
  2. 排队论模型(七):排队系统的优化
  3. 通过培训机构入行的3D游戏建模靠不靠?
  4. SQL中DDL语句(数据表定义语言)
  5. Delphi的多线程开发实例
  6. c++/c memcpy函数用法(拷贝数组的内容)
  7. 压缩感知学习(一):压缩感知的起源
  8. 微信小程序自定义card图文组件
  9. CPU Cycle(CPU 周期)、Instruction Cycle(指令周期)、Clock Cycle(时钟周期)
  10. MySQL修改数据库名字