ToplingDB 的内嵌 Web

内嵌 Web 这事,相信玩过服务器的人都知道,有很多服务器(例如 Dell)可以通过浏览器 Web 启动、安装操作系统……,它们是在 BIOS(暂且叫 BIOS 吧) 中集成了一个 WebServer!


所以, ToplingDB 内部集成一个 Web 并不奇怪——可以在阿里云上 免费体验 Todis 内测版(底层使用 ToplingDB)。


ToplingDB 内部集成的这个 WebSidePlugin 的一个自然扩展,我一开始设计 SidePlugin 的时候,并没有将 Web 一起设计进去,而是在实现的过程中发现,以这样的方式,集成一个 Web,是一件自然而然的事情。


这个 Web 的第一个作用是 展示配置信息


后来加上了 LSM 树的实时状态信息,这些信息可以 实时刷新,从而表现出 动态效果

动图

然后又加上了 LSM 树的详细信息(每一层的SST文件列表,高亮表示正在 Compact):

甚至每个SST文件也可以单独展示更详细的信息:

此为 BlockBasedTable,注意 DataBlock Index,其中 IndexUserKey 和上图(列表)中的 UserKey 显示可自定义(此为 Todis Hash Data Key 的自定义显示)


再后来,展示分布式 Compact 的运行状态:

整个页面上几十上百个 Compact 同时闪动,看着就非常过瘾,并且,里面的链接都是可以点的

动图

最后,我调研 Prometheus 监控时了解到它是 pull 模型,这就意味着,我只需要在 Web 中加一点点代码,就直接支持 Prometheus + grafana 了!并且,不需要引入任何新的依赖,不需要对 ToplingDB/RocksDB 本身的代码做任何改动(除非要增加新的指标),因为 RocksDB 原本就记录了很多指标(数百个),我们只是把这些指标用 Web 导出给 Prometheus !

不像某知名软骨秒跪大厂,就加那么几个少得可怜的监控指标,先引入巨大的监控库,再改若干代码,一个个打点,然后还要启动一个本地的独立服务进程,然后发现打开监控机器负载就飙升……

监控页面出来了,普通指标好说,但是直方图(histogram)指标(典型代表是延时直方图),仅仅显示个 P50, P90, P99 …… 总感觉太 Low,所以,我们做了 直方图全域展示


Todis 和阿里云 Tair 的性能对比中, Todis 的监控是全部打开的 ,并且 Prometheus + grafana 都是运行在 DB 结点上:


请使用浏览器的分享功能分享到微信等