01 2022 档案

golang: 学会几个语法上的新写法
摘要:看了VictoriaMetrics,学会了几个新写法,记录下来: 1. 数组拷贝 以前: arr := make([]byte, 0, len(oldArr) arr = append(arr, oldArr...) 现在: arr := append([]byte{}, oldArr...) 2. 阅读全文

posted @ 2022-01-28 19:32 ahfuzhang 阅读(101) 评论(0) 推荐(0)

【小测试】golang中使用string()来转换[]byte数组产生了拷贝
摘要:下方是benchmark的数据差异: import ( "reflect" "unsafe" ) // NoAllocString convert []byte to string func NoAllocString(buf []byte) string { return *(*string)(u 阅读全文

posted @ 2022-01-28 16:47 ahfuzhang 阅读(263) 评论(0) 推荐(0)

golang源码阅读:VictoriaMetrics中协程优先级的处理方式
摘要:在阅读VictoriaMetrics的源码的时候,读到了那么平平无奇的一段: // AddRows adds the given mrs to s. func (s *Storage) AddRows(mrs []MetricRow, precisionBits uint8) error { if 阅读全文

posted @ 2022-01-26 18:38 ahfuzhang 阅读(812) 评论(0) 推荐(1)

介绍一个golang库:zstd
摘要:zstd是facebook开源的一个C语言的压缩库。 从官方提供的压测数据看,它的压缩速度与众所周知的以快著称的snappy的压缩速度几乎持平,但是压缩率上比老牌的gzip还要高。 再看看zstd吊打gzip这张图: 最快每秒压缩512MB 最高达到4倍压缩率 跑得快,拉得多,我们这种搞网络数据运输 阅读全文

posted @ 2022-01-25 11:42 ahfuzhang 阅读(4020) 评论(0) 推荐(0)

介绍一个golang库:fastcache
摘要:学习VictoriaMetrics源码的时候发现,VictoriaMetrics的缓存部分,使用了同一产品下的fastcache。下面分享阅读fastcache源码的的结论: 1.官方介绍 fastcache是一个用go语言实现的,很快的,线程安全的,内存缓存的,用于大量对象缓存的组件。 它的特点是 阅读全文

posted @ 2022-01-24 17:31 ahfuzhang 阅读(2633) 评论(0) 推荐(1)

今天太开心了,因为我知道了seastar框架
摘要:今天听说了一个新的C++语言开发的网络框架,叫做seastar。 seastar有何特别之处呢?先看看官网提供的性能数据: 性能 HTTPD benchmark: cpu # request/sec 2 637,430(相当于单核性能318715/s ) 4 1,303,761 6 1,907,91 阅读全文

posted @ 2022-01-19 21:31 ahfuzhang 阅读(3124) 评论(3) 推荐(1)

【练习】rust中的复制语义和移动语义
摘要:1.基本类型都是复制语义的 fn main(){ let a = 123; { #[allow(unused_variables)] let b = a; //如果是移动语义,那么后续的a将不再有效 } println!("{:?}", a); //编译成功,说明a是复制语义 } 2.非基本类型是移 阅读全文

posted @ 2022-01-18 20:12 ahfuzhang 阅读(124) 评论(0) 推荐(0)

【VictoriaMetrics】vm单机版和vm-storage的查询功能的对比
摘要:1.vm-storage源码调用表 文件 行号 函数 说明 app/vmstorage/main.go 53 main 入口94行调用srv.RunVMSelect() app/vmstorage/transport/server.go 151 func (s *Server) RunVMSelec 阅读全文

posted @ 2022-01-17 15:16 ahfuzhang 阅读(728) 评论(0) 推荐(0)

【VictoriaMetrics】vm-select源码阅读
摘要:调用层次表格 源文件 行号 函数 说明 app/vmselect/main.go 63 main 入口 92行调用 requestHandler app/vmselect/main.go 132 -requestHandler 处理http协议的入口 222行调用 selectHandler app 阅读全文

posted @ 2022-01-17 12:15 ahfuzhang 阅读(912) 评论(0) 推荐(0)

【源码阅读】vm-insert与vm-storage之间的通讯
摘要:先说结论 vm-insert与vm-storage之间采用极其简单的通讯协议 对于简单的场景,越简单性能越高 vm-insert连接到vm-storage后,先发送字符串vminsert.02,vm-storage收到后回复字符串ok,然后握手成功 vm-insert发送一个字节的压缩标志给vm-s 阅读全文

posted @ 2022-01-14 15:08 ahfuzhang 阅读(567) 评论(0) 推荐(0)

【问题排查过程】vm-backup的snapshots导致磁盘满
摘要:使用中发现,vm-storage节点仅仅过了6天,就占用了800GB的硬盘空间。很不正常。下面是排查过程: 1.查看磁盘占用情况: 先登录容器,执行: df -h /dev/vdb 1012.8G 870.2G 142.7G 86% /var/victoria-metrics/data 2.查看节点 阅读全文

posted @ 2022-01-11 20:09 ahfuzhang 阅读(462) 评论(0) 推荐(0)

【分享代码】bash中对一个逗号分隔的列表去重
摘要:直接上代码: #!/bin/bash dedup_list(){ v_list=$(echo "$1" | sed "s/,/\n/g" | sort -u | tr '\n' ',') if [ "${v_list: -1:1}" == "," ]; then let v_len=${#v_lis 阅读全文

posted @ 2022-01-11 17:53 ahfuzhang 阅读(124) 评论(0) 推荐(0)

【分享数据】vm-insert的压缩比达到29倍
摘要:vm-insert采用remote-write的http协议来接收metric数据,然后按照一定算法转发到vm-storage群集。 vm-insert到vm-storage这里是用了自己的二进制协议的(数据序列化的方式还没看),从测试数据来看,这里转发数据的压缩比达到了29倍!!! 输入的HTTP 阅读全文

posted @ 2022-01-07 15:38 ahfuzhang 阅读(198) 评论(0) 推荐(0)