1. 程式人生 > >Apache Geode/GemFire功能特性簡介(1)

Apache Geode/GemFire功能特性簡介(1)

區域

複製區域

在區域中所有的資料被複制到每一個快取伺服器節點。複製區域使用了‘multiple masters’複製組織結構。當資料區域被複制(沒有分割槽),對於每一個數據條目沒有指定的管理者,來自任意成員的初始更新併發地傳播到每一個節點。一旦成功處理了這個事件,ACK作為一個迴應傳送回初始成員。初始成員接到返回的ACK之後,做出相應地資料更新呼叫處理。

每一個快取伺服器節點都維護了一份資料的拷貝。所以複製區域模式適合於系統中有大量讀操作,少量寫操作的情況下。

分割槽區域

在區域中的資料跨伺服器節點分佈。一些伺服器的節點管理分割槽的資料副本用來做備份。分割槽區域使用’single master’複製模式。

所以當讀很重,資料集很小的時候,不適合分割槽區域模式。

如果你的資料量單機能夠承受,那麼你不需要在兩個節點間分割資料。在這樣的情況下,複製區域能夠更好的做到這一點,特別是你的應用執行大量讀操作。

分散式事務

分散式鎖

分散式鎖為跨VM的分散式應用提供了高可靠的協調機制,維護了跨叢集分佈資料的一致性。

分散式鎖通過使用建立鎖服務在鍵上加鎖,最大限度地避免了資料讀寫操作時的衝突。

特性

持久化到磁碟

你不可能把所有的分割槽資料全部放在記憶體中。您能給分割槽模式配置溢位到磁碟,來保證記憶體持續可用。每個伺服器都有自己的磁碟空間來儲存從記憶體溢位的條目。

超時和清除

你能配置一個分割槽區域來無效或者銷燬資料條目。比如在你的區域中你能設定最大的條目數,或者你能配置條目在一定時間間隔後超時。無論什麼操作請把此配置應用到條目的所有拷貝。

伺服器重平衡

你的伺服器有時沒有維護相同的資料量。這時,你能配置伺服器維護的資料量使用local-max-memory屬性。一個特例就是local-max-memory為0,在這種情況下,伺服器沒有維護區域中的資料,但是維護了分割槽的元資料,允許他訪問網路中任何一條資料條目。

資料彈性

你能新增新的伺服器到正在執行的伺服器叢集中,讓GemFire跨叢集動態重分佈資料。這對你的操作沒有任何影響。如果你有冗餘拷貝,你也能移除成員同時重平衡你的系統,沒有任何的中斷和資料丟失。

架構

資料儲存

一個分割槽使用鍵物件的雜湊碼來決定哪個虛機儲存條目。雜湊碼被分給大量可配置的資料桶。如果配置了冗餘分割槽的話,每一個數據桶被指定到一個伺服器或者多臺伺服器。當區域啟動時資料桶並不被指定,但是當有資料被放在資料桶裡面時,資料桶就載入這些資料。這樣允許你在遷移區域之前,啟動大量的成員節點。

怎樣維護資料的一致性

如果你設定”redundant-copies”屬性大於0,GemFire則指定每一個數據桶中一份拷貝作為主拷貝。所有到資料桶的寫操作都通過主拷貝,這保證了資料桶的所有拷貝是一致的。與複製區域相比,分割槽也提供了相同的一致性。

a24d8c2d1810035e33e4ba37ddfbfbedf9bd8a0b

失效備援

如果你有冗餘拷貝,那麼當伺服器宕機後是沒有資料丟失或者服務中斷的。當一個伺服器出現故障,GemFire將自動重新路由資料操作到正常的成員。

064e7d394c367ea9993ca67d316da75edcb1d58a

在伺服器出現故障之後,你不再有資料的完全備份。你能控制GemFire是否立即資料拷貝到儲存冗餘區,或者等待故障伺服器被更換。當GemFire拷貝資料時,你仍然能繼續執行區域的其他操作。

資料分割槽策略

預設情況下,GemFire在鍵上直接使用雜湊演算法。完全控制GemFire叢集中的資料分割槽。當應用沒有引用資料條目時預設分割槽正常工作。通過使用partition resolver,能保證相關條目被分割槽到相同的伺服器上。partition resolver允許你的程式碼返回一個”路由物件”,這個路由物件由”鍵-值”組成。GemFire然後應用這個雜湊演算法來路由物件,如果partition resolver為多個條目返回相同的路由物件,這些條目將要被分割槽到相同的資料桶中,因此他們也駐留在相同的主機中。比如你能保證一個客戶的所有資料都能駐留在相同的主機中,然後你能通過function routing在資料上執行多個操作。

你甚至能夠保證資料跨區域駐留在相同的主機上。比如你有一個自定義的區域和一個交易處理區域。他們返回了客戶ID作為路由物件。你能使用colocated-with 屬性來指示資料將要重分佈在兩個不同的區域中。如果資料從一個主機遷移到另外的主機GemFire甚至保證兩個區域的資料共存。詳情請看function routing介紹

平衡資料和新增可用容量

預設情況下,GemFire保證儲存在每一個節點的資料總量是差不多的。資料的總量由你的物件的序列化量來衡量。當你新增一個新的成員,你能通過重新平衡快取移動資料到這個新的成員。重平衡的目標是最小化成員之間的資料量差異。如果整個資料桶移動,保證資料群組和重分佈得以保留。

在這個例子中,區域儲存有關交易的資訊。交易通過交易者的名字被組群化。當儲存群組時區域重平衡移動資料到新的成員。

3ad244ef591b8290a5f1b9bd7b6c27fd5d960308

464843fd4932d32103362cc95c4d777cef8e2dfd 

通過設定local-max-memory引數,你能完全控制有多少資料保留在特定的成員中。伺服器用更低的local-max-memory值來儲存更少的資料。每個成員的資料總量為

6243d180715240918f47a85abb707257115bfa5a

lmm 為local-max-memory設定值,dataSize為存在區域中的資料總量,其乘積是總的記憶體量。

回撥

在分割槽中利用Cache Loader和Cache Writer,你能在每一個成員中安裝回調模組。Loaders 和 writers被呼叫只依賴資料的主拷貝。這就意味著在大多數情況下,Cache Loader和Cache Writer只被呼叫一次。然而,如果在執行一個操作時一個成員宕機了,GemFire將在主拷貝重試這個操作,Cache Loader和Cache Writer可能會被呼叫多次。

WAN Gateway

WAN gateway一個重要的特性是你只需要在快取伺服器上簡單配置一些引數,快取中的資料會自動,高效地複製到遠端站點。並不同於基礎設施層的儲存裝置,WAN gateway在資料管理層實現了資料的完全彈性,你能在純雙活環境來使用你的計算引擎和資料。

WAN gateway另一個重要的特性是不僅能把資料投送到災備站點,而且能把資料投送到世界的任何一個地方。維護一致的全域性檢視是很多企業IT組織架構的一個令人頭疼的問題,特別是當資料來源於世界的任何一個地方。WAN Gateway 為這個問題提供了簡單的解決方案。在任一地點的快取伺服器上配置雙向Gateway,形成可靠的儲存轉發網路,能夠在全球維護一致的資料。如果一個或多個地點由於某種原因不可訪問,比如處於維護期,那麼Gateway將把所有的資料更新放在佇列中,當此地點再次啟用之後資料會可靠地投遞到這個地方。

原文地址:https://yq.aliyun.com/articles/11241?spm=5176.100239.blogcont11223.12.HDi3Zk#