热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

引入故意缓存

几周前,我参加了ThoughtWorks技术雷达研讨会。我在ThoughtWorks工作了多年,想想是否有人知道这些人在软件开发方面的发展趋势。在技​​
几周前,我参加了ThoughtWorks 技术雷达研讨会。 我在ThoughtWorks工作了多年,想想是否有人知道这些人在软件开发方面的发展趋势。 在技​​巧上带有上升箭头的数字中,第17位被称为“周到缓存”。 和斯科特·肖一起喝酒时,我问他是什么意思。

趋势是从响应缓存到新样式的转变。 所谓反应式,是指您发现系统在构建后无法运行或无法扩展,并且已经投入生产。 许多Ehcache用户都采用这种方式。 我很高兴看到这一趋势。

故意缓存

新技术是:

  • 主动的
  • 计划
  • 在系统上线之前实施
  • 商榷
  • 不仅仅是在您的框架中打开缓存并希望达到最佳效果–这是考虑周到的部分
  • 了解负载特征和数据访问模式
我们为此添加了一些名称,并提出了“ 故意缓存”来总结所有这些内容。
我们正在进行的标准化基于Java和JVM的语言JSR107的缓存的工作将仅有助于此过渡。 它会被包含在Java EE 7中,即使对于那些对遵循EE失去兴趣的人来说,它仍然会发出信号,表明这是一个体系结构决策,应慎重做出。

为什么花了这么长时间?

那么,为什么要等到Ehcache和Memcache以及其他许多人相继出现10年后,这种“新”趋势才出现? 我认为有几个原因。

有人认为缓存很脏

我遇到了很多认为缓存很脏的开发人员。 缓存是作弊。 他们认为这表明某些架构设计失败,最好以其他方式解决。
造成这种情况的原因之一是,许多早期的开源缓存(包括Ehcache)限制了可以实现的数据安全性。 因此,通常的情况是缓存中的数据可能但不确定是正确的。 需要与业务分析师进行复杂的讨论,以确定这是否可以接受以及如何允许过时的数据。 诸如Enterprise Ehcache之类的企业缓存的出现已经克服了这一问题,之所以如此命名是因为它们具有丰富的功能并包含广泛的数据安全性选项,包括在Ehcache的情况下:弱一致性,最终一致性,强一致性,显式锁定,本地和XA交易和原子操作。 因此,即使数据必须正确,您也可以使用缓存。

跟随巨型互联网公司的领导

发生的另一件事是,作为巨型互联网公司,它无法逃脱任何人都使用大量缓存的注意。 而且如果缓存层出现故障,它们将无法工作。 如此之多,以至于如果您要构建大型的.com应用程序,那么显然需要在其中构建缓存层。

早期性能优化被视为一种反模式

在“敏捷”下,我们专注于可能可行的最简单的事物。 要求会不断变化。 您对将来的要求采取的任何批评都会被证明是错误的,并且您的工作被浪费了。 仅在明确需要时才添加它们。 性能和可伸缩性也倾向于通过这种方式完成。 按照此模型,在将应用程序投入生产后,您会发现有关要求的信息,但该要求失败了。 这种相同的思维方式导致构建具有单个数据存储的整体式系统,后来证明需要进行昂贵的重新架构。

我认为我们需要将其视为能力计划。 如果我们在项目开始时获得了有关用户数量,所需响应时间,数据量,访问模式等的估计数量,那么我们就可以对架构以及硬件进行容量规划。 在该体系结构规划中,我们可以计划使用缓存。 由于缓存会影响系统的架构方式和硬件要求,因此这样做很有意义。

参考:在Greg Luck的Blog上 ,我们的JCG合作伙伴 Greg Luck 介绍了故意缓存 。

相关文章 :

  • 新的Java缓存标准(javax.cache)
  • 具有GlassFish和一致性的高性能JPA –第1部分
  • Spring 3.1缓存抽象教程
  • Spring 3.1和JPA的持久层
  • JBoss 4.2.x Spring 3 JPA Hibernate教程
  • GWT Spring和Hibernate进入数据网格世界

翻译自: https://www.javacodegeeks.com/2012/01/introducing-deliberate-caching.html



推荐阅读
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 架构思考
    2019独角兽企业重金招聘Python工程师标准闲来无事,总结了下架构设计方面的一些思考1、稳定性。一切以稳定为中心。架构尽可能简单、清晰。不过度设计2、解耦拆 ... [详细]
  • http:simple-is-better.comnews1047Firefly是免费、开源、稳定、快速扩展、能“热更新”的分布式游戏服务器端框架,采用Python编 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文整理了Java中com.evernote.android.job.JobRequest.getTransientExtras()方法的一些代码示例,展示了 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的性能选项卡当中,关于memcache进行如下配置:cfg_memcache_enable:是否启用memcache缓存,如果为否(N) ... [详细]
  • 下图|通用型_企业用户如何选择合适的云服务器配置?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了企业用户如何选择合适的云服务器配置?相关的知识,希望对你有一定的参考价值。随着网络飞速发展,企业上云已成为 ... [详细]
author-avatar
good7758
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有