为何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

相关文章
相关标签/搜索