爲何Codis比較慢,但咱們還要用它呢?

  1. 爲何 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

那須要 Codis 有什麼用?
  • 單 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

相關文章
相關標籤/搜索