爲何 Codis 比 twemproxy 慢?git
Codis 追求簡潔的實現,咱們沒有針對內存進行優化,因此會比 twemproxy 還要多一倍拷貝。github
Go 雖然使用 epoll,可是 IO 都不是直接完成的,而是經過 IO thread,因此須要更多的線程間通訊和線程切換。redis
因此單 CPU 狀況下, Codis 吞吐能到 twemproxy 的 1/2,redis 的 1/4,說明個人實現仍是能夠的。app
Codis 是 Go 開發的,底層 IO 本質也是經過 epoll 實現的。Go 爲開發帶來了方便,可是全部的便利都是以犧牲性能做爲代價的。ide
單 twemproxy:方便調整,性能不行性能
多 twemproxy:調整須要技巧,可能須要中止服,看具體業務需求,不管如何都很痛苦。優化
Codis?spa
適當的 CPU 就能夠得到比 twemproxy 更好的性能和可靠性,同時具有橫向擴展的能力線程
可動態調整。這一點就足夠了。orm
對 redis 集羣而言,CPU 和 內存,哪一個更貴?並且一般 redis 集羣 CPU 都是空閒的
若是你的業務須要 10G:不必用 twemproxy 或者 Codis,影響心情,給本身添麻煩。
若是你的業務須要 400G:你能夠選擇 單/多 twemproxy + 多 redis,畢竟在相同吞吐下,twemproxy 比 codis 有更好地 CPU 利用率。
可是一旦你的業務須要遷移數據,好比機器上下線,容量調整,怎麼辦?
轉載自https://github.com/CodisLabs/codis/issues/309