落地存储pika

官方文档这样介绍pika

pika是什么

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

与redis比较

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

优势:

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

劣势:

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

适用场景

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

pika的特点

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

安装使用

编译安装

1. 安装必要的lib

sudo yum -y install snappy-devel protobuf-compiler protobuf-devel bzip2-devel zlib-devel bzip2

2. 安装gcc

sudo yum -y install gcc-c++

3. 如果机器gcc版本低于4.8,需要切换到gcc4.8或者以上,下面指令可临时切换到gcc4.8

sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
sudo yum install --nogpgcheck devtoolset-2
scl enable devtoolset-2 bash

4. 获取项目源代码

git clone --recursive https://github.com/Qihoo360/pika
cd pika

5.编译安装

make __REL=1

6.启动服务

./output/bin/pika -c ./conf/pika.conf
  pika可以配合codis-dashbord和codis-proxy搭建pika集群,这种方法比较常见。使用pika我们就可以实现用廉价的磁盘代替昂贵的内存了。

posted @ 2017-11-16 14:45  Federico  阅读(722)  评论(0编辑  收藏  举报