为什么Codis比较慢,但我们还要用它呢?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:
  1. 为什么 Codis 比 twemproxy 慢?

  • Codis 追求简洁的实现,我们没有针对内存进行优化,所以会比 twemproxy 还要多一倍拷贝。

  • Go 虽然使用 epoll,但是 IO 都不是直接完成的,而是通过 IO thread,所以需要更多的线程间通信和线程切换。

  • 所以单 CPU 情况下, Codis 吞吐能到 twemproxy 的 1/2,redis 的 1/4,说明我的实现还是可以的。

  • Codis 是 Go 开发的,底层 IO 本质也是通过 epoll 实现的。Go 为开发带来了方便,但是所有的便利都是以牺牲性能作为代价的。

那需要 Codis 有什么用?
  • 单 twemproxy:方便调整,性能不行

  • 多 twemproxy:调整需要技巧,可能需要停止服,看具体业务需求,无论如何都很痛苦。

  • Codis?

  • 适当的 CPU 就可以获得比 twemproxy 更好的性能和可靠性,同时具备横向扩展的能力

  • 可动态调整。这一点就足够了。

  • 对 redis 集群而言,CPU 和 内存,哪个更贵?而且通常 redis 集群 CPU 都是空闲的

  • 如果你的业务需要 10G:没必要用 twemproxy 或者 Codis,影响心情,给自己添麻烦。

  • 如果你的业务需要 400G:你可以选择 单/多 twemproxy + 多 redis,毕竟在相同吞吐下,twemproxy 比 codis 有更好地 CPU 利用率。

  • 但是一旦你的业务需要迁移数据,比如机器上下线,容量调整,怎么办?









本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/1900821,如需转载请自行联系原作者
目录
相关文章
|
应用服务中间件 Linux 网络安全
Linux 安装 Nginx 并配置为系统服务(超详细)
Linux 安装 Nginx 并配置为系统服务(超详细)
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
365 2
|
IDE Java 测试技术
Mockito 应用指南
Mockito 是一个针对 Java 的 mock 框架。
289 0
|
10月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
379 7
|
6月前
|
存储 安全 Go
Map的遍历与判断键是否存在-《Go语言实战指南》
本文介绍了 Go 语言中对 `map` 的常见操作,包括遍历所有项和判断键是否存在。通过 `for range` 可以遍历 `map` 的键值对、仅键或仅值(需忽略键)。注意,`map` 遍历顺序是随机的。判断键是否存在时,使用双赋值语法 `value, ok := map[key]`,其中 `ok` 表示键是否存在。直接访问不存在的键会返回类型的零值,可能导致逻辑错误。掌握这些机制可更安全高效地处理键值对数据。
|
9月前
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
979 11
|
12月前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
438 6
|
运维 Linux 网络安全
自动化运维的利器:Ansible、Puppet和Chef详解
自动化运维的利器:Ansible、Puppet和Chef详解
405 5
|
存储 NoSQL 数据挖掘
在 ScyllaDB(或 Cassandra)中使用主键、分区键和群集键
在 ScyllaDB(或 Cassandra)中使用主键、分区键和群集键
187 0