引入故意緩存

幾周前,我參加了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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373969.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373969.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373969.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(小議)面向對象

什么是面向對象?如果讓我理解,只有一句話:它是一個與面向過程相對的概念,是一種進化或者升級。人們所設計的程序幾乎都是線性思維,即一步一步往下執行。對于一個沒有人機交互的簡單程序來說,這是簡單易行的…

int類型究竟占幾個字節

最近在看深入理解計算機系統這本書,上面提到了在32位機器和64機器中int類型都占用4個字節。后來,查了The C Programming language這本書,里面有一句話是這樣的:Each compiler is free to choose appropriate sizes for its own ha…

python fieldnames_csvreader.fieldnames在python中未被識別為csv reader對象的屬性

我試圖使用CSV模塊在Python中提取CSV文件的標題.CSV文件非常扁平,看起來像:This, That, The Other1, 2, 3我正在做以下事情:>讀入CSV文件并制作閱讀器對象>將讀者的迭代器推到下一行,強制它至少訪問第一行一次(來自csv模塊文檔:“如果在…

Spring Insight – Web應用程序分析

您是否正在使用Spring Framework編寫Web應用程序? 您是否曾經想過引擎蓋下發生了什么? 為什么您的應用程序響應如此緩慢? 在您仍然等待應用程序響應的同時,為什么窗外的蝸牛如此之快地消失在遠處? 您應該:)&#xff0c…

創建動態鏈接庫時設置導出函數的方法

有兩種方法1.使用模塊定義文件, 2.在要導出的函數前加上 __declspec(dllexport) 我們用VS2008新建個DLL工程,工程名為“TestDLL” 把默認的源文件后綴 .CPP改為.C(C文件) int _stdcall MyFunction(int iVariant){return 0; } 1. 使用傳統的模…

javascript的瀏覽器Bom詳解,window、location、history對象

BOM(BrowserObjectModel)也叫瀏覽器對象模型,描述與瀏覽器進行交互的方法和接口。BOM由多個對象組成, 其中代表瀏覽器窗口的Window對象是BOM的頂層對象,其他對象都是該對象的子對象。 JavaScript由三部分組成:ECMAScript,BOM&…

python右斜杠_Python中的左斜杠、右斜杠(正斜杠和反斜杠)

首先,"/"左傾斜是正斜杠,"\"右傾斜是反斜杠,可以記為:除號是正斜杠一般來說對于目錄分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是現在Windows(一)目錄中的斜杠們python讀文件需要輸入的目錄參…

重用生成的JAXB類

在本文中,我將演示如何利用– XJC擴展來重用以前從XML模式生成的類。 當其他XML架構導入XML架構并且您不想每次都生成相同的類時,這很有用。 導入的架構(Product.xsd) 以下XML模式代表有關產品的基本信息。 產品是此示例域中的常…

MySQL的Master/Slave群集安裝和配置

本文介紹MySQL的Master/Slave群集安裝和配置,版本號安裝最新的穩定版GA 5.6.19。 為了支持有限HA。我們用Master/Slave讀寫簡單孤立的集群。有限HA這是當Master不可用,數據不會丟失。但在Master寫的,必須手工處理故障。假設要支持更高的可用性…

動態申請二維數組

以下是動態申請a[m][n]的源代碼 代碼一&#xff1a; /* 編譯器&#xff1a;DEV C */ #include<stdio.h> #include<stdlib.h> int main() {int **a;int i,j,m,n;scanf("%d%d",&m,&n); a (int **)malloc(sizeof(int *)*m);for (i0;i<m; i){a[i…

判斷線段和直線相交 POJ 3304

1 // 判斷線段和直線相交 POJ 33042 // 思路&#xff1a;3 // 如果存在一條直線和所有線段相交&#xff0c;那么平移該直線一定可以經過線段上任意兩個點&#xff0c;并且和所有線段相交。4 5 #include <cstdio>6 #include <cstring>7 #include <iostream>8 …

JavaOne正在重建動力

在JavaOne上度過了一個非常忙碌的一周&#xff0c;今年的活動有很多讓人喜歡的地方。 有很多驚喜的公告&#xff0c;很多很好的內容/會議&#xff0c;并且在場地和組織上都有很多改進。 對于一直耐心等待我發表我所有演講的人們&#xff0c;我為您的延遲表示歉意……給4個演講一…

tensorflow http調用_《TensorFlow 內核剖析》筆記——系統架構

3 系統架構系統整體組成&#xff1a;Tensorflow的系統結構以C API為界&#xff0c;將整個系統分為前端和后端兩個子系統&#xff1a;前端構造計算圖后端執行計算圖&#xff0c;可再細分為&#xff1a;運行時&#xff1a;提供本地模式和分布式模式計算層&#xff1a;由kernal函數…

SGU 187.Twist and whirl - want to cheat( splay )

維護一個支持翻轉次數M的長度N的序列..最后輸出序列.1<N<130000, 1<M<2000splay裸題...-------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int ma…

練習一萬小時成天才

隨著暢銷書《異類》的流行&#xff0c;“練習一萬小時成天才”這個口號現在是盡人皆知。也許仍然有不少人相信那些不世出的天才必有天生的神秘能力&#xff0c;但科學家通過大量的調查研究已經達成共識&#xff0c;那就是所有頂級高手都是練出來的。不但如此&#xff0c;最近幾…

(轉)數據流圖

轉自:http://jingyan.baidu.com/article/4f34706eefdb04e387b56deb.html 數據流圖4種圖元 數據流圖的實例 轉載于:https://www.cnblogs.com/wrencai/p/5852389.html

從CLI監視OpenJDK

目前&#xff0c;我大部分時間在Java虛擬機 &#xff08;JVM&#xff09;內或周圍進行大量工作&#xff0c;大部分時間是在Linux上。 當事情變得不對勁并且我試圖確定原因時&#xff0c;我接觸了Java性能分析工具。 這些工具有兩種形式&#xff0c;一種是精美的GUI&#xff08;…

python數據庫優化_python | Mysql性能優化一

對mysql優化是一個綜合性的技術&#xff0c;主要包括表的設計合理化(符合3NF)添加適當索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]分表技術(水平分割、垂直分割)讀寫[寫: update/delete/add]分離存儲過程 [模塊化編程&#xff0c;可以提高速度]對mysql配…

MySQL中文亂碼問題

項目中用到MySQL數據庫時中文出現亂碼問題&#xff08;中文字符都變成了&#xff1f;&#xff09;解決&#xff1a; 1、統一項目與數據庫的編碼&#xff0c;項目中用的是UTF-8因此我的把數據庫的編碼統一成UTF-8 修改方式&#xff1a;修改 MySQL根目錄中的 my.ini 文件替換d…

json與字符串互轉

1 字符串轉JSON var objeval((str"))var objJSON.parse(str)var objstr.parseJSON()2 JSON轉字符串 var strobj.toJSONString()var strJSON.stringify(obj)轉載于:https://www.cnblogs.com/liu-xia/p/5050878.html