熊喵君的博客

Thinking will not overcome fear but action will.

理解 Prometheus 的基本数据类型及应用(实践篇)

Prometheus 及 PromQL 的一些实践

0x00 前言 本文是对前一篇文章 理解 Prometheus 的基本数据类型及应用(基础篇) 的实践以及深入理解,推荐如下几篇文章: PromQL 简明教程 Prometheus 中文文档 prometheus-book 0x01 再看四类指标 指标名称和标签集的每个唯一组合定义了一条时间序列,而每个时间戳和浮点数定义了一个系列中的样本(即一个数据点),Prometh...

Kratos 源码分析:理解 Kratos 的数据统计类型 Metrics(一)

分析 Kratos 框架中的 Metrics:滑动窗口

0x00 前言 这篇文章,分析下 Kratos 项目中的核心统计结构 Metrics 及滑动窗口 Window 的实现。 Metrics 和 Window 的用途如下: Metrics:在数据库操作指标量化(如延迟,错误,调用次数等)、接口指标量化使用较为广泛 Window:在限流器、熔断器、负载均衡算法判定等需要计算比率的地方使用较多,主要解决单个指标计算的平滑性,Wind...

理解 Prometheus 的基本数据类型及应用(基础篇)

Prometheus 介绍及基础应用

0x00 前言 本文分析下 Prometheus 以及常用的 Metrics,Metrics 是一种采样数据的总称,是一种对于度量计算单位的抽象。Prometheus 是一个数据监控的解决方案,能随时掌握系统运行的状态,快速定位问题和排除故障。并提供了从指标暴露,到指标抓取、存储和可视化,以及最后的监控告警等一系列组件。 prometheus 的整体架构如下: Prometheus 的...

微服务中的缓存(二):微服务基础之多级服务缓存(Cache)

微服务应用中缓存的使用策略、问题及解决

0x00 前言   在微服务架构中,后台组件开启热数据缓存,可以有效的降低 Mysql 等后端存储的读负载。在笔者项目后台服务构建中,一般会有本地缓存(Local-cache)—> Redis(高可用缓存服务)—>Mysql(高可用存储集群),这种层级的缓存逻辑。 0x01 缓存更新模式 不管如何更新缓存,这里有一个前提是:缓存必须有过期时间(TTL),就像在 Redi...

Kubernetes Certificate 使用 && 总结

How to manipulate kubernetes's certificates?

0x00 TLS 认证 在前文 证书(Certificate)的那些事 中介绍了 X509 体系、证书认证等相关知识,采用 TLS/SSL 体系一般两种方式: 服务器单向认证:只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。这种情况一般适用于对 Internet 开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客...

OpenSSH Certificate 证书最佳实践

How Do We USE OpenSSH Certificate Properly?

0x00 前言 针对零信任安全领域的 SSH 服务器安全管控,OpenSSH 的证书体系绝对是最佳的安全选择。上一篇文章 证书(Certificate)的那些事 简单介绍了 OpenSSH 的证书体系。本文针对 OpenSSH Certificate 的应用做一个系统的梳理。大概涉及到如下几个方面,本文中 Certificate 代指 OpenSSH 证书: Certificat...

Golang 并发模型:Pipelines and cancellation

Channel 的经典应用(基础)

0x00 前言 Go Concurrency Patterns: Pipelines and cancellation 一文介绍了 Golang 的最经典的并发及控制模型:Pipeline(流水线模型),基于 Channel 的生产者消费者模型。本文即整理及总结。 文中给出了几个典型 goroutine 的并发及控制场景: Squaring numbers:计算平方数 Fa...

开源限流组件分析(二):Golang-time/rate 限速算法实现分析

分析 Golang 标准库提供的令牌桶限流器

0x00 前言 这篇文章来分析下标准库 time/rate 的使用及实现细节,此库同样基于令牌桶(Token Bucket)实现了限流。 0x01 time/rate 的使用 创建限流器 使用 NewLimiter(r Limit, b int) 创建限速器,令牌桶容量为 b。初始化状态下桶是满的,即桶里装有 b 个令牌,以后再以每秒往里面填充 r 个令牌。有两种特例: 允许...

微服务基础之限流(RateLimit)

限流的基础概念

0x00 微服务中的限流 本篇博客来介绍下微服务中的服务限流(Ratelimit),它是保证服务稳定的基础组件之一。其他类似的概念还有服务熔断。微服务中的限流主要指业务代码的逻辑限流。 通常,限流策略相较于熔断,使用的更为广泛一些,因为限流的同时可以对其他(被限制)服务请求进行排队处理,而不是像熔断策略直接拒绝掉这些被限制的请求。当然了,简单的处理方式就是被限制的流量,可以根据具体的业...

开源限流组件分析(三):JuJu-Ratelimit 限速算法实现分析

分析一款基于令牌桶实现的限速算法

0x00 前言 这篇文章来分析下 juju-ratelimit 的使用及实现细节,这个 Golang 的项目基于 Token Bucket 实现了限流。核心的逻辑就两点: (初始化)生产令牌桶 消费令牌的接口 0x01 核心结构 Clock 结构 对 time 相关接口的封装,主要提供产生当前时间 // Clock represents the passage of...