1 Redis分布式算法原理
1.1 傳統分布式算法
1.2 Consistent hashing一緻性算法原理
- 環形 hash 空間:按照常用的 hash 算法來将對應的 key 哈希到一個具有 232 個桶的空間,即(0-232-1)的數字空間中,現在我們将這些數字頭尾相連,想象成一個閉合的環形
- 把資料通過一定的 hash 算法映射到環上
- 将機器通過一定的 hash 算法映射到環上
- 節點按順時針轉動,遇到的第一個機器,就把資料放在該機器上
在移除 or 添加一個 cache 時,他能夠盡可能小的改變已經存在 key 映射關系
1.3 Hash傾斜性
為解決此類事件,引入了虛拟節點
2 Redis分布式環境配置
3 Redis分布式服務端及用戶端啟動
4封裝分布式Shared Redis API
4.1 SharedJedis源碼解析
封裝RedisSharedPool
測試代碼
內建測試
5 Redis分布式環境驗證
6 叢集和分布式
- 分布式:不同的業務子產品拆分到不同的機器上,解決高并發的問題。 工作形态 redis伺服器各工作方式不同一般稱為Redis分布式
-
叢集:同一個業務部署在多台機器上,提高系統可用性 是實體形态,一般稱Tomcat叢集
叢集可能運作着一個或多個分布式系統,也可能根本沒有運作分布式系統;分布式系統可能運作在一個叢集上,也可能運作在不屬于一個叢集的多台(2台也算多台)機器上。
你前台頁面有10個使用者,分别發送了1個請求,那麼如果不是叢集的話,那這10個請求需要并行在一台機器上處理,如果每個請求都是1秒鐘,那麼就會有一個人等待10秒鐘,有一個人等待9秒鐘,以此類推;那麼現在在叢集環境下,10個任務并分發到10台機器同時進行,那麼每個人的等待時間都還是1秒鐘;
當然,你說的浪費确實是,如果系統的并發不是很高,隻有一台或者兩台機器就能處理的話,那确實是有很大的浪費
7 參考
[Java企業級電商項目架構演進之路
Tomcat叢集與Redis分布式
](
https://coding.imooc.com/class/162.html)