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

Khoá phân tán: đo thật SET NX kèm TTL — tiến trình treo quá TTL làm mất 100/100 cập nhật im lặng, DEL trần xoá khoá của người khác 100/100 lần, và fencing token chặn đủ 100 bản ghi cũ

Khoá bằng Redis SET NX PX với TTL 300 ms, vùng găng là đọc-cộng-ghi số dư trong PostgreSQL. Tiến trình A lấy khoá rồi treo 500 ms, khoá hết hạn, B lấy khoá và ghi; A tỉnh dậy ghi đè: mất 100/100 cập nhật của B, không lỗi, không log. Thêm fencing token tăng dần cấp cùng lúc với khoá và kiểm ở tầng lưu trữ: 100 bản ghi cũ bị từ chối, A biết mà làm lại, số dư đúng 200. Mở khoá bằng DEL trần: A xoá khoá của B, C vào khi B đang làm, 100/100 vòng; so chủ trước khi xoá: 0. Redlock 3 node: khi một Redis chết, một Redis đơn 0/200, Redlock 200/200 với giá một timeout mỗi lần.