【IT168 评论】前段时间,笔者在知乎上发现了一个提问“如何评价360开源的pika项目?”,原提问者面临的问题是:一直在使用Redis,但随着内存需求增大,转redis cluster怕成本太高,通过调研,排除近一年没有commit和issue的开源项目,只剩下ssdb和360开源的pika可供选择,这种情况下应该如何选择呢?
笔者认为大家不妨带着这个问题看看陈宗志的分享吧,看完再决定应该如何取舍!
Redis是一个key-value存储系统,因为其对支持存储的value类型相对更多,并且开源社区的维护工作一直不错,所以有不少用户在使用和学习。当对内存的需求逐渐增大,Redis也会开始出现各种问题,比如恢复时间长—50G redis恢复时间70分钟,一主多从, 主从切换代价大—主库挂掉后升级从库, 所有从库全部重传数据,缓冲区写满,内存太贵......
这时,你一定会开始思考解决方案,什么样的方式能让你既享受到Redis的便利,又可以规避其问题呢?陈宗志所在团队想到了开发Pika,就这样,来自360的DBA和基础架构团队一起设计开发了这个大容量Redis解决方案。
据悉,目前的Pika完全兼容Redis 协议, 用户不需要修改任何代码进行迁移。其中的网络模块Pink是由基础架构团队开发, 网络编程库支持pb, redis, pg, http等协议。同时,抽象出各种不同类型线程。
Pink在稳定性、易用性和高性能方面很好的补充了Redis的不足。存储引擎模块Nemo基于Rocksdb实现。实现了Hash,List,Set,Zset等数据结构。日志模块Binlog可顺序写文件,通过Index+offset进行同步检查,解决了缓冲区小的问题,支持全同步和增量同步。主从同步是slaveof模块。由于整个项目已经在Github上开源良久,因此开发者可自行查看源代码,目前该项目已获得了1000+的Star。
经过360团队和开源社区的共同努力,Pika日渐完善,修复了很多问题。陈宗志表示,如果使用期间出现秒删问题,可以修改Rocksdb, 增加 version, timestamp 字段。删除只需要修改metadata。数据compact问题,可以修改Rocksdb manual compact策略,支持低优先级的manual compact,根据机型调整rocksdb配置,compac线程,memtable个数。数据备份问题则需要rocksdb和Binglog的配合。Pika目前现状是双主支持、Pika_hub 提供多机房、写入支持、支持sentinel和codis。
现在,整个团队已经给出了Pika与Rdis,Ssdb向Pika迁移的工具。陈宗志多次强调,Pika的出现不是为了替代Redis,而是为了弥补Redis的不足。由于Pika是基于内存和文件来存放数据, 所以性能肯定比Redis低一些。对于一些资金不足的公司而言,Pika确实是一个性价比十分高的解决方案。
▲更多信息尽在IT168现场报道专题 http://sacc.it168.com/topic2017/