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