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

HTTP/2 multiplexing trong Go: nhiều request song song trên một kết nối, xóa head-of-line blocking

HTTP/2 chia mỗi request thành một stream độc lập chạy song song trên cùng một kết nối TCP, xóa head-of-line blocking của HTTP/1.1. Đo thật trong Go 1.23: 20 request trên một kết nối xong 54ms với HTTP/2 so với 1,136 giây với HTTP/1.1 — nhanh hơn 21 lần.

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

WebSocket server thật trong Go: nâng cấp từ HTTP, giao tiếp hai chiều bền vững

WebSocket nâng cấp một kết nối HTTP thành kênh hai chiều mở liên tục cho chat, thông báo đẩy, dữ liệu real-time. Đo thật trong Go 1.23: bắt tay 101 Switching Protocols, gửi/nhận trên một kết nối bền, và một message qua WebSocket nhanh hơn HTTP polling khoảng 23 lần.

DevOps 22/09/2026 5 phút

Network namespace: vì sao mỗi container có địa chỉ IP của riêng nó

Container có eth0, IP, bảng định tuyến và cổng của riêng nó — hai container đều mở cổng 80 mà không đụng nhau. Bài này chạy thật: container thấy eth0 172.17.0.5, network namespace mới chỉ có loopback (bị cắt mạng), và tự dựng cặp veth nối hai namespace với ping 0% loss — chính là cách Docker nối container vào bridge của host.

DevOps 22/09/2026 5 phút

Container networking: gọi nhau bằng tên, và vì sao mạng bridge mặc định không có DNS

Trong một mạng bridge tuỳ chỉnh, container gọi nhau bằng tên (Docker có DNS nội bộ); nhưng mạng bridge MẶC ĐỊNH thì không — gọi bằng tên báo bad address. Bài này chạy thật: container gọi nhau qua tên trên mạng riêng, lỗi trên mạng mặc định, và -p publish cổng để host vào được container (curl trả 200).

DevOps 31/08/2026 8 phút

Dựng namespace riêng rồi tưởng đã có tường lửa — nhưng pod ở 'dev' vẫn gọi thẳng được cơ sở dữ liệu ở 'prod', chỉ cần đoán đúng tên

Namespace chia không gian TÊN, không chia không gian MẠNG — mặc định mọi pod gọi được mọi pod xuyên namespace. Đo cách dựng ranh giới thật bằng NetworkPolicy: chặn hết rồi mở dần theo nhãn, và cái bẫy VÀ-so-với-HOẶC chỉ khác một dấu gạch đầu dòng nhưng nới rộng quyền một cách im lặng. NetworkPolicy thực thi ở tầng CNI nên chặn cả khi gọi thẳng podIP, nhưng chính CNI phải hỗ trợ — plugin không hỗ trợ thì chính sách của bạn chỉ là văn bản, không lỗi, không cảnh báo.

DevOps 31/08/2026 8 phút

Cùng một máy, cùng một phép thử: kindnet đạt 87,4 Gbit/s giữa hai node, Calico chỉ 45,6 — và cả 48% chênh lệch nằm gọn trong một dòng bảng định tuyến

CNI quyết định pod nhận IP thế nào và gói tin đi giữa các node ra sao. Dựng hai cụm giống hệt, đổi mỗi plugin mạng: kindnet định tuyến thuần đạt 87,4 Gbit/s liên node, Calico với đường hầm IPIP chỉ 45,6 — chậm 48%, vì mỗi gói bị bọc thêm một lớp IP header (dev tunl0). Qua Service chỉ tốn thêm 1,7%: cái đắt là đóng gói chứ không phải chuyển địa chỉ. Con số tuyệt đối cao bất thường vì đo trong một máy với MTU 65535, nhưng TỈ LỆ giữ nguyên vì nguyên nhân là phí trên mỗi gói, không phải tốc độ dây.