摘要: 在很多分布式系统中,读请求通常都会转发给 Leader。 原因很简单:只有 Leader 才知道哪些日志已经提交(committed),哪些数据是最新的。 但 etcd 允许 Follower 节点直接处理线性一致读(Linearizable Read)。 这不禁让人产生几个疑问: Follower 阅读全文
posted @ 2026-06-22 16:09 胡云Troy 阅读(98) 评论(0) 推荐(1)
摘要: 最近由于 并发性能优化复盘 开始看并发编程相关的书籍,希望借着书把并发相关的内容给摸清。现在看的差不多了,可以写篇学习笔记记录下。 首先,并发不是并行这个不用解释了。 要用到并发,主要有两种模式: Worker Pool: 工作池模式; Pipeline: 管道模式; 用 Worker Pool 模 阅读全文
posted @ 2026-06-20 18:40 胡云Troy 阅读(11) 评论(0) 推荐(0)
摘要: 上周服务治理系统的同事(注意不是客户)发现一个问题,他调用的 api 接口不稳定。有时候正常,有时候报错,关键是大部分时候都是报错。 更关键的是这个接口是我开发的。 好吧,理所当然的他来找我。第一时间“男人的第六感”告诉我是后端服务处理时间太长了,导致客户端在超时时间内未处理完成。要不把 timeo 阅读全文
posted @ 2026-06-18 12:02 胡云Troy 阅读(252) 评论(0) 推荐(1)
摘要: 读完文章 Strong consistency models 感觉有必要做个笔记,这篇文章很难,不好懂,几乎每段都要配上百度翻译和 ChatGPT 才能看的懂。为了对得起自己的理解和转头即忘的记忆力(看起来好像是病句...),还是写个笔记记录下,另一方面用自己的话,自己的理解在说一遍也能检查理解的到 阅读全文
posted @ 2026-06-14 15:53 胡云Troy 阅读(92) 评论(0) 推荐(1)
摘要: etcd-raft 节点在 follow,leader 和 candidate 状态流转。状态转移图如下: 图片摘自 https://raft.github.io/raft.pdf 正常情况下,各节点在自己的角色里好好干活。但是如果出现异常,比如网络分区后,各个节点会做什么呢? 本文主要讨论网络分区 阅读全文
posted @ 2026-06-10 14:54 胡云Troy 阅读(120) 评论(0) 推荐(0)
摘要: 概述 go-zero 基于 net/http 标准库实现了一套 rest web 框架。在使用 goctl 快速开发的同时,也需要了解 go-zero 内部做了什么。本文结合 go-zero rest学习其中的源码,力图做到知其所以然。 源码 流程图 在阅读源码之前,先看下流程图有个印象。从流程图大 阅读全文
posted @ 2025-12-26 22:19 胡云Troy 阅读(781) 评论(0) 推荐(0)
摘要: 概述 在使用 Go 开发时几乎都会用到 net/http 标准库。但是,对库的内部实现不了解,仅限于会用。遇到问题容易懵,比如: 长连接和短连接有什么区别?具体什么实现原理? net/http 如何处理并发请求? net/http 有用到缓存吗?缓存用来干什么? ...... 单个问题各个击破,不如 阅读全文
posted @ 2025-12-07 14:18 胡云Troy 阅读(1089) 评论(0) 推荐(0)
摘要: 概述 使用 Go 开发并发程序很容易,一个 go 关键字就可以启动协程处理任务。Go 创建一个 goroutine 只需要 2K 内存空间,并且 go 协程上下文信息仅存储在两个寄存器中,对于 Go 运行时来说,切换上下文特别快。 不过凡事不加限制就会出问题,如果不加节制的滥用 goroutine 阅读全文
posted @ 2025-11-24 12:08 胡云Troy 阅读(930) 评论(0) 推荐(1)
摘要: 概述 看了几篇同步,异步,阻塞和非阻塞的文章,感觉还是云里雾里的。本文结合自己的理解写几个例子加深印象,可能理解有误。大佬们可以帮忙批评指正。 个人理解同步/异步,阻塞/非阻塞是站在不同角度看的概念。 同步/异步:站在被调用方视角看,同步会执行调用方的请求,请求结束后返回执行结果给调用方。异步会先响 阅读全文
posted @ 2025-11-13 11:58 胡云Troy 阅读(45) 评论(0) 推荐(0)
摘要: 概述 sync.pool 对象池可以用来复用临时对象,减少内存压力,降低 GC 压力。 示例 基本用法 type Worker struct{} func (w *Worker) Name() string { return "worker" } func main() { workerPool : 阅读全文
posted @ 2025-11-09 18:35 胡云Troy 阅读(47) 评论(0) 推荐(0)