-
Prometheus源码分析:基于Go Client自定义的Exporter,是如何在Local存储Metrics的?
我们想要提高微服务系统的可观察性,因此在go语言写的微服务中,使用Prometheus提供的go client实现上报metrics的功能。
hugo_lei 2023-01-02438 0 0 -
详解Go中内存分配源码实现
Go 语言的内存分配器就借鉴了 TCMalloc 的设计实现高速的内存分配,它的核心理念是使用多级缓存将对象根据大小分类,并按照类别实施不同的分配策略。TCMa...
luozhiyun 2023-01-02453 0 0 -
Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别
Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。
hugo_lei 2023-01-02444 0 0 -
Go语言中时间轮的实现
最近在工作中有一个需求,简单来说就是在短时间内会创建上百万个定时任务,创建的时候会将对应的金额相加,防止超售,需要过半个小时再去核对数据,如果数据对不上就需要将...
luozhiyun 2023-01-02460 0 0 -
详解Go语言I/O多路复用netpoller模型
从 Go 源码目录结构和对应代码文件了解到 Go 在不同平台下的网络 I/O 模式的有不同实现。比如,在 Linux 系统下基于 epoll,freeBSD 系...
luozhiyun 2023-01-02455 0 0 -
详解Go语言调度循环源码实现
提到"调度",我们首先想到的就是操作系统对进程、线程的调度。操作系统调度器会将系统中的多个线程按照一定算法调度到物理CPU上去运行。虽然线程比较轻量,但是在调度...
luozhiyun 2023-01-02466 0 0 -
使用 BPF 改变运行中的程序的函数参数
注意到我们使用 //go:noinline 修饰了 main.greet 函数,防止被编译器内联,方便进行测试验证。
ritchiechen 2023-01-02508 0 0 -
Go语言实现布谷鸟过滤器
在我们工作中,如果遇到如网页 URL 去重、垃圾邮件识别、大集合中重复元素的判断一般想到的是将集合中所有元素保存起来,然后通过比较确定。如果通过性能最好的Has...
luozhiyun 2023-01-02449 0 0 -
Go中定时器实现原理及源码解析
我在春节期间写了一篇文章有关时间轮的:https://www.luozhiyun.com/archives/444。后来有同学建议我去看看 1.14版本之后的 ...
luozhiyun 2023-01-02447 0 0 -
Go语言GC实现原理及源码分析
在垃圾收集器开始工作时,从 GC Roots 开始进行遍历访问,访问步骤可以分为下面几步:
luozhiyun 2023-01-02469 0 0