1、前端使用 Twemproxy 做代理,后端的 Redis 數(shù)據(jù)能基本上根據(jù) key 來進(jìn)行比較均衡的分布檬嘀。后端一臺(tái) Redis 掛掉后槽驶,Twemproxy 能夠自動(dòng)摘除≡蓿恢復(fù)后掂铐,Twemproxy 能夠自動(dòng)識(shí)別、恢復(fù)并重新加入到 Redis 組中重新使用贸铜。
2堡纬、Redis 掛掉后,后端數(shù)據(jù)是否丟失依據(jù) Redis 本身的策略配置蒿秦,與 Twemproxy 基本無關(guān)烤镐。如果要新增加一臺(tái) Redis,Twemproxy 需要重啟才能生效棍鳖;并且數(shù)據(jù)不會(huì)自動(dòng)重新 Reblance炮叶,需要人工單獨(dú)寫腳本來實(shí)現(xiàn)。
3渡处、如同時(shí)部署多個(gè) Twemproxy镜悉,配置文件一致(測(cè)試配置為distribution:ketama,modula),則可以從任意一個(gè)讀取医瘫,都可以正確讀取 key對(duì)應(yīng)的值侣肄。
4、多臺(tái) Twemproxy 配置一樣醇份,客戶端分別連接多臺(tái) Twemproxy可以在一定條件下提高性能稼锅。根據(jù) Server 數(shù)量,提高比例在 110-150%之間僚纷。
5矩距、如原來已經(jīng)有 2 個(gè)節(jié)點(diǎn) Redis,后續(xù)有增加 2 個(gè) Redis怖竭,則數(shù)據(jù)分布計(jì)算與原來的 Redis 分布無關(guān)锥债,現(xiàn)有數(shù)據(jù)如果需要分布均勻的話,需要人工單獨(dú)處理痊臭。
6哮肚、如果 Twemproxy 的后端節(jié)點(diǎn)數(shù)量發(fā)生變化,Twemproxy 相同算法的前提下广匙,原來的數(shù)據(jù)必須重新處理分布允趟,否則會(huì)存在找不到key值的情況。
測(cè)試方式:
1.后端 Redis 節(jié)點(diǎn)數(shù)量不變艇潭,不同 Twemproxy server 測(cè)試及多個(gè)同時(shí)運(yùn)行測(cè)試結(jié)果如下:
從上面數(shù)據(jù)可以看出拼窥,單臺(tái)最多也只能達(dá)到單個(gè) Redis 的性能戏蔑;2個(gè)節(jié)點(diǎn)運(yùn)行性能增加大概110%左右。4個(gè) server 運(yùn)行鲁纠,性能大概增加了123%总棵,6個(gè) server 接入運(yùn)行160%。
2.前端使用1個(gè) Twemproxy server改含,后端 Redis 數(shù)量分別為2情龄,3,4捍壤,5骤视,6來進(jìn)行壓力測(cè)試,看測(cè)試結(jié)果,測(cè)試數(shù)據(jù)如下:
從數(shù)據(jù)可以看出鹃觉,后端節(jié)點(diǎn)數(shù)量與 Twemproxy 的性能基本無關(guān)专酗,最大性能也就是單個(gè) Redis 的性能。