Shopify, update 10000 customer mà client không bị 504
Mình có case như sau:
Trong shopify, mình update tags của customer và query customer bằng graphql. Do số lượng lớn > 10000 customer, mặc dù server là nodejs(koa) vẫn xóa đang trong quá trình update nhưng bên client do call api lâu quá không thấy response trả về => lỗi 504.
Mọi người có giải pháp nào cho trường hợp này không, có thể sử dụng được 1 api trực tiếp và không call api nhiều bên client
Mình cảm ơn nhiều
2 CÂU TRẢ LỜI
Xoá lâu quá thì cho vào queue rồi chạy batch thôi. Delete Status thì update vào 1 table Update_Status. Nếu muốn người dùng biết khi nào delete xong thì khi chạy batch xong lưu status vào db và gửi 1 cái queue message trigger thông báo cho user. (pp này hay được gọi là implement queue system)
Nếu như vẫn thích 1 phát API là ok luôn cưỡng cầu thì cũng có thể được:
- Bằng cách nào đó Cache hay Optimize GraphQL queries để mọi thứ nhanh lên tránh Timeout.
- Trong phần Error handling thì thực hiện retries.... ma giáo các kiểu cũng được.
- .... có ae nào hay cho tiếp ý kiến
Muốn nhanh thì dùng temp db, kiểu memcache chẳng hạn, nó sẽ giống như việc bạn cache cả table
sync với rds thì dùng queue.
khi delete trong db thì mình nghĩ nên sử dụng where in [paramary], và chunk độ dài batch hợp lý, 1k, transaction của batch thì nên để independent là read
giữa những lần run batch nên có sleep.