熊喵君的博客

Thinking will not overcome fear but action will.

Kubernetes 应用改造(三):负载均衡

Kubernetes 中的负载均衡总结

0x00 前言    在前文中,曾经讨论过 “Kubernetes 负载均衡失效” 的问题。即 Kubernetes 的默认负载平衡通常不能与 gRPC 一起使用,在不使用 LoadBalance service 的情况下,因为 HTTP/2 链接复用特性,导致客户端的所有请求都发往同一个 Pod,导致负载不均衡。具体原因可见此文:gRPC Load Balancing on Kube...

gRPC 微服务构建之链路追踪(OpenTracing)

在 gRPC 服务中应用 OpenTracing:使用 Zipkin 和 Jaeger 进行路追踪

0x00 前言 前一篇文章 微服务基础之 链路追踪(OpenTracing),介绍了 OpenTracing 的理论,本文基于 gRPC 与 Zipkin && Jaeger 来实现 Tracing 的应用。 0x01 回顾 OpenTracing 数据模型 一个 Tracer 包含了若干个 Span,Span 是追踪链路中的基本组成元素,一个 Span 表示一...

基于 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...