Skip to content

pika 介绍

Yin Shucheng edited this page Aug 10, 2016 · 9 revisions

pika是什么

pika 是DBA和基础架构组联合开发的类Redis 存储系统,所以完全支持Redis协议,用户不需要修改任何代码,就可以将服务迁移至pika。Pika是一个可持久化的大容量redis存储服务,兼容string、hash、list、zset、set的绝大接口(兼容详情),解决redis由于存储数据量巨大而导致内存不够用的容量瓶颈,并且可以像redis一样,通过slaveof命令进行主从备份,支持全同步和部分同步。同时DBA团队还提供了迁移工具, 所以户不会感知这个迁移的过程,迁移是平滑的。

与redis的比较

pika相对于redis,最大的不同就是pika是持久化存储,数据存在磁盘上,而redis是内存存储,由此不同也给pika带来了相对于redis的优势和劣势

优势:

  1. 容量大:Pika没有Redis的内存限制, 最大使用空间等于磁盘空间的大小
  2. 加载db速度快:Pika 在写入的时候, 数据是落盘的, 所以即使节点挂了, 不需要rbd或者oplog,pika 重启不用加载所有数据到内存就能恢复之前的数据, 不需要进行回放数据操作。
  3. 备份速度快:Pika备份的速度大致等同于cp的速度(拷贝数据文件后还有一个快照的恢复过程,会花费一些时间),这样在对于百G大库的备份是快捷的,更快的备份速度更好的解决了主从的全同步问题

劣势:

由于Pika是基于内存和文件来存放数据, 所以性能肯定比Redis低一些, 但是我们一般使用SSD盘来存放数据, 尽可能跟上Redis的性能。

适用场景

从以上的对比可以看出, 如果你的业务场景的数据比较大,Redis 很难支撑, 比如大于50G,或者你的数据很重要,不允许断电丢失,那么使用Pika 就可以解决你的问题。 而在实际使用中,pika的性能大约是Redis的50%。

pika的特点

  1. 容量大,支持百G数据量的存储
  2. 兼容redis,不用修改代码即可平滑从redis迁移到pika
  3. 支持主从(slaveof)
  4. 完善的运维命令

当前适用情况

目前pika在线上部署并运行了20多个巨型(承载数据与redis相比)集群 粗略的统计如下:当前每天承载的总请求量超过100亿,当前承载的数据总量约3 TB

与redis的性能对比

配置

  • CPU: 24 Cores, Intel® Xeon® CPU E5-2630 v2 @ 2.60GHz
  • MEM: 165157944 kB
  • OS: CentOS release 6.2 (Final)
  • NETWORK CARD: Intel Corporation I350 Gigabit Network Connection

测试过程

在 Pika 中先写入 150G 大小的数据,写入 Hash key 50 个,field 1千万级别。 Redis 写入 5G 大小的数据。 Pika:18 个线程 Redis:单线程

结论

Pika 的单线程的性能肯定不如 Redis,Pika 是多线程的结构,因此在线程数比较多的情况下,某些数据结构的性能可以优于 Redis。

pika 部分场景性能概况

场景描述 写入性能 读取性能 同步极限
k-v(key数量多且分散) 110000/s 110000/s
k-v(key数量很少) 50000/s 50000/s
多数据结构(key数量多且分散) 50000/s
多数据结构(key数量很少) 20000/s 18000/s
set结构(100万元素range)
set结构(1000万元素range)

从redis迁移到pika需要经过几个步骤?

开发需要做的:开发不需要做任何事,不用改代码、不用替换driver(pika使用原生redis的driver),什么都不用动,看dba干活就好 dba需要做的:

  1. dba迁移redis数据到pika
  2. dba将redis的数据实时同步到pika,确保redis与pika的数据始终一致
  3. dba切换lvs后端ip,由pika替换redis
Clone this wiki locally