客戶信息的增長速度超過了其他所有數據的增長,或者你需要在要擴展的某些客戶群之間執行故障隔離。Z軸拆分除了有助于擴展客戶群,還適用于其他不能采用Y軸拆分方法的大型數據集合。
通常被稱為數據分片,即把數據集合或服務分割成幾片。這些數據片一般大小相同,但如果有必要的話,也有可能大小不同。這樣做的原因之一就是讓你推出的應用能夠先只影響小部分客戶,當你認為自己已經發現并解決了主要問題后,再逐漸應用于更多的客戶,從而降低了風險。
通常,我們都是根據對請求者或客戶的了解進行分片的。假設我們提供的是打卡和考勤管理系統,而客戶是雇員數大于1000的企業級客戶,我們負責對每個客戶的員工進行考勤跟蹤。我們可能會決定按照公司進行分片,即每個公司都有自己專用的Web頁面、應用程序和數據庫服務器。考慮到我們還想利用多租戶架構帶來的節約成本的好處,那么可以把幾家小公司劃分到一個數據片中。擁有許多員工的大公司可以有專用的硬件,而員工相對較少的小公司則可以共同存在于較大的數據片中。利用員工和公司之間的關系把系統劃分成了可擴展的幾部分,從而能夠采用較少的、成本較低的硬件,實現橫向擴展。
如果我們是手機廣告服務提供商,就必須了解終端用戶所用設備及其運營商,兩者都很引人注目,都可用于劃分數據。如果我們是電子商務運營商,那么可以根據用戶的所在地劃分用戶群,這樣能有效地利用配送中心的可用庫存。或者也可以根據客戶的新老程度、購買次數和購買金額劃分客戶。如果這些方法都失敗了,那么可以利用在用戶注冊時分配給他的用戶ID的模數或散列表進行劃分。
為什么要拆分相近的東西呢?對于高速增長的公司來說,答案顯而易見。響應請求的速度部分是由遠近位置不同的緩存命中率決定的。該速度決定了一個系統能夠處理多少個事務,從而決定了處理一定數量的請求,需要多少個系統。一種極端情況,是對數據不做劃分,那么當我們要響應一個用戶的請求,從而需要遍歷一塊巨大的數據時,事務處理的速度會慢得令人難以忍受。當響應請求的速度至關重要,而響應請求要查詢的數據巨大時,拆分不同的東西或者拆分相近的東西就勢在必行了。
拆分相近的東西顯然并不局限于拆分客戶,但是根據我們的咨詢經驗,拆分客戶是最常見也最簡單的方法。有時,我們也推薦拆分產品目錄。不過對于要把各種各樣的產品目錄拆分成草坪躺椅和尿布這樣的數據項的情況,我們會把它歸為拆分不同的在西我們也曾幫助客戶利用事務ID的模數或散列表進行劃分。在這種情況下,我們對請求者一無所知,但我們卻有一個能夠利用的單一增長的網站建設數值。對于要保存事務日志以便將來能夠研究其中錯誤的系統,可以采用這種類型的劃分。
本文地址:http://m.murenxiang.com.cn//article/3455.html