golang

Prometheus源码笔记(5)-retrieval模块

retrieval模块主要用于管理监测目标和提供对于监测目标的指标数据的抓取,是Prometheus中核心的数据捕获组件。本节内容将针对该模块中重要的组成代码和核心逻辑进行简要的分析。


Prometheus源码笔记(4)-web模块

Prometheus的web模块主要提供web相关的操作和federate功能(层次化部署接口),并提供Prometheus的http api接口对外提供服务。


Prometheus源码笔记(3)-notifier模块

Prometheus服务器根据规则发送告警到AlertManager,告警管理器根据接收到的告警进行分发处理,经过分组或者过滤等发送到邮件或者其他接收系统中。


Prometheus源码笔记(2)-config模块

config模块主要用于配置文件的加载与管理操作,从config.yml文件中传递的数据将会用于生成一个config结构体对象,全局的config定义如下。通过"gopkg.in/yaml.v2"解析yaml模块并按照所属的组再细分到单独的配置项目中,比如global和alert组下的配置。本节将通过一个实例来解释模块对于config的配置过程。


Prometheus源码笔记(1)-cmd模块

cmd/prometheus模块作为程序的入口主要执行程序的初始化和组件的启动工作,核心代码位于cmd/prometheus/main.go中。本节主要是对于该模块的阅读记录,并对于核心处理逻辑进行解释。


Bolt:一个纯Go实现的KV数据库

bolt是一个纯go语言实现的键值数据库,支持完全的ACID实务操作,尽管不像SQLite那样有完善的查询语言,但是接口简单易用。bolt本身通过使用一个内存映射的磁盘文件来管理数据,逻辑清晰,接口简单易用。下面代码就是bolt提供的简单的操作接口示例。


Tomb库管理Goroutine状态

对于原生的goroutine,存在的问题是,一旦我们创建了新的goroutine,除非主goroutine退出,自身发生错误退出,以及主动退出这三种方式外,我们是无法直接以一种比较优雅的方式从外部控制退出执行,另外goroutine中的错误信息也是默认不会返回的,执行时将任何返回数据丢弃。


Go 并发编程的三个使用场景

本文内容来自于《Go in action》并发编程章节内容,介绍了三个并发编程中经常会遇到的问题实现,包括go并发程序的生命周期管理,go来管理连接池,使用unbuffered channel 管理并发执行的数量。


bufio模块实例及代码分析

bufio模块是golang标准库中的模块之一,主要是实现了一个读写的缓存,用于对数据的读取或者写入操作。该模块在多个涉及io的标准库中被使用,比如http模块中使用buffio来完成网络数据的读写,压缩文件的zip模块利用bufio来操作文件数据的读写等。本篇文章主要是通过两个例子简单的介绍bufio的一些功能和实现方式,供大家参考。


golang版本管理工具gb的使用

本篇文章主要是介绍golang版本管理工具gb的基本使用方法,并通过一个实例来介绍如何在项目中使用gb工具。