1. 程式人生 > >分散式快取技術

分散式快取技術

如果要從這三個不搭邊兒的短語中找出一些共性,普通人恐怕思來想去也說不出個所以然,但程式設計師卻能脫口而出: 高併發使用者訪問 隨著雲端計算與 Web 2.0 的發展,許多企業或組織都在面對空前的需求,這也引領著著各項網際網路技術的發展與變革,比如:叢集技術、負載均衡、海量資料處理、系統安全,以及今天要討論的主角——分散式資料庫快取。 什麼是資料庫快取? 計算機中的儲存器分為硬碟、記憶體、3級快取、和2級快取,隨著儲存器容量的減少,計算機從儲存器中呼叫資料的速度也在加快。 我們常見的資料庫,比如oracle、mysql等,都是將資料存放在磁碟中。這種儲存機制並不足以應對業務系統對資料庫產生的增、刪、查、改帶來的龐大IO壓力。所以資料庫快取技術就此誕生,用以實現熱點資料的快取記憶體,提高應用的響應速度,緩解後端資料庫的壓力。 什麼是分散式資料庫快取? 如今的網際網路平臺常常要面對百萬級的併發使用者訪問,解決每秒數以千計的併發事務處理,既要實現低延時、保證24*7*365的可用性,還要擁有靈活的彈性與可伸縮性...可以說,傳統Web 架構已經無法滿足使用者日益增漲的需求。 而分散式資料庫快取是在記憶體中管理資料並提供資料的一致性保障,採用資料複製技術實現高可用性,具有較優的擴充套件性與效能組合。這種資料儲存機制,實現了更短的響應時間,同時極大地降低資料庫的事務處理負載,極好地解決了大流量情況下資料庫伺服器和Web伺服器之間的瓶頸。 分散式資料庫系統 指建立在網路之上的資料庫系統,包含分散式資料庫管理系統(DDBMS)和分散式資料庫(DDB)。 分散式資料庫系統的特點 分散式資料庫在邏輯上是一個統一的整體物理上是分別儲存在不同的物理節點上資料庫中的資料不儲存在同一計算機的儲存裝置上 分散式系統的CAP定理 在一個分散式系統中,Consistency(一致性)-Availability(可用性)-Partition tolerance(分割槽容錯性),三者不可得兼。 Consistency:在分散式系統中的所有資料備份,在同一時刻是否同樣的值。Availability:在叢集中一部分節點故障後,叢集整體是否還能響應客戶端的讀寫請求。Partition tolerance:以實際效果而言,分割槽相當於對通訊的時限要求。系統如果不能在時限內達成資料一致性,就意味著發生了分割槽的情況,必須就當前操作在C和A之間做出選擇。 3 主流的分散式快取產品 在實際開發中,比較主流的分散式快取系統主要有Memcached 和 Redis,這兩款系統都採用key-value儲存方案,卻有各自的優缺點。
Memcached Memcached是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。Memcached通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。 Memcached 的特點 雜湊方式儲存;全記憶體操作;簡單文字協議進行資料通訊;只操作字元型資料;叢集由應用進行控制,採用一致性雜湊演算法。 Memcached的限制性 資料儲存在記憶體當中的,一旦機器重啟,資料會全部丟失;只能操作字元型資料,資料型別貧乏;以root許可權執行,而且Memcached本身沒有任何許可權管理和認證功能,安全性不足;能儲存的資料長度有限,最大鍵長250個字元,儲存資料不能超過1M。
Redis