在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。
首页 | 归档 | 分类 | 标签 | 关于 |
|
我们有这样的 prometheus 的数据如下(以下是伪代码):
1 | prometheusCounter = prometheus.NewCounterVec( |
如上,我们有一个 counter 类型的一个监控指标。其中,namespace:TXHJ。measurement ( metric_name ):SRMP_OrderDataServer_api_pre_costTime_total。dimension ( tags ):[]string{“cpu”} 。
由于使用 prometheus pull 方式,我们在本机使用 curl 127.0.0.1:8080/metrics
得到下面的prometheus 监控数据。
1 | # HELP TXHJ_SRMP_OrderDataServer_api_pre_costTime_total |
Hbase,其实是Hadoop Database的简称,本质上来说就是Hadoop系统的数据库,为Hadoop框架当中的结构化数据提供存储服务,是面向列的分布式数据库。 这一点与HDFS是不一样的,HDFS是分布式文件系统,管理的是存放在多个硬盘上的数据文件,而Hbase管理的是类似于key—value映射的表
https://www.bookstack.cn/read/prometheus-book/ha-scale-prometheus-with-federation.md?wd=job
prometheus 配置详解:https://yasongxu.gitbook.io/container-monitor/yi-.-kai-yuan-fang-an/di-2-zhang-prometheus/prometheus-de-pei-zhi-yu-fu-wu-fa-xian
federate
Go 语言中 defer 是比较常用的关键字,为了使用好他,我站在底层简单的剖析一下。
Go 官方对于 defer 的解释
1 | A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement, reached the end of its function body, or because the corresponding goroutine is panicking. |
https://segmentfault.com/a/1190000021199728
https://blog.csdn.net/suifeng629/article/details/81567777
在分布式多节点系统中,出现故障很常见。任何节点都可能在没有任何事先通知的情况下挂掉。
传统的哈希,当节点减少会导致键与节点的映射关系发生变化,这个变化对新的键来说并不会产生任何影响,但对于已有的键,将导致节点映射错误
在分布式多节点系统中,需要对服务节点进行扩容,以应对突发流量。同样的,传统哈希,当节点增加会导致已有的键,映射节点错误。
对于分布式缓存这种系统而言,映射规则失效就意味着之前缓存的失效,若同一时刻出现大量的缓存失效,则可能出现“缓存雪崩”,这将导致灾难性的后果。
工作时写一个 web 服务的时候,底层使用 udp 传输协议,需要对 udp 的 socket recv buffer 进行获取和调整。用 go 语言实现,于是有了类似下面的代码
1 | func serve(addr string) { |
以上代码是随手写的一个案例,目的想要实现一个 udp server 的重启。但是是有问题的,比如:在调用 udpConn.Close 的时候会阻塞,导致重启失败
这个问题让我花费了一点时间去看源代码才明白,因此记录下来
1 | objdump -x xxx.so | grep NEEDED |
1 | readelf -a xxx.so/xxx | grep NEEDED |
1 | ldd xxx.so/xxx |