熊喵君的博客

Thinking will not overcome fear but action will.

理解 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 方法,依次输...

gRPC 知识点备忘录(持续更新)

0x00 前言 本篇文章主要记录在使用 gRPC 中的一些收获及容易混淆的知识点。 0x01 原理篇 0x02 应用篇 关于 context 的问题 RPC 方法的第一个参数 ctx context.Context 中,到底存储了什么?以下面的 SayHello 为例: // SayHello implements helloworld.GreeterS...