Go 并发实战:用 errgroup 控制一组 goroutine 的退出
启动多个 worker 时,一个失败要不要让其它全部退出?context 取消如何传播?本文结合一个抓取服务的重构,介绍 errgroup.WithContext 的用法和常见的 goroutine 泄漏坑。
阅读全文 »后端开发 · Linux 运维 · 网络协议 · 数据库 · 容器与自动化,偶尔写点折腾笔记。
启动多个 worker 时,一个失败要不要让其它全部退出?context 取消如何传播?本文结合一个抓取服务的重构,介绍 errgroup.WithContext 的用法和常见的 goroutine 泄漏坑。
阅读全文 »调用第三方 API 不设超时,一个慢下游能拖垮整个服务的 goroutine 池。用 context.WithTimeout 贯穿 HTTP/DB/RPC 调用链,超时自动取消并释放资源,是高可用服务的基本功。