天天看點

【七天玩轉Redis實戰營】答疑彙總Day5 Redis架構及媒體選擇指引

【第五講,Redis架構及媒體選擇指引】

講師:民科,阿裡雲NoSQL核心工程師。

課程内容:如何進行Redis選型;雲Redis版叢集架構及對比;如何使用Redis做緩存。

答疑彙總:特感謝班委@鄧小兵 同學

【七天玩轉Redis實戰營】答疑彙總Day5 Redis架構及媒體選擇指引

Q1:讀寫分離的實作原理是什麼?

A1:讀寫分離實際上是分為分兩部分,一部分是通路鍊路,一部分是資料同步。資料同步:基本的主備同步的過程中,如果讀副本的個數比較多的話,采用鍊式負責任的方式,這樣可以降低主節點的壓力。通路鍊路:在開通了讀寫分離方式後,會有一個 proxy 做代理,有 proxy 去區分使用者發送來的指令,判斷讀請求還是寫請求,寫請求會轉發到主節點處理,讀請求會按一定的比例分發到其他的隻讀節點上。

Q2:Redis 一直保持單線程串行資料處理的優勢是什麼(或者說 Redis 多線程會存在哪些問題)?沒有發揮多核的優勢,後面有考慮多線程版本嗎?

A2:Redis 一直使用單線程模式,主要是因為 Redis 支援多種複雜的資料結構,比較難實作多線程并行通路,除非是按照每個 key,按照每個 slot 去分,按 key、slot的粒度去加鎖,這樣确實可以實作。社群版 6.0 現在是支援 IO 多線程的。阿裡雲的 5.0企業版也支援IO 多線程,後續的企業版還會開放更深入的多線程能力。

Q3:單執行個體和叢集有對應 QPS的參考值嗎?

A3:簡單指令參考:純社群版 在 10W 左右 可以選擇單執行個體,如果超過了建議使用叢集版。阿裡雲簡單的指令上限能到20W 左右。

Q4:叢集間取消遷移會産生髒資料嗎?

A4:開源實作會出現這種問題的,在阿裡雲上會做資料復原,不會有産生髒資料的問題。

Q5:阿裡雲 Redis 怎麼做到記憶體+SSD/HDD 的還能做到機會和社群版純記憶體版相差無幾的效果的,相差有多少呢?

A5:目前是沒有 HDD 的這種實作,而通過SSD實作的産品性能也是沒有純記憶體的性能高的。

Q6:開源版的監控有沒有細粒度到指令級别的?

A6:阿裡雲提供的都是有相應的監控運維上的改進,這些細粒度的功能都是有的(包括 慢查詢,讀寫審計等)

Q7:阿裡雲在資料遷移時候 RT 沒有變高?

A7:如果是開源版本實作,RT 會受到大 KEY 影響,需要在源端打包發送到目的端,這中間打包、發送、再到目的端解開來恢複這個過程會鎖住 DB,這會有一定的影響,而阿裡雲的做法是把整個資料遷移的過程是在背景做的,先做背景的資料copy,copy 完之後再到目的端,這中間不會對使用者有 RT 影響,除了網絡帶寬上可能會有一些波動,RT一般不會受資料遷移的影響。

繼續閱讀