ShardedJedis的一致性hash

2021-12-30 03:57:49 字數 981 閱讀 6874

shardedjedis的一致性hash:shardedjedis是redis客戶端分片的實現。但問題是,乙個key到底經過了怎樣的過程,最終才找到她應該儲存的redis例項呢?我們先看一下shardedjedis是如何使用的。

list shards = arrays.aslist(

new jedisshardinfo("localhost",6379),

new jedisshardinfo("localhost",6380));

shardedjedis sharding = new shardedjedis(shards);

long start = system.currenttimemillis();

for (int i = 0; i < 100000; i++)

long end = system.currenttimemillis();

shardedjedis繼承自sharded

而sharded裡面有兩屬性nodes與resources

public class sharded> 假如我們的redis集群就像上面的**,有兩個例項,也就是說有兩個jedisshardinfo

我們看下圖:

shardedjedis為每個redis例項做出了160個虛擬節點(也可是320或者480,這個權重可以設定,預設是160)

在shardedjedis初始化的時候,兩個redis例項就會初始化320個虛擬節點,分別屬於2個jedisshardinfo

他們的關係,儲存在nodes這個屬性裡

同時jedisshardinfo與jedis這個最基礎的redis客戶端也是一一對應的,他們的關係儲存在resources中。

shardedjedis初始化時,會呼叫initialize。

編碼原則 一致的思維(深度的一致)

結構 1 2 返回預設的表單 items 3 4 return 5 6 getdefaultformitems function property.editorconfig editorconfig 1617 if property.editorconfigfns 21 2223 return ed...

強一致性 弱一致性 最終一致性

這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...

保證一致性嗎 Kafka的一致性保證

魚和熊掌不可兼得。系統設計需要根據具體的應用場景做出權衡。系統設計者可以通過配置kafka,來得到不同程度的需求滿足。每個kafka主題 topic 都分為多個分割槽 partitions 每個分割槽可以具有多個副本 replica 其中乙個副本是主分割槽 leader 所有讀寫請求都由主分割槽提供...