Todis 使用体验
Todis 是 Topling(拓扑岭)公司出品的兼容 Redis 的分布式数据库,解决Redis由于存储数据量巨大而导致内存不够用的容量瓶颈。Todis 基于 Pika 开发,Pika 底层使用 RocksDB, 而 Todis 将其换成了基于 RocksDB 改造的 ToplingDB。根据其官网的介绍,拥有非常棒的性能,解决了许多 Redis on RocksDB 的痛点。
作为刚毕业的学生,初涉分布式 KV 存储领域,需要学习的内容很多很多。 开源社区是一个很好的途径,从中不仅可以研究许多优秀的项目,还可以直接和项目的创造者、开发者一起交流,从中可以学到很多很多。
近期看到关于 Topling 的一些文章与帖子,看到 Topling 有许多独有的技术来解决当前的一些痛点,看到 Topling 的许多核心项目(Todis, ToplingDB 等)均已经开源,所以赶紧去关注一波。
当前 Todis 是内测期,免费使用,只需要购买阿里云的 ECS 即可快速使用(最主要的是还有丰厚的内测奖品 )。
下面是我的内测 Todis 的体验。
使用体验
Topling 在官网贴出了详细的教程(公众号上还有相关视频)。首先是环境搭配,购买完 ECS 之后,只需要下载官方提供的工具,便可以一键完成相关配置,不过吐槽的地方是该工具只有 Windows 版本,没有 Mac 版本,开发人员用 Mac 的还是比较多的。
当前是内测阶段, Todis 的控制台还是比较简陋的,相信后续 Topling 会提供更完善、更精美的控制台界面。
在 ECS 上可以通过官方上传的数据、工具进行的测试,不过官方提供的工具 Bug 较多,然后自己写了一个 Python 脚本,使用微软的的 NLP 数据集进一步进行了测试。
由于没有其他复杂类型的测试数据集,我只进行了简单的字符串测试,使用2核4G 的计算型ECS,写QPS可以达到3W,读QPS达到 6W+。
针对大 Value 场景(大于1M),我还进行了测试,发现读写性能和打开了 KV 分离的 Kvrocks 相当,读性能甚至还优于 Kvrocks。
不过 Todis 最优秀的地方就是其性能并不会随数据量的增加而衰减。这应该是得益于其宣传的 弹性分布式 Compaction,将 Compaction 的负载转移到远程支持,使得其不需要很多 CPU。不过关于 Topling 并没有放出更多关于其远程 Compaction 的 博客文章,不知道后续是否会写专门的文章介绍这一块。
Todis 的读性能优秀,看资料应该是和其”” 可检索内存压缩” 技术有关,我还不太懂其基本原理,后续将进行详细的研究。
Todis 的监控项非常非常的全,但是太多了,眼花缭乱,个人认为后续需要对监控项进行整理,提高用户体验,但是现在还是内测阶段,可以理解,很重要的信息,就是基本信息没有,典型的如:QPS,数据量,内存占用,写入,磁盘 IO 等,这些信息,我只能通过 info 命令去查看。
ToplingDB 引擎是内嵌 Web Server的,可以让以前只能通过日志查看的内容通过 Web 界面实时的展示出来,这个非常非常的酷,有助于引擎(内核)开发人员定位、观测问题。看介绍是通过其 SidePlugin 功能扩展的,对此我不是太了解,后续将认真的研究一下。
如何看待 Todis
Todis 是 TerarkDB 和 TerarkZip 作者的杰作,充分利用了云计算的各种优势:
计算存储分离,提高了资源的利用率
分布式 Compaction,彻底解决了 RocksDB Compaction 影响服务,资源利用率低的问题
也对 RocksDB 和 Pika 的进行了多种优化
SidePlugin功能,带来了引擎内嵌 Web Server,以及监控
新型的 MemTable, SST
Pika, RocksDB 优化
当然,我也有一些小问题:
Todis 基于阿里云,对于用户而言,强绑定于阿里云,如果后续用户迁移到其他云厂商,或者有多云需求,是不是迁移会比较麻烦?
当前 RocksDb 也在做 远程分布式 Compaction,相比原生支持,ToplingDB 这种的优势是什么?
后续是否会利用的 Side-Pluging 实现其他更酷的功能?
对于小公司,可能需要不了那么的性能,有这么好性能的公司,一般也会自行搭建 磁盘型 Redis。所以,个人觉得 Topling 公司如果性价比高,还是很有 市场的。不知道 Topling 未来的定价如何。顺便吐槽 Tair,真的是太贵了!
对于开发者,非常非常想参与进 Topling 开源社区,但是目前发现 Topling 开发者较少,创始人是主力开发者,后续发展规模较大后,老板肯定没有那么多精力,所以还是希望投入开源社区的建设,多吸引开发者加入。个人对 Topling 的技术很感兴趣,但是发现资料很少,只看代码的话,可能没有那么容易看下去,个人建议可以学习一下 PingCAP