Web 22/09/2026 5 phút

Nén nội dung HTTP: gzip vs brotli vs zstd — đo tỉ lệ nén thật

Một trang HTML 224 KB có thể xuống còn 16 KB trên đường truyền mà người dùng không hề hay biết. Cơ chế: client mời (Accept-Encoding), server chọn (Content-Encoding), nén trong suốt hai đầu. Bài này đo thật tỉ lệ nén của gzip, brotli, zstd trên một trang HTML thật, và xem nginx thương lượng nén qua HTTP.

Web 22/09/2026 5 phút

Nginx reverse proxy: một cửa trước nhiều backend — đo round-robin và X-Forwarded

Reverse proxy đứng trước các server, thay mặt chúng trả lời client: cân bằng tải, kết thúc TLS, gom nhiều service sau một tên miền. Bài này dựng nginx proxy tới 3 backend, đo round-robin chia đúng 10/10/10 trên 30 request, và giải thích vì sao thiếu header X-Forwarded-* làm backend thấy sai IP và giao thức của client.

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

Benchmark chính xác với benchstat trong Go: một con số đơn lẻ dễ lừa

Chạy go test -bench một lần cho một con số, nhưng máy đầy nhiễu nên nó dao động mỗi lần. So hai phiên bản bằng một con số mỗi bên có thể kết luận sai. benchstat chạy nhiều lần, tính trung bình ± độ lệch, và so hai bản bằng p-value. Đo thật: cải tiến -94.84% (p=0.000) là thật, hàm không đổi báo p=1.000.

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

SSA trong compiler Go: xem tận mắt 50 pha biến hàm của bạn thành 3 lệnh

SSA là biểu diễn trung gian nơi mọi tối ưu compiler diễn ra. Đo thật với GOSSAFUNC: một hàm 2 phép cộng, 1 phép nhân và nhánh chết đi qua 50 pha (regalloc và lower đắt nhất) rồi co xuống còn 3 lệnh — CSE gộp biểu thức trùng, DCE xoá nhánh chết, strength reduction đổi nhân thành dịch bit. Go 1.23.

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

Chống stampede: singleflight và khoá Redis, đo thật 500 lượt chạm database rút xuống còn 1

Phần trước đo được 500 request cùng miss một key kéo theo đúng 500 truy vấn database và 1128,4ms cho request xấu nhất. Bài này chặn nó bằng hai cách và đo lại cùng kịch bản: singleflight gom lời gọi trùng trong một tiến trình — còn 1 truy vấn, trễ xấu nhất 7,2ms (nhanh hơn 157 lần); khoá Redis SET NX cũng còn 1 truy vấn nhưng chậm hơn chút (13,9ms). Rồi chạy 4 instance để lộ ra khác biệt thật sự: singleflight cho 4 truy vấn, khoá Redis vẫn 1.