
在你常用的搜索引上簡(jiǎn)單搜索一下,就能找到關(guān)于該主題的免費好建議。我們要介紹的是兩個(gè)基礎要點(diǎn):
第一,如果你想以具有成本效益的方式進(jìn)行擴展,必須采用應用層緩存;
口第二,這種緩存方式必須從系統架構的角度開(kāi)發(fā),以使其長(cháng)期有效。
按照服務(wù)或資源(Y軸)劃分平臺(或架構),或者按照你對請求者或客戶(hù)了解的某一項進(jìn)行劃分(Z軸),會(huì )為服務(wù)請求提供巨大的數據可緩存性。問(wèn)題是,采用不同的軸或原則劃分各自能獲得多大的好處隨著(zhù)開(kāi)發(fā)了新特性或功能,有了新的數據需求,這個(gè)問(wèn)題的答案會(huì )改變。
那么實(shí)現方法就要隨之改變,以適應不斷改變的業(yè)務(wù)需求。但識別這些改變的需求的過(guò)程是相同的。學(xué)習型的組織需要不斷分析產(chǎn)品流量、每個(gè)交易的成本以及用戶(hù)感知的響應時(shí)間,以便在生產(chǎn)環(huán)境中出現瓶頸的早期跡象時(shí)就識別出來(lái),把數據交給架構組對產(chǎn)品進(jìn)行修改。
這個(gè)問(wèn)題的關(guān)鍵是,哪種類(lèi)型的劃分或細致劃分可以使系統或平臺在擴展性和成本方面獲得最大的好處。通過(guò)實(shí)現正確的劃分并在應用服務(wù)器上緩存數據,完全可能用100臺或10萬(wàn)臺服務(wù)器處理相當于當前生產(chǎn)環(huán)境流量的兩倍、三倍甚至十倍的流量。為了說(shuō)明這一點(diǎn),讓我們看個(gè)常用的電子商務(wù)站點(diǎn)的例子,這是一個(gè)相當典型的專(zhuān)注于滿(mǎn)足業(yè)務(wù)需求SaaS站點(diǎn),還是一個(gè)社交網(wǎng)絡(luò )或在社交網(wǎng)站。
我們的電子商務(wù)站點(diǎn)具有很多功能,包括搜素、瀏覽、圖像查看(包括縮放)、賬戶(hù)更新、登錄、購物車(chē)、登出、建議物品,等等。對當前生產(chǎn)環(huán)境流量的分析表明,最常用的功能(包括搜索、瀏覽和建議物品)涉及80%的交易,而這些交易涉及的商品不到總量的20%。這里可以利用帕累托法則,對這些類(lèi)型的服務(wù)進(jìn)行Y軸(功能性的)劃分,讓相對較少的對象獲得較高的命中率。這種方法的緩存性比較高,動(dòng)態(tài)系統可以受益于以前相似的請求得到的結果。
我們還發(fā)現存在大量的超級用戶(hù),他們的請求相當頻繁。對于那些與用戶(hù)相關(guān)的功能,如登錄、購物車(chē)、賬戶(hù)更新(或其他賬戶(hù)信息)等,可以采用Z軸劃分。雖然我們可以對這些事件進(jìn)行假設,但顯然從現有的盈利站點(diǎn)獲取真正的產(chǎn)品數據更有助于我們做決定。
再舉一個(gè)例子,假設我們有一個(gè)SaaS業(yè)務(wù),通過(guò)電話(huà)服務(wù)、電子郵件服務(wù)、聊天服務(wù)和關(guān)系管理系統幫助公司進(jìn)行客戶(hù)支持。在這個(gè)系統中,任何特定業(yè)務(wù)都有許多特有的原則。對于每個(gè)業(yè)務(wù),這些原則可能都需要大量的內存來(lái)緩存這些規則以及業(yè)務(wù)運維所必需的數據。如果你已經(jīng)得出了結論,即面向客戶(hù)的劃分或者說(shuō)Z軸劃分是正確的方法,那么你是對的。但我們還想在數據庫和應用方面都維持多租戶(hù)的假象。如何實(shí)現這一點(diǎn),并且把最常訪(fǎng)問(wèn)的用戶(hù)緩存起來(lái),以便進(jìn)行具有成本效
益的擴展呢?我們]的答案還是帕累托法則。最大業(yè)務(wù)的20%可能占總交易量的80%(我們的大部分客戶(hù)都存在這種情況),我們可以將它們分布在幾個(gè)劃分的數據庫上。要獲得成本的杠桿作用,可以把80%6較小的用戶(hù)平均分布到所有劃分的數據庫上。這里的理論依據是訪(fǎng)問(wèn)較少的公司緩存命中率較低,即使它們存在于自己之中。因此,我們可以讓較大的客戶(hù)從緩存中獲益,同時(shí)從較小的客戶(hù)那里得到成本杠桿。除非我們把較小的客戶(hù)放在它們專(zhuān)用的系統中,否則它們的的體驗與大客戶(hù)不會(huì )有明顯的不同,而眾所周知,這樣做,我們]不能得到SaaS環(huán)境帶給我們的預期收益。
最后一個(gè)例子是處理社交網(wǎng)絡(luò )或交互式站點(diǎn)。你可能已經(jīng)預料到了我們仍然要應用帕累托法則和從我們的生產(chǎn)環(huán)境得到的信息,幫助我們進(jìn)行決策。社交網(wǎng)絡(luò )通常會(huì )有少量的用戶(hù)產(chǎn)生令人難以置信的大流量。有時(shí),這些用戶(hù)可能是活躍的消費者,有時(shí)他們則是活躍的生產(chǎn)者(其他用戶(hù)的目的地),而有時(shí)則兩者兼備。
第一步,我們要識別是否有一小部分信息或子站點(diǎn)占據了大量的“讀”流量。在社交網(wǎng)絡(luò )中,這種節點(diǎn)可以在我們設計架構時(shí)提供指引,使我們對那些生產(chǎn)者執行Z軸劃分,從而在讀操作方面,使它們的節高具有高緩存性。假設帕累托法則成立(通常成立),我們用少量的服務(wù)器提供了將近80%的讀流量。我們的股東會(huì )很高興,因為以非常低的資本密集度就可以服務(wù)于那些請求。
對于社交網(wǎng)絡(luò )中非常積極的內容生產(chǎn)者和更新,又該如何呢?根據它們的內容是否具有很高的消費(讀)率或是否基本處于休眠狀態(tài),這個(gè)問(wèn)題的答案有所不同。對于用戶(hù)具有高生產(chǎn)(寫(xiě)更新)率和高消費(讀) 率的情況,可以直接把它的內容存發(fā)布到讀取它的那個(gè)分區或節點(diǎn)上。如果隨著(zhù)這些節點(diǎn)越來(lái)越熱門(mén),讀寫(xiě)沖突成為問(wèn)題了,那么我們可以使用讀復制和水平擴展技術(shù)(X軸劃分),或者開(kāi)始考慮如何對這些更新進(jìn)行排序,并異步地應用它們隨著(zhù)我們不斷地成熟,可以把這些技術(shù)混合起來(lái)使用。如果使用了從瀏覽器到CDN到頁(yè)面緩存和應用緩存的各種緩存技術(shù)之后,仍然有問(wèn)題,那么可以繼續細化我們的劃分。我們可以給特定用戶(hù)的更新分出級別,根據內容分界線(xiàn)劃分它們(另一種類(lèi)型的Y軸劃分),或者,我們可以繼續創(chuàng )建數據實(shí)例的副本(X軸劃分)。也許我們發(fā)現要讀的信息有特殊的地理偏向性,某些類(lèi)型的新聞就屬于這種情況,那么可以根據請求的地理位置決定的邊界劃分數據,請求是我們了解的有關(guān)請求者的信息,因此,這是另一種類(lèi)型的Z軸劃分。
但愿你已經(jīng)發(fā)現了這個(gè)原則中的模式。第一步是推測可能使用的劃分方法,并決定采用哪種劃分方法可以最大化網(wǎng)站建設緩存性。在應用和支持層面的永久性數據存儲中實(shí)現這些劃分后,在生產(chǎn)環(huán)境中評估它們的有效性?;谏a(chǎn)數據進(jìn)一步細化你的方法,并迭代性地應用帕累托法則和AKF擴展立方,來(lái)細化和提高緩存命中率。
本文地址:http://havencoinwallet.com//article/3478.html