E-commerce

  • Làm sao tránh tạo trùng Order khi flash sale trong hệ thống e-commerce?
    Published on
    Trong bài viết này, mình sẽ cùng anh em tìm hiểu bài toán tạo trùng Order (duplicate order) trong một hệ thống e-commerce có rất nhiều người dùng truy cập đồng thời, đặc biệt là lúc flash sale. Mình đi từ nguyên nhân (user bấm đúp, refresh, client retry, message redelivery cho tới bot và replay attack), hậu quả khi đơn bị trùng, rồi lần lượt qua 6 cách xử lý từ cơ bản đến nâng cao - disable nút bấm, check-then-insert, Idempotency-Key với UNIQUE constraint, bảng idempotency record, Redis SET NX và checkout token dùng một lần - kèm code Java & Spring Boot cho từng cách và một bảng so sánh để anh em chọn đúng giải pháp.
  • Làm sao xử lý Inventory Reservation khi flash sale mà không bị oversell?
    Published on
    Trong bài viết này, mình sẽ cùng anh em tìm hiểu bài toán Inventory Reservation (giữ chỗ tồn kho) trong một hệ thống e-commerce có lượng truy cập đồng thời rất lớn, đặc biệt là lúc flash sale. Mình đi từ cách viết cơ bản nhất (đọc stock rồi trừ) và chỉ ra vì sao nó bị oversell, rồi lần lượt qua atomic UPDATE, pessimistic lock, optimistic lock, Redis Lua script và reservation có TTL, kèm code Java & Spring Boot cho từng cách và một bảng so sánh để anh em chọn đúng giải pháp cho hệ thống của mình.