7.VictoriaMetrics的其他相关知识

并发管理

See: VictoriaMetrics中协程优先级的处理方式

VM中的golang代码优化技巧

See: VictoriaMetrics中的golang代码优化方法

用 golang 开发系统级的软件,还有一篇总结:《用golang开发系统软件的总结

vm不使用WAL的理由

see: https://valyala.medium.com/wal-usage-looks-broken-in-modern-time-series-databases-b62a627ab704

在现代时间序列数据库中,WAL 的使用看起来很糟糕。它不能保证最近插入的断电数据的数据安全。WAL 还有两个额外的缺点: 预写日志往往会消耗很大一部分磁盘 IO 带宽。由于这个缺点,建议将 WAL 放入单独的物理磁盘中。“直接写入 SSTable”的方式需要更少的磁盘 IO 带宽,因此在没有 WAL 的情况下,数据库可能会消耗更多的数据。 WAL 可能会由于缓慢的恢复步骤而减慢数据库启动时间,甚至可能导致OOM 和崩溃循环。

VM代码不够好的地方

1.用上了goto

2.成员变量应该根据分类再封装成具体的类

3.游标类的操作,封装得很丑陋

4.命名太短了

5.a.b.c.d这样的操作太魔性了,应该封装起来

6.对象的封装不够好,大量的直接引用对象的成员

7.层次性不好

8.文件太长

9.函数太长

10.任何一个错误都不会影响整体流程

很可能某些情况下数据莫名其妙的丢失了

引用文章

本文大量引用了其他作者的文章,对前人的专业和分享精神表示感谢!

valyala

valyala是fasthttp, fastcache等知名组件的作者,同时也是VM团队的CTO。很多VM的设计细节可以从他的博客了解到。

其他作者

results matching ""

    No results matching ""