KeeWiDB:兼容Redis协议,领跑NoSQL

时间:2022-09-21 23:26:16

如果现在的我们离开了互联网,生活会是什么样子?

互联网++++,已经深刻渗透到人们的生活中。

不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求。你查看的每一个商品、组建的每一个战队、阅读的每一篇文章,基于互联网的每一个兴趣爱好,都有它的key和value。

在 key-value 数据库领域,Redis 因其高吞吐、低延迟、丰富的数据结构一直受开发者欢迎,但 Redis 全内存方案无法解决海量数据所带来的规模与成本问题,数据可靠性也面临挑战

目前业界也有很多基于磁盘的键值存储方案,比如RocksDB、SSDB等。这些存储引擎设计之初是为了发挥磁盘的极致性能,很难在命中内存访问的时候提供Redis级的吞吐;同时磁盘本身的延迟远远高于内存,吞吐也是有限的。

讲道理,我们的市场需要一款产品既要保证用户的极致体验,又要确保海量数据的高可靠,还要尽可能低的成本。

怎么办呢?这里为大家介绍我们的新朋友:KeeWiDB,它可以给开发者提供一个高可靠、高效率、低成本的键值数据库解决方案。

KeeWiDB 是腾讯云数据库团队推出的新一代分布式KV存储数据库,兼容 Redis 协议和数据结构,上手门槛低(开发者狂喜)。

也就是说,Redis 有的它都有!它有的,就是它才有。那 KeeWiDB 有什么呢?

它可以,通过 WAL 机制支持数据的高速持久化,实现写入即存储;通过内存和持久内存提供热数据的极致读写性能,NVMe SSD磁盘提供大容量、低成本的存储能力,实现数据的冷热分级,优化存储成本。

总的来说,KeeWiDB 拥有前瞻的架构设计、行业领先的性能表现,可助力企业提升生产效率、降低运营成本。

接下来展开说说什么是前瞻的架构设计。

KeeWiDB:兼容Redis协议,领跑NoSQL
图:KeeWiDB总体架构图

proxy:兼容主从版、集群版客户端,客户端请求通过 proxy 实现智能路由和结果聚合;同时,proxy 还提供了流量控制和请求统计等功能。

集群设计:通过改进原生 Redis 的 gossip 方案,KeeWiDB 可有效降低在大集群场景下gossip 本身的流量消耗。数据 sharding 则采用 Redis 集群版策略,将所有 key 划分为16384个 slot,每个 shard 服务若干个 slot,key通过crc16(key) % 16384来获得 slot,再根据slot信息路由到对应节点。

分级存储:创新性地提供内存(DRAM),持久内存(PMEM),固态硬盘(SSD)分级存储解决方案,根据数据访问热度自动分级,将不同访问密度的数据存储到不同成本的介质中,有效实现了性能和成本的平衡。

KeeWiDB:兼容Redis协议,领跑NoSQL
图:KeeWiDB分级存储架构

在该架构中,DRAM 主要存储少量高速索引,如果查询操作直接命中高速索引,则可以直接定位到 value 的位置,最多仅需要一次 IO。

为了降低内存消耗,DRAM 层不存储 key,只存储 hashcode,这样可把 key 大小和索引容量解耦。举个例子,假设一个索引占用内存 hashcode(4) + posinfo(6),共计 10 个字节,100w key索引仅需要占用 10MB 内存。

假如高速缓存未命中,则需要通过 PMEM 来做查找,PMEM 的读取速度还是比较快的,假设按照 DRAM 100ns计算, PMEM可达到 1000ns。KeeWiDB 通过常规的 clock-sweep 算法淘汰不常访问的冷数据到 SSD,PMEM 保存的则是热数据,如果访问的是key 命中,性能将大幅提升。

如果命中的是冷数据,则需要到磁盘(SSD)读取,得益于 SSD 的快速发展,也可实现高性能。目前 KeeWiDB 的设备上,单盘 4k 随机读取 iops 可达到40w+,单盘 4k 随机写入也可以达到 15w+。因此实际使用中,特别是在主要读的场景下,即使PMEM和数据的比例达到 1:10,依然可以获得不错的性能。

KeeWiDB,有多强?

写入即存储

KeeWiDB 采用WAL(预写日志)持久机制,保障数据的原子性和持久性。日志内容会持久化到 PMEM 层,后台进行数据异步落盘,在保证数据实时持久化的同时实现数据的高速、低延迟写入。

极致性能

KeeWiDB 为 KV 场景定制了新一代存储引擎,大部分数据组织都是采用Hash的存取方式,同时与持久内存(PMEM)耦合,单节点最大性能可达到18万写入、28万读取,P99延迟小于2ms,同时可水平堆叠,性能线性提升。

分级存储

基于内存(DRAM)+持久内存(PMEM)+NVMe SSD磁盘搭建分级存储架构,由持久内存(PMEM)缓存访问热数据,磁盘(SSD)存储全量数据,持久内存和磁盘的容量可灵活配置。同时支持数据的冷热分离、自动升热降冷。无需在业务中处理缓存和存储的交换逻辑,可大幅提高版本迭代效率。

大容量低成本

KeeWiDB的原生分布式架构可以提供单实例百TB 级规模;通过持久内存(PMEM)和磁盘(SSD)提供更加灵活的存储方式,在满足业务性能要求的同时提供低成本方案。

智能运维

通过智能proxy和引擎层的多路采集,KeeWiDB 提供丰富的性能、时延、网络、容量、命中率等监控指标,帮助用户提前预警风险,快速定位和解决问题

KeeWiDB,怎么用?

电商场景

电商类应用通常拥有海量的商品数据,使用 KeeWiDB 可以轻松突破内存容量限制,并且大幅降低业务成本。在正常业务请求中,活跃的商品数据会从持久内存中读取,而不活跃的商品数据将从磁盘读取。KeeWiDB 新一代存储引擎带来更强劲的读取能力,单节点最大支持 28W + QPS、P99 延迟小于 2ms,轻松应对百万请求。在电商活动期间,可通过缓存资源的无损扩缩容,快速支撑陡增的性能需求。

游戏全服务

游戏业务包括登陆服务、匹配服务、组队服务、战队服务、社交服务等,需要存储不同的数据结构,比如 Hash 存储玩家信息、Zset 存储排行榜。KeeWiDB 兼容 Redis 的数据结构,对开发者非常友好,同时可将在线活跃的玩家数据持续缓存,未登录的玩家数据落冷至磁盘,玩家上线后数据自动缓存,从而大幅降低成本,保证热数据的极致性能,无需在业务侧处理缓存和存储交换的逻辑,可极大提升开发效率

新闻/内容平台

随着业务运营时间越来越长,内容数据在业务稳定后会有线性的增长,而客户访问的内容以近期、热点数据为主,所以热数据的容量比较稳定,冷数据会不断增大。KeeWiDB 可替换类似 Redis + MySQL 的缓存加存储方案,一体化的缓存+存储架构设计,解决缓存一致性问题的同时,提升业务开发效率,降低存储成本。

画像/推荐业务

当前互联网公司的核心资产是用户,基于用户行为的画像和推荐系统也成为互联网的基础设施,画像、特征、embedding 给企业带来了海量的 KV 存储需求,请求以点读和批量导入为主。KeeWiDB 通过冷热分级存储提供大容量、低成本的 KV 存储能力;通过命令级持久化,实现高速写入,缩短批量导入的窗口时间;通过分布式架构,能够提供百TB 的存储规模。

也说了不少了,大家应该对新朋友 KeeWiDB 有了一定的认识。

想详细了解 KeeWiDB 的高性能之路?且听下回分解。

腾讯云数据库一直致力于非关系型数据库产品的研发和投入,目前已经涵盖了包括缓存、文档、时序、KV在内的七款数据库产品,并且在持续丰富数据库服务的种类。目前,腾讯云 NoSQL 数据库服务了金融、电商、游戏、视频等数十个行业应用场景。