優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利

利用應(yīng)用緩存

盡可能減少系統(tǒng)中的時間緩存。由于大多數(shù) RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))具有ACID屬性,要擴展具有時間約來的系統(tǒng)非常難。要慎重考慮對于約來的需水,如要水從用戶看到物品直到購買它時它一直可用。對于某些邊緣情況,補償用戶的失望比不能拓展系統(tǒng)好得多。



在你常用的搜索引上簡單搜索一下,就能找到關(guān)于該主題的免費好建議。我們要介紹的是兩個基礎(chǔ)要點:

第一,如果你想以具有成本效益的方式進行擴展,必須采用應(yīng)用層緩存;

口第二,這種緩存方式必須從系統(tǒng)架構(gòu)的角度開發(fā),以使其長期有效。

按照服務(wù)或資源(Y軸)劃分平臺(或架構(gòu)),或者按照你對請求者或客戶了解的某一項進行劃分(Z軸),會為服務(wù)請求提供巨大的數(shù)據(jù)可緩存性。問題是,采用不同的軸或原則劃分各自能獲得多大的好處隨著開發(fā)了新特性或功能,有了新的數(shù)據(jù)需求,這個問題的答案會改變。
 
那么實現(xiàn)方法就要隨之改變,以適應(yīng)不斷改變的業(yè)務(wù)需求。但識別這些改變的需求的過程是相同的。學(xué)習(xí)型的組織需要不斷分析產(chǎn)品流量、每個交易的成本以及用戶感知的響應(yīng)時間,以便在生產(chǎn)環(huán)境中出現(xiàn)瓶頸的早期跡象時就識別出來,把數(shù)據(jù)交給架構(gòu)組對產(chǎn)品進行修改。

這個問題的關(guān)鍵是,哪種類型的劃分或細致劃分可以使系統(tǒng)或平臺在擴展性和成本方面獲得最大的好處。通過實現(xiàn)正確的劃分并在應(yīng)用服務(wù)器上緩存數(shù)據(jù),完全可能用100臺或10萬臺服務(wù)器處理相當(dāng)于當(dāng)前生產(chǎn)環(huán)境流量的兩倍、三倍甚至十倍的流量。為了說明這一點,讓我們看個常用的電子商務(wù)站點的例子,這是一個相當(dāng)?shù)湫偷膶W⒂跐M足業(yè)務(wù)需求SaaS站點,還是一個社交網(wǎng)絡(luò)或在社交網(wǎng)站。

我們的電子商務(wù)站點具有很多功能,包括搜素、瀏覽、圖像查看(包括縮放)、賬戶更新、登錄、購物車、登出、建議物品,等等。對當(dāng)前生產(chǎn)環(huán)境流量的分析表明,最常用的功能(包括搜索、瀏覽和建議物品)涉及80%的交易,而這些交易涉及的商品不到總量的20%。這里可以利用帕累托法則,對這些類型的服務(wù)進行Y軸(功能性的)劃分,讓相對較少的對象獲得較高的命中率。這種方法的緩存性比較高,動態(tài)系統(tǒng)可以受益于以前相似的請求得到的結(jié)果。

我們還發(fā)現(xiàn)存在大量的超級用戶,他們的請求相當(dāng)頻繁。對于那些與用戶相關(guān)的功能,如登錄、購物車、賬戶更新(或其他賬戶信息)等,可以采用Z軸劃分。雖然我們可以對這些事件進行假設(shè),但顯然從現(xiàn)有的盈利站點獲取真正的產(chǎn)品數(shù)據(jù)更有助于我們做決定。

再舉一個例子,假設(shè)我們有一個SaaS業(yè)務(wù),通過電話服務(wù)、電子郵件服務(wù)、聊天服務(wù)和關(guān)系管理系統(tǒng)幫助公司進行客戶支持。在這個系統(tǒng)中,任何特定業(yè)務(wù)都有許多特有的原則。對于每個業(yè)務(wù),這些原則可能都需要大量的內(nèi)存來緩存這些規(guī)則以及業(yè)務(wù)運維所必需的數(shù)據(jù)。如果你已經(jīng)得出了結(jié)論,即面向客戶的劃分或者說Z軸劃分是正確的方法,那么你是對的。但我們還想在數(shù)據(jù)庫和應(yīng)用方面都維持多租戶的假象。如何實現(xiàn)這一點,并且把最常訪問的用戶緩存起來,以便進行具有成本效

益的擴展呢?我們]的答案還是帕累托法則。最大業(yè)務(wù)的20%可能占總交易量的80%(我們的大部分客戶都存在這種情況),我們可以將它們分布在幾個劃分的數(shù)據(jù)庫上。要獲得成本的杠桿作用,可以把80%6較小的用戶平均分布到所有劃分的數(shù)據(jù)庫上。這里的理論依據(jù)是訪問較少的公司緩存命中率較低,即使它們存在于自己之中。因此,我們可以讓較大的客戶從緩存中獲益,同時從較小的客戶那里得到成本杠桿。除非我們把較小的客戶放在它們專用的系統(tǒng)中,否則它們的的體驗與大客戶不會有明顯的不同,而眾所周知,這樣做,我們]不能得到SaaS環(huán)境帶給我們的預(yù)期收益。

最后一個例子是處理社交網(wǎng)絡(luò)或交互式站點。你可能已經(jīng)預(yù)料到了我們?nèi)匀灰獞?yīng)用帕累托法則和從我們的生產(chǎn)環(huán)境得到的信息,幫助我們進行決策。社交網(wǎng)絡(luò)通常會有少量的用戶產(chǎn)生令人難以置信的大流量。有時,這些用戶可能是活躍的消費者,有時他們則是活躍的生產(chǎn)者(其他用戶的目的地),而有時則兩者兼?zhèn)洹?br />
第一步,我們要識別是否有一小部分信息或子站點占據(jù)了大量的“讀”流量。在社交網(wǎng)絡(luò)中,這種節(jié)點可以在我們設(shè)計架構(gòu)時提供指引,使我們對那些生產(chǎn)者執(zhí)行Z軸劃分,從而在讀操作方面,使它們的節(jié)高具有高緩存性。假設(shè)帕累托法則成立(通常成立),我們用少量的服務(wù)器提供了將近80%的讀流量。我們的股東會很高興,因為以非常低的資本密集度就可以服務(wù)于那些請求。

對于社交網(wǎng)絡(luò)中非常積極的內(nèi)容生產(chǎn)者和更新,又該如何呢?根據(jù)它們的內(nèi)容是否具有很高的消費(讀)率或是否基本處于休眠狀態(tài),這個問題的答案有所不同。對于用戶具有高生產(chǎn)(寫更新)率和高消費(讀) 率的情況,可以直接把它的內(nèi)容存發(fā)布到讀取它的那個分區(qū)或節(jié)點上。如果隨著這些節(jié)點越來越熱門,讀寫沖突成為問題了,那么我們可以使用讀復(fù)制和水平擴展技術(shù)(X軸劃分),或者開始考慮如何對這些更新進行排序,并異步地應(yīng)用它們隨著我們不斷地成熟,可以把這些技術(shù)混合起來使用。如果使用了從瀏覽器到CDN到頁面緩存和應(yīng)用緩存的各種緩存技術(shù)之后,仍然有問題,那么可以繼續(xù)細化我們的劃分。我們可以給特定用戶的更新分出級別,根據(jù)內(nèi)容分界線劃分它們(另一種類型的Y軸劃分),或者,我們可以繼續(xù)創(chuàng)建數(shù)據(jù)實例的副本(X軸劃分)。也許我們發(fā)現(xiàn)要讀的信息有特殊的地理偏向性,某些類型的新聞就屬于這種情況,那么可以根據(jù)請求的地理位置決定的邊界劃分數(shù)據(jù),請求是我們了解的有關(guān)請求者的信息,因此,這是另一種類型的Z軸劃分。

但愿你已經(jīng)發(fā)現(xiàn)了這個原則中的模式。第一步是推測可能使用的劃分方法,并決定采用哪種劃分方法可以最大化網(wǎng)站建設(shè)緩存性。在應(yīng)用和支持層面的永久性數(shù)據(jù)存儲中實現(xiàn)這些劃分后,在生產(chǎn)環(huán)境中評估它們的有效性?;谏a(chǎn)數(shù)據(jù)進一步細化你的方法,并迭代性地應(yīng)用帕累托法則和AKF擴展立方,來細化和提高緩存命中率。

本文地址:http://blackside-inc.com//article/3478.html
相關(guān)文章:
最新文章: