chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

不同的場(chǎng)景下如何選擇和使用適用的緩存框架

大?。?/span>0.6 MB 人氣: 2017-09-30 需要積分:1

  ,講述在不同的場(chǎng)景下如何選擇和使用適用的緩存框架,以達(dá)到提升服務(wù)質(zhì)量,優(yōu)化系統(tǒng)架構(gòu)的目的。

  一般而言,現(xiàn)在互聯(lián)網(wǎng)模式(一個(gè)網(wǎng)站或一個(gè)應(yīng)用),整體流程可以概括描述為 瀏覽器→應(yīng)用服務(wù)器→數(shù)據(jù)庫(kù)或文件(存儲(chǔ))→應(yīng)用服務(wù)器→瀏覽器,這是一個(gè)標(biāo)準(zhǔn)流程,通過(guò)瀏覽器(或App界面)發(fā)起請(qǐng)求,經(jīng)過(guò)服務(wù)器、數(shù)據(jù)庫(kù)計(jì)算整合后反饋瀏覽器呈現(xiàn)內(nèi)容。隨著互聯(lián)網(wǎng)的普及,內(nèi)容信息越來(lái)越復(fù)雜,使用者和訪問(wèn)量越來(lái)越大,我們的應(yīng)用需要支撐更多的并發(fā)量,同時(shí)我們的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器所做的計(jì)算也越來(lái)越多。但是往往我們的應(yīng)用服務(wù)器資源是有限的,且技術(shù)變革是緩慢的,數(shù)據(jù)庫(kù)每秒能接受的請(qǐng)求次數(shù)也是有限的(或者文件的讀寫也是有限的),如何能夠有效利用有限的資源來(lái)提供盡可能大的吞吐量?一個(gè)有效的辦法就是減少計(jì)算量,縮短請(qǐng)求流程——這就是緩存。緩存的出現(xiàn)就是打破上述的標(biāo)準(zhǔn)流程,其中的任何一個(gè)環(huán)節(jié)都可以被截?cái)?,?qǐng)求可以從緩存中直接獲取目標(biāo)數(shù)據(jù)并返回。通過(guò)這種打破常規(guī)的方式,有效減少計(jì)算量,縮短請(qǐng)求流程,有效提升響應(yīng)速度,節(jié)省硬件資源,讓有限的資源服務(wù)更多的用戶。

  如圖1所示,緩存的使用可以出現(xiàn)在 1-4的各個(gè)環(huán)節(jié)中,每個(gè)環(huán)節(jié)的緩存方案與使用各有特點(diǎn)。

  不同的場(chǎng)景下如何選擇和使用適用的緩存框架

  圖1 網(wǎng)絡(luò)應(yīng)用一般流程

  緩存特征

  根據(jù)面向?qū)ο蟮能浖季S來(lái)看,緩存就是一個(gè)對(duì)象類型,那么必然有它的屬性:

  命中率

  命中率=返回正確結(jié)果數(shù)/請(qǐng)求緩存次數(shù),命中率問(wèn)題是緩存中的一個(gè)非常重要的問(wèn)題,它是衡量緩存有效性的重要指標(biāo)。命中率越高,表明緩存的使用率越高。

  最大元素(或最大空間)

  緩存中可以存放的最大元素的數(shù)量,一旦緩存中元素?cái)?shù)量超過(guò)這個(gè)值(或者緩存數(shù)據(jù)所占空間超過(guò)其最大支持空間),那么將會(huì)觸發(fā)緩存啟動(dòng)清空策略根據(jù)不同的場(chǎng)景合理的設(shè)置最大元素值往往可以一定程度上提高緩存的命中率,從而更有效的時(shí)候緩存。

  清空策略

  如上描述,緩存的存儲(chǔ)空間有限制,當(dāng)緩存空間被用滿時(shí),如何保證在穩(wěn)定服務(wù)的同時(shí)有效提升命中率?這就由緩存清空策略來(lái)處理,設(shè)計(jì)適合自身數(shù)據(jù)特征的情況策略能有效提升命中率。常見(jiàn)的一般策略有:

  a. FIFO(first in first out)

  先進(jìn)先出策略,最先進(jìn)入緩存的數(shù)據(jù)在緩存空間不夠的情況下(超出最大元素限制)會(huì)被優(yōu)先被清除掉,以騰出新的空間接受新的數(shù)據(jù)。策略算法主要比較緩存元素的創(chuàng)建時(shí)間。

  b. LFU(less frequently used)

  最少使用策略,無(wú)論是否過(guò)期,根據(jù)元素的被使用次數(shù)判斷,清除使用次數(shù)較少的元素釋放空間。策略算法主要比較元素的hitCount(命中次數(shù))。

  c. LRU(least recently used)

  最近最少使用策略,無(wú)論是否過(guò)期,根據(jù)元素最后一次被使用的時(shí)間戳,清除最遠(yuǎn)使用時(shí)間戳的元素釋放空間。策略算法主要比較元素最近一次被get使用時(shí)間。

  除此之外,還有一些簡(jiǎn)單策略比如:

  根據(jù)過(guò)期時(shí)間判斷,清理過(guò)期時(shí)間最長(zhǎng)的元素;

  根據(jù)過(guò)期時(shí)間判斷,清理最近要過(guò)期的元素;

  隨機(jī)清理;

  根據(jù)關(guān)鍵字(或元素內(nèi)容)長(zhǎng)短清理等。

  緩存介質(zhì)

  (從硬件介質(zhì)上來(lái)看,無(wú)非就是內(nèi)存和硬盤兩種)從技術(shù)上劃分,可以分成幾種,內(nèi)存、硬盤文件、數(shù)據(jù)庫(kù)。

  內(nèi)存:將緩存存儲(chǔ)于內(nèi)存中是最快的選擇,無(wú)需額外的I/O開(kāi)銷,但是內(nèi)存的缺點(diǎn)是沒(méi)有持久化落地物理磁盤,一旦應(yīng)用異常break down,重新啟動(dòng)數(shù)據(jù)很難或者無(wú)法復(fù)原。

  硬盤:一般來(lái)說(shuō),很多緩存框架會(huì)結(jié)合使用內(nèi)存和硬盤,在內(nèi)存分配空間滿了或是在異常的情況下,可以被動(dòng)或主動(dòng)的將內(nèi)存空間數(shù)據(jù)持久化到硬盤中,達(dá)到釋放空間或備份數(shù)據(jù)的目的。

  數(shù)據(jù)庫(kù):前面我們有提到,增加緩存的策略的目的之一就是為了減少數(shù)據(jù)庫(kù)的I/O壓力?,F(xiàn)在使用數(shù)據(jù)庫(kù)做緩存介質(zhì)是不是又回到了老問(wèn)題上了?其實(shí),數(shù)據(jù)庫(kù)也有很多種類型,像那些不支持SQL,只是簡(jiǎn)單的key、value的存儲(chǔ)結(jié)構(gòu)的特殊數(shù)據(jù)庫(kù)(如berkleydb),響應(yīng)速度和吞吐量都遠(yuǎn)遠(yuǎn)高于我們常用的關(guān)系型數(shù)據(jù)庫(kù)等。

  在目前的應(yīng)用服務(wù)框架中,我們對(duì)緩存的分類劃分更常用的是根據(jù)緩存與應(yīng)用的耦合程度,劃分為local cache(本地緩存)和remote cache(分布式緩存):

  Local cache:指的是在應(yīng)用中的緩存組件,其最大的優(yōu)點(diǎn)是應(yīng)用和cache是在同一個(gè)進(jìn)程內(nèi)部,請(qǐng)求緩存非常快速,沒(méi)有過(guò)多的網(wǎng)絡(luò)開(kāi)銷等,在單應(yīng)用不需要集群支持或者集群情況下各節(jié)點(diǎn)無(wú)需互相通知的場(chǎng)景下使用本地緩存較合適;同時(shí),它的缺點(diǎn)也是應(yīng)為緩存跟應(yīng)用程序耦合,多個(gè)應(yīng)用程序無(wú)法直接的共享緩存,各應(yīng)用或集群的各節(jié)點(diǎn)都需要維護(hù)自己的單獨(dú)緩存,對(duì)內(nèi)存是一種浪費(fèi)。

  Remote cache::指的是與應(yīng)用分離的緩存組件或服務(wù),其最大的優(yōu)點(diǎn)是自身就是一個(gè)獨(dú)立的應(yīng)用,與本地應(yīng)用隔離,多個(gè)應(yīng)用可直接的共享緩存。

  目前各種類型的緩存都活躍在成千上萬(wàn)的應(yīng)用服務(wù)中,還沒(méi)有一種緩存方案可以解決一切的業(yè)務(wù)場(chǎng)景或數(shù)據(jù)類型,我們需要根據(jù)自身的特殊場(chǎng)景和背景,選擇最適合的緩存方案。緩存的使用是程序員、架構(gòu)師的必備技能,好的程序員能根據(jù)數(shù)據(jù)類型、業(yè)務(wù)場(chǎng)景來(lái)準(zhǔn)確判斷使用何種類型的緩存,如何使用這種緩存,以最小的成本最快的效率達(dá)到最優(yōu)的目的。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?