Kafka Reblance问题排查 背景当我们的服务用Golang重构完成后,在发布Kafka Consumer服务过程中遇到一个奇怪的问题就是发布后的一个小时内出现了大量的数据积压,一小时后恢复正常消费。 经过排查发现,服务在这一小时以内频繁进行Reblance,需要排查原因。 Reblance的触发条件 有新的consumer加入 有consumer下线 topic内partition数量变更 consumer client拉取 2025-02-13 Kafka #疑难问题排查
Golang服务GC优化 背景在上半年的服务性能优化项目中,主要针对业务代码不合理的地方进行了瘦身与优化。优化后压测的cpu pprof显示:gc消耗的cpu占比几乎达到25%,gc次数也比较多,因此在优化业务系统后,Golang GC是另一个性能瓶颈,存在很大的优化空间。 思路首先确定问题:在压测过程中GC CPU占比过大,GC次数较多; 初步解决思路:减少GC CPU占比 → 减少GC单次耗时或者减少GC次数 调研业内 2024-09-15 Go学习笔记 #GC优化
Google SRE弹性熔断算法(Client-Side Throttling)原理分析 在微服务架构中,单个服务故障可能引发雪崩效应。传统熔断器(如Hystrix)通过固定阈值触发熔断,虽然能防止系统崩溃,但也存在两大痛点: 过度熔断:静态阈值无法适应动态负载,可能误伤健康服务 恢复震荡:从熔断状态恢复时易出现流量突刺,导致二次熔断 Google SRE弹性熔断算法(Client-Side Throttling)是一种基于请求成功率动态调整熔断策略的自适应算法,相比传统熔断器的固 2024-08-25 系统设计方案 #系统设计方案 #Golang #限流
TCC的基本原理与常见问题 一、TCC基础介绍TCC 模式是最经典的分布式事务解决方案,它将分布式事务分为两个阶段来执行,try 阶段对每个分支事务进行预留资源,如果所有分支事务都预留资源成功,则进入 commit 阶段提交全局事务,如果有一个节点预留资源失败则进入 cancel 阶段回滚全局事务。 以传统的订单、库存、账户服务为例,在 try 阶段尝试预留资源,插入订单、扣减库存、扣减金额,这三个服务都是要提交本地事务的, 2024-05-13 系统设计方案 #系统设计方案
布隆过滤器 一、布隆过滤器简介布隆过滤器,英文叫BloomFilter,可以说是一个二进制向量和一系列随机映射函数实现。 可以用于检索一个元素是否在一个集合中。 下图是一个例子,来看一下布隆过滤器的工作流程 有三个hash函数和一个位数组,例如单词oracle经过三个hash函数,得到第1、4、5位为1,在初始化时将数组的1、4、5位置为1. 后续如果我们需要判断oracle是否在此位数组中,则通过hash函 2023-04-09 Redis学习笔记 #高性能开发
Go逃逸分析 1. 什么是逃逸分析在C/C++中,对内存的操作经常需要小心翼翼,比如下面这段代码就隐藏了一个陷阱: 函数内部定义的局部变量,其内存是在栈上分配的(静态内存分布),函数执行完毕后内存会被销毁。因此这段代码会直接崩溃。 12345//c++int* foo() { int t = 3; return &t;} 为了避免这个问题,需要对这段代码做一点改 2022-10-04 Go学习笔记 #逃逸分析
二分法专题 二分法常见的几种题目类型 查找特定值 查找第一个大于(或等于)特定值的元素 – 「找下界」 查找最后一个小于(或等于)特定值的元素 – 「找上界」 二分法通用模板二分查找无论是找下界、还是找上界、还是找特定值,都可以套用「找下界」的模板代码: 循环条件为 left <= right,表示闭区间不为空 if 的判定条件和给定的比较规则是一致的:比如要找满足 x > 2022-09-22 算法 #二分法
Python单元测试 1. PyTest安装:12345>>> pip install pytest# 常用插件安装>>> pip install pytest-mock # mocker插件>>> pip install pytest-cov # 单测覆盖率插件 2. 基础用法定义一个函数如下: 123def get_sum(a, b): print &q 2022-08-10 Python学习笔记 #单元测试
收藏从未停止 ⏹ 速查表 链接 MarkDown https://markdown.com.cn/ Go面试宝典 https://golang.design/go-questions/slice/vs-array/ 2022-07-24 杂记 #速查
Prometheus | PromQL 0. 什么是PromQL PromQL(Prometheus Query Language)是 Prometheus 内置的数据查询语言,它能实现对事件序列数据的查询、聚合、逻辑运算等。它并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询、可视化、告警处理当中。简单地说,PromQL 广泛存在于以 Prometheus 为核心的监控体系中。所以需要用到数据筛选的地方,就会用到 2022-07-05 监控告警 #Prometheus #PromQL