熊喵君的博客

Thinking will not overcome fear but action will.

基于 Golang 实现的定时器分析与实现(二):最小堆 && 时间轮

Timer and Ticker: events in the future

0x00 前言 定时器(Timer)常用于解决 多长时间后触发处理某些事件 的问题。在项目中,通常遇到下面两类问题都可以使用定时器来解决: 延迟消息、事件处理,如订单默认 N 时间跨度后自动评价等 长连接心跳管理,如在 IM 服务器实现中,当客户端与服务端 N 时间跨度内没有 Heartbeat 的话,需要断开此无效连接 各种需要定时调度的实现 0x01 原...

理解 Kratos 的数据统计类型 Metrics(三)-- 未完待续

Metrics 的实战应用

0x00 前言 0x01 再看WRR-LB算法 0x02 再看Sre-Breaker 参考 Kratos-Sre-Breaker

Kratos 源码分析:gRPC-Warden 拦截器(链)及实现

Kratos 框架分析

0x00 前言    在 Warden 框架中,大量使用了拦截器来完成对 RPC 功能的增加及统一接口封装,本文从源码的角度来分析下 Warden 中的拦截器 Interceptor。 0x01 Warden 拦截器总览 logging.go:包含了 UnaryServerInterceptor 及 UnaryClientInterceptor 的实现,通用日志逻辑,其中加入了对 R...

Etcd 开发中的细节梳理(总结)

如何更优雅的使用 Etcd 实现工作项目

0x00 前言 本文主要梳理下在使用 Etcd(仅限于 V3 版本) 进行开发中遇到的一些细节问题及解决。必读的文档如下: etcd3 API 0x01 Etcd 的客户端 Etcd 官方提供了丰富的客户端 实现,值得参考。 key.go key.go 客户端的选项 阅读 etcd 分布式锁 mutex 的源码时,遇到 waitDeletes 函数 0x02 ...

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

分析 Kratos 框架中的 Metrics:LB 算法中的应用

0x00 前言 上一篇博客 理解 Kratos 的数据统计类型 Metrics(一) 中,分析了 Kratos 的滑动窗口类 - RollingPolicy 的实现。这篇文章进一步看下基于 RollingPolicy 进一步封装的应用结构:RollingCounter 和 RollingGauge。这两个结构在 Kratos 项目中应用较为广泛。 0x01 RollingCou...

Google SRE 弹性熔断算法实现分析

Google-SRE-Experience:Handling Overload

0x00 前言    这篇文章,了解下 Google SRE 中的过载保护(弹性熔断)的处理机制 –Handling Overload 之前的文章,分析了 Hystrix-Go 熔断算法的实现,其算法核心是:当请求失败比率达到一定阈值之后,熔断器开启,并休眠一段时间(由配置决定),这段休眠期过后,熔断器将处于半开状态,在此状态下将试探性的放过一部分流量,如果这部分流量调用成功后,再次...

微服务项目阶段小结(2020-05-01)

0x00 开发语言 + 框架 Golang RPC:gRPC-go Web:go-gin 或其他通用的 Web 框架 微服务框架:Kratos(强烈推荐)、Micro、go-chassis 0x01 微服务划分    在微服务实践中,如何切分微服务,总结了一些原则如下: 微服务化: 逻辑独立、边界清晰的模块作为一个独立的微服务 微服务架构中,服务...

Kratos 源码分析:计划

分析微服务开发框架 Kratos

计划 计划在工作之余研究下 Kratos 项目 的源码及实现,包含了微服务发现、gRPC 封装、Opentracing、Monitoring、CGI 组件等等。 Lazy Load Container gRPC-Warden 拦截器(链)及实现 gRPC-Warden 中的超时传递 gRPC-Warden 中的多消费者订阅 - Watcher 模式(gRPC-Resol...

gRPC 应用之 Prometheus 监控接入

使用 gRPC 拦截器对接 Prometheus 监控介绍

0x00 前言    本文的出发点是希望在 gRPC 的框架中,加入核心数据监控的能力(Monitoring),目前预研的库有两个: prometheus open-falcon 这篇文章,介绍下如何将 gRPC 和 Prometheus 结合。Prometheus 的架构中常用的是 Pull 模式,当然 Push 也可以。这其实就是服务端(服务注册)和客户端(主动上报数...

Kratos 源码分析:CPU 指标采集

了解 gopsutil 常用方法应用及 Linux 系统服务常用采集指标

0x00 前言 通常,在负载均衡算法判断中,对服务端的负载衡量,常用的指标有 CPU、内存、io 负载等,客户端的主要指标有调用延迟,处于等待 Response 的请求数、调用成功率等,其中 CPU 使用率是一个及其重要的指标。 在 Linux 下,通过使用 gopsutil 库,可以非常方便的采集系统指标。 0x01 基础使用 获取 cpu 基础信息 使用 Info 方法,依次输...