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

Serialization và tiến hoá schema trong Kafka: vì sao Avro nhỏ hơn JSON 2,4 lần và không làm vỡ consumer

Kafka chỉ chuyển byte — cách bạn mã hoá message quyết định băng thông, dung lượng và cả khả năng nâng cấp hệ thống. Bài này đo thật trong go-lab: cùng một bản ghi, JSON 88 byte, gob 115 byte, Avro chỉ 36 byte. Rồi chứng minh schema evolution bằng Avro resolution: thêm field có default đọc được dữ liệu cũ (channel lấy web), nhưng đổi kiểu double sang string bị từ chối ngay. Hiểu vì sao Schema Registry là bắt buộc khi nhiều team dùng chung topic.

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

Tiến hoá schema Protobuf: vì sao field number là bất biến, và unknown field cứu dữ liệu qua tay service cũ

Protobuf nhận diện field bằng SỐ chứ không bằng tên — hiểu điều này là hiểu toàn bộ quy tắc tiến hoá schema. Bài này đo thật trong go-lab ba kịch bản: V1 ghi, V2 (thêm field) đọc được, field mới lấy default; V2 ghi có email, service V1 cũ đọc không thấy nhưng GIỮ LẠI email qua round-trip nhờ unknown field; và đổi field number khiến amount biến mất hoàn toàn. Rút ra luật quan trọng nhất của Protobuf.