Posts for: #Go

Gom message từ Kafka topic bằng debounced aggregator

Ở Hasaki, khi kho không đủ hàng để đáp ứng một đơn hàng, hệ thống tạo yêu cầu điều chuyển nội bộ để lấy hàng từ địa điểm khác về. Luồng hiện tại publish một Kafka message cho mỗi đơn hàng, và mỗi message lại kích hoạt một yêu cầu điều chuyển riêng.

Vào giờ cao điểm, một kho có thể tạo ra hàng trăm message chỉ trong vài phút. Mỗi message tạo một yêu cầu điều chuyển nhỏ. Đội kho phải xử lý hàng chục yêu cầu lắt nhắt cho cùng một điểm đến, trong khi chỉ cần gom thành một batch là đủ.

Đọc tiếp →

Distributed lock với Redis: một instance duy nhất

Lưu ý: Ví dụ code trong bài dùng Go, nhưng các khái niệm cũng áp dụng được với những ngôn ngữ khác.

Tại sao cần lock?

Thử tưởng tượng hai người cùng rút tiền từ một tài khoản ngân hàng. Nếu không đồng bộ đúng cách, cả hai có thể đọc cùng một số dư, tự trừ khoản tiền mình rút rồi ghi kết quả lại. Khi đó xảy ra lost update: một lần rút tiền coi như biến mất khỏi số dư.

Đọc tiếp →