Asked Mar 22nd, 2023 10:19 a.m. 180 0 2
  • 180 0 2
0

Shopify, update 10000 customer mà client không bị 504

Share
  • 180 0 2

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 ANSWERS


Answered Mar 22nd, 2023 12:08 p.m.
0

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:

  1. Bằng cách nào đó Cache hay Optimize GraphQL queries để mọi thứ nhanh lên tránh Timeout.
  2. Trong phần Error handling thì thực hiện retries.... ma giáo các kiểu cũng được.
  3. .... có ae nào hay cho tiếp ý kiến 😄
Share
Answered Mar 22nd, 2023 12:59 p.m.
0

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.

Share
Viblo
Let's register a Viblo Account to get more interesting posts.