Laravel queue vs XGallery pool

Tất nhiên là win thuộc về Laravel rồi. Tuy nhiên bài này mình đưa ra 1 cách nhìn khác, khi mà mình chưa biết về Laravel.

Trước đây mình build riêng 1 custom pool cho XGallery để giải quyết 1 số bài toán

  • Xử lý được nhiều việc song song ( multi threads )
  • Giải quyết n việc cho đến khi xong

Về cơ bản, mình không làm 1 table jobs tập trung như cách Laravel làm. Lấy ví dụ cụ thể là Flickr

  • Mình có 1 table chứa các flickr photos . Và có 1 field để biết rằng record đó chưa được giải quyết. Như lấy sizes, download etc …
  • Sau đó có nhiều con cron. Con thì giải quyết việc lấy sizes, con tiếp theo thì download. Mỗi con sẽ queries để lấy được data theo yêu cầu. Và dĩ nhiên ở đây sẽ phát sinh vấn đề QUERIES và LOCK ! Thử hình dung, nếu tại thời điểm đó có 2 con crons chạy lấy sizes … Nếu con trước không lock table, records lại thì con sau sẽ step on foot ! Bài toán lúc này lại bị phức tạp ở đây.
  • Cũng như khi queries kiểu đó server cũng mostly under flooding …

Tuy nhiên mặt “lợi” của nó là buộc mình phải optimize server nhiều hơn, optimize database để chịu tải cao.

Và 1 vài thứ thú vị

  • Giải quyết bài toán bao nhiêu cron, tần suất bao nhiêu để tận dụng full resources server ( auto not manual, ofc )

Tuy nhiên sau khi biết Laravel queues & Supervisor thì mọi thứ … dễ dàng hơn nhiều 😀 Thậm chí giờ cái gì mình cũng tống hết vô job :v .

Anyways … Câu chuyện là … mọi bài toán đều có cách giải quyết cho dù thiếu solutions chính thống. Vấn đề là cách bạn tiếp nhận giải quyết em nó thế nào.

  • Cách của mình là mỗi con cron xử lý 1 việc. Và tính toán sao con cron trước vừa xong là con sau phải được trigger tiếp, không chồng chéo, …
  • Cách của Laravel là supervisor dùng worker xử lý đồng loạt nhiều việc trong queue. Việc chồng chéo, step on foot được giải quyết. v..v..

Phải chăng ở một góc độ nào đó developer ngày nay có xu hướng lạm dụng Framework để giải quyết các bài toán “cho xong” . Nhưng không thật sự nắm cốt lõi, bản chất nó ???

Tuy nhiên nếu xét cho đúng Laravel queue cũng có 1 vài bất cập. Bạn nghĩ nó là gì ?

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Blog at WordPress.com.

Up ↑

%d bloggers like this: