现在Todis 已经开源,用户可以自己编译(社区版),社区版拥有完整的 Todis 功能,只是欠缺性能组件,即便如此,Todis 社区版仍然优于竞品。
这两年云原生的概念非常火爆,相应的,就有了“云原生数据库”的概念,但是,绝大多数自称“云原生”的数据库,只是把“数据库软件”搬到云上,变成“数据库SaaS”,但是在其架构上,并未充分利用“云计算”的各种优势。
在“外存版 Redis”中,Todis 是第一个真正的“云原生数据库”,充分体现了“云计算”的各种优势:
1.存计分离,存计分离使得我们的存储和计算可以分别进行弹性伸缩,MySQL 的存计分离产品已经有很多,但在“外存版 Redis”里面,还没有类似的产品
2.弹性计算,Todis 的一个核心功能“弹性分布式Compact”,以最低的成本,最大的弹性,将 Compact 转移到专用的 Compact 计算集群,彻底解决了 Compact 的 CPU 消耗问题
3.弹性分布式 Compact 解决了 Compact 瓶颈问题,那么,数据库的瓶颈就转移到前台线程了,主要是对 SST 读,而这,曾经是 terark 的立身之本
4.除了性能与成本的优势,一个优秀的产品,还需要做好“人性化”功能,可以看到,这一点题主是有深刻印象的
在架构上,Todis 最主要的竞争力是,使用 ToplingDB 代替 RocksDB 作为存储引擎,其次才是在 Redis/Pika 的层面上实现的一些优化。
所以,ToplingDB 才是主角,fork 自 RocksDB,做了很多关键的改进,同时解决了 RocksDB 的很多问题,现在ToplingDB 也开源了,大家可以围观,可以吐槽。
所以,Todis 的优势,其实主要是 ToplingDB 的优势。存计分离,在各种报道、文章中已经司空见惯了,而时至今日,弹性分布式 Compact 仍然鲜见于报,而对于我,早在 2018 年底,就已经有了比较完整的思路,后面因为一些事情,耽误了两年,直到最近才推向市场。毫无疑问,这是我们最重要的核心竞争力:
1.Compact 计算集群,可以使用“计算型”结点,而前面的 DB 结点,使用“内存型”结点
1.Compact 最大的消耗是 CPU,对内存的需求不高
2.Compact 计算集群,可以多用户多实例共享,即多个 DB 结点共享同一个 Compact 集群
1.集群内的单个结点,也是同时为多个 DB 服务的
2.多个 DB 结点的 Compact 可以“平峰错谷”,大幅提升了资源利用率
3.Compact 计算集群,可以使用“空闲算力”,任何有空闲算力的结点,闲着也是闲着,那就执行点 Compact 吧
1.“空闲算力”最大的特点是“没有保证”,这一刻空闲,我可以给你用,下一刻,我繁忙了,就马上要回收,正好,Compact 进程可以随时终止,不会对 DB 产生影响
2.大厂的数据中心,从来不缺算力,而是苦于大量的“空闲算力”无处利用
3.相比一般大厂,公有云厂商的资源利用率要高得多,然而他们的“空闲算力”仍然卖得非常便宜,甚至可以低到 1折,由此可见一斑
4.曾经的看家本领,可检索内存压缩,读性能傲视群雄,但缺点是压缩速度慢,在分布式 Compact 出世之前,这个缺点几乎是致命的,现在,两者是珠联璧合
最后,给大家分享几个性能测试结果:
原文作者:雷鹏
原文链接:https://www.zhihu.com/question/499519193/answer/2230414827