热门标签 | 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



推荐阅读
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文详细介绍了如何在Mac操作系统中为IntelliJ IDEA配置更高的内存限制,以提高开发效率和性能。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 最新版 EasyCriteria 3.0 已正式上线,该版本经过全面重构,带来了多项性能优化与功能增强。更多详情请参阅官方文档:http://uaihebert.com/?p=1898 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
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社区 版权所有