Lập trình Go 22/09/2026 11 phút

singleflight trong Go: gộp 100 lời gọi trùng thành 1 để chống thundering herd

Khi cache miss một key nóng, 100 request cùng lao vào gọi DB. singleflight gộp chúng thành một lời gọi thật, 99 kia chờ và dùng chung kết quả. Đo thật: 100 goroutine cùng key khiến hàm đắt chạy đúng 1 lần thay vì 100. Cơ chế, DoChan, và cạm bẫy lỗi lan. Go 1.23.

Lập trình Go 22/09/2026 11 phút

Worker pool và backpressure trong Go: vì sao 1 goroutine mỗi job là công thức sập

Số worker cố định + hàng đợi giới hạn giúp hệ thống chậm lại khi quá tải thay vì sập. Đo thật: pool giữ goroutine ở 6 trong khi cách ngây thơ 1-goroutine-mỗi-job bùng lên 102, và hàng đợi đầy chặn producer 89 lần (backpressure). Cơ chế và vì sao quan trọng. Go 1.23.

Lập trình Go 22/09/2026 10 phút

Livelock và starvation trong Go: khi goroutine bận rộn mà không tiến, hoặc bị bỏ đói

Deadlock làm mọi goroutine đứng; livelock làm chúng bận rộn mà không tiến; starvation bỏ đói số ít. Đo thật: mẫu nhường nhau hiếm khi livelock trên runtime Go (1,03x lãng phí), nhưng starvation lộ 12x mất cân bằng dù Go mutex chống đói hoàn toàn. Cách phát hiện và tránh. Go 1.23.