加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

千亿级高性能 KV 存储生态圈

发布时间:2021-01-14 03:04:44 所属栏目:电商 来源:网络整理
导读:《千亿级高性能 KV 存储生态圈》要点: 本文介绍了千亿级高性能 KV 存储生态圈,希望对您有用。如果有疑问,可以联系我们。 本文源自4月20日『高效开发运维』微信群的在线分享,分享者为360Web平台部DBA团队的张恒,本文infoQ的『高效开发运维』公众号首发,已

④秒删数据:Pika的数据删除是标记删除,Pika Key的元信息上有版本信息,表示当前key的有效版本,已删除的数据在Compact合并数据的过程中删除.而单线程的Redis在大量删除数据时候会影响线上业务,删除大对象会阻塞住Redis的主线程,删除速度慢.

⑤同步续传:Pika写入数据会有write2file日志文件,只要该文件未删除,无需全量同步数据,均可断点续传数据.而Redis一旦主从同步缓冲区被循环重写,容易导致全量数据重传.

⑥高压缩比:Pika存储的数据默认会被压缩,相对于Redis,Pika有5~10倍的压缩比.所以Redis的数据存储到Pika,数据体积会小很多.

⑦高性价比:相对于Redis使用昂贵的内存成本,Pika使用磁盘存储数据,性价比极高

Pika PK Redis之劣势:

①读写性能较弱:Pika是持久化的,基于磁盘的kv存储.而Redis是内存数据库.虽然pika是多线程的,但是在大多场景下,性能还是略逊色于Redis

②多数据结构性能损耗:Pika底层使用Rocksdb存储引擎,它并不支持多数据结构,Pika在Rocksdb的上层进行了改造和封装,实现了对多数据结构的支持.同时在性能上,会有一些损耗.

③兼容大部分Reids接口:Pika兼容了90% Redis接口,使其易用性得到大大提升.但是目前还没有做到完全兼容.

3、Pika整体架构??

4、Pika使用场景??

①业务量并没有那么大,使用Redis内存成本太高

②数据量很大,使用Redis单个服务器内存无法承载

③经常出现时间复杂度很高的请求让Redis间歇性阻塞

④读写分离且不希望故障切主后影到从库,能够快速切换

5、Pika使用现状?

①内部:目前Pika已经在360内部的各个业务线广泛使用,共计覆盖43个主业务线和76个子业务线,近千亿的日访问量和数十T的数据规模,节约了大量昂贵的服务器内存,降低了使用成本.

②社区:在业内,据不完全统计,很多著名互联网公司也使用了Pika,例如新浪微博、美团、58同城、迅雷、万达电商、环信…………

6、Redis如何迁移到Pika?

那么,在适用于 Pika的业务场景下,我们如何将Redis数据迁移到Pika呢?

Pika自带的工具集,其中aof_to_pika这个工具可以帮助我们完成很平滑的这个任务.由于该工具依赖于AOF来发送数据,所以原Redis必须要开启AOF,并关闭AOF重写的策略.aof_to_pika通过reader线程读取aof文件中的内容,根据设定的单次发送长度拼装成数据块,将要发送的数据库加入队列.同时sender线程不断的从队列中读取数据发送到目的Pika完成数据的重放.

除了Redis的迁移工具之外.考虑有同学可能也使用到了ssdb,那么Pika也很贴心的提供了从ssdb迁移数据到Pika的工具ssdb_to_pika.

五、多场景的业务需求

最后,针对于业务多变的kv存储需求,常常有两个重点是我们最为关注的,一个是数据量,另一个是访问量.围绕着数据量和访问量的大小,往往决定了我们是使用Redis、Redis Cluseter or Pika.

六、QA

Q1:Pika支持集群吗?

A1:Pika目前主持主从结构,也支持codis.自身目前还不支持分布式的集群化,我们还在做多数据结构集群化的调研.

Q2:Pika 与Redis什么关系?替代吗还是补充?看着像是补充. Pika 如果是替代Redis,那使用磁盘如何保证高性能.

A2: Pika与Redis是使用场景上互相补充的关系.目前线上的Pika机器都使用的ssd,一般场景下ops在5w以内场景都能轻松应对.

Q3:Redis持久化方式如何选取?还是不做持久化?

A3:持久化多数场景下选择AOF方式,做不做持久化取决于业务对数据安全性的要求,毕竟纯缓存的数据一旦服务器宕机或者数据库崩溃,数据都会全部丢失.

Q4 : 张老师你好,Pika挂固态硬盘读写性能是否可以pk Redis?360 业务有这样应用吗?

A4:目前360内部使用Pika的应用,全部使用的都是SSD硬盘.

Q5 : Pika 里边 zset 是落地的么,zset是怎么实现的呢? 对scan 类的命令支持怎样?Pika 性能如何?

A5: 是落地的,大致原理是将一条key-score-members转换成3条rocksdb的kv来存储.scan是都支持的,和Redis一样.Pika的性能我们认为还不错,能够满足多数场景,但是建议大家要部署在SSD上,和内存比SSD还是便宜太多的,另外非常欢迎大家用测试比较Pika与相似项目的性能!

Q6 : 老师,像类似于fastdfs也是存储在硬盘的,请问Pika与他们在使用场景上有什么不同呢?

A6: 就我个人知识了解,fastdfs是一个分布式文件系统,存储小文件、图片等,与Pika面向的场景不一样,Pika是为了解决Redis单机内存不足而设计的一个在线数据库,当然,只要单机磁盘容量够,也是可以存储二进制文件到pika的.

Q7: Pika和Aerospike相比有哪些优势呢?Aerospike开源版本内存加持久化后,执行删除操作,重启后删除的数据会重新从磁盘加载,Pika有没有这个弊病?

A7: Pika的设计初衷其实就是为满足业务在Redis存储中,因为内存不足而造成业务损失,所以,我们的Pika的命令基本与Redis保持一致,并且client也是复用Redis的,这样,业务从Redis切换到Pika,无任何复杂度,这一点,我个人看Aerospike是比不了的.另外,Pika是不会加载删除数据.

Q8:redis 中热键大键如何处理?发现大部分故障都源于此

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读