Tair分佈式緩存

Tair是爲了解決什麼問題而生?redis

    Redis很好用,相比memcached多了不少數據結構,支持持久化。可是在很長一段時間裏,原生是不支持分佈式的。後來就出現了不少redis集羣類產品,Tair是其中勝出的優秀做品之一。算法

    因此Tair的特性都是一些集羣的特性,好比:容錯、解決單點故障、跨機房管理、多集羣管理、支持副本等。總而言之,是redis的高可用版本。sql

 

Tair的架構數據庫

    Tair的總體風格是簡約實用,包括三個必選模塊:client、configserver和dataserver。一個可選模塊:invalidserver。還有一個必要軟設施:一致性哈希算法提供分佈式的負載均衡計算。緩存

 

 

client的做用數據結構

    1. 在應用端提供訪問Tair集羣的接口架構

    2.更新並緩存數據分佈表和invalidserver 地址等
    3. 本地緩存,避免過熱數據訪問影響Tair集羣服務負載均衡

    4. 流控nosql

configserver的做用分佈式

    1. 經過維護和dataserver心跳來獲取集羣存活節點的信息

    2.經過存活節點的信息來構建數據在集羣中的分佈表

    3. 提供數據分佈表的查詢服務

    4. 調度dataserver之間的數據遷移、複製

dataserver的做用

     1. 提供存儲引擎

     2. 接受client和put、get、remove等操做

     3. 執行數據遷移、複製等

     4. 插件:在接受請求的時候處理一些自定義功能

     5. 訪問統計

 invallidserver的做用

     1. 接收來自client和invalid、hide等請求後,對屬於同一組的集羣(雙機房獨立集羣部署方法)作delete、hide操做,保證同一組集羣的一致

     2.集羣斷網以後的髒數據清理

     3. 訪問統計

一致性哈希的做用

    1. 增長和減小dataserver的時候,進行rehash重哈希。並在遷移過程當中保持原數據對外提供服務

    2. 負載均衡,並行多個key進行計算合併結果(mget)

 

Tair的使用場景

  1. 緩存

  2. 分佈式鎖

  3. 做爲nosql數據庫,提供簡單類型存儲(K/V存儲,無複雜查詢)

 

Tair使用QA

1.

Q:tair能夠支持支持什麼類型?

A:內部是序列化成二進制的,就是說理論上支持任何類型。

2.

Q:tair有mget的功能能夠一次性返回多個結果,這個個數有上限嗎?

A:理論上沒有。實際使用中建議1次在100個如下。由於多個請求要等全部的結果回來再進行聚合。聚合等待太多,錯誤就會發生。比如一個機器故障率是萬分之一。那麼10000條記錄一塊兒請求結果,那麼故障率就很是高了,可能多數狀況下都是失敗的。

3.

Q:tair的分佈式鎖使用有什麼最佳實踐?

A:分佈式鎖使用建議使用帶有過時時間的分佈式鎖,過時時間可傳一個絕對的時間戳。解鎖時可傳入一個很是大的整數,以解掉全部的鎖。

相關文章
相關標籤/搜索