Các vấn đề liên quan tới queue và multiple queue

Tram Ho


XIn chào các bạn, hôm nay mình sẽ gửi tới các bạn 1 chủ đê mới trong framwork Laravel. Nhưng nội dung hôm nay sẽ khác 1 chút, lâu nay các bài viết chia sẽ của mình thường là code demo 1 chức năng gì đó hay ho để các bạn tham khảo và làm theo.
Nhưng hôm nay thay vì chúng ta code, hãy cùng nhau chia sẽ về bản chất của vấn đề đó, hay chức năng nó thực sự vận hành như thế nào nhé.
Và bài viết hôm nay sẽ chém gió về ” Các vấn đề liên quan tới queue và multiple queue “, nào cùng bắt đầu tìm hiểu nhé !

Giải thích về queue

Queue là thao tác hàng đợi, sử dụng để xử lý trên threads khác nhau, có thể xử lý nhiều queue cùng lúc cùng thời điểm phục thuộc vào cấu hình server cho phép số lượng threads chạy đồng thời. Mỗi 1 queue được hoạt động trên 1 threads

  • Khi nào cần sử dụng ?
    Khi 1 công việc ko cần thiết phải xử lý ngay lập tức có thể sử dụng để xử lý sau
    ví dụ send email, …(1 ví dụ điển hình trong việc sự dụng queue).

Queue hoạt động như thế nào

Queue thường hoạt động theo cơ chế stack, khi có công việc muốn xử lý trên queue tiến trình xử lý sẽ đẩy job vào 1 nơi chứa, có thể là redis, sqllite, sqs, database,…
Service queue sẽ lắng nghe các sự kiện và luôn thao tác vào nơi chứa, khi có data trong đó các queue sẽ pop data ra và xử lý logic

Làm thế nào để khởi động queue

Queue là 1 service riêng biệt có thể viết bằng nhiều ngôn ngữ khác nhau. Nhiệm vụ chính của queue là đọc database và xử lý data trong đó, các lấy data theo cơ chế pop.
Các queue sẽ luôn chạy liên tục và khi lấy được data trong nơi chứa sẽ tạo ra worker xử lý data đó. Thường sẽ sử dụng là supervisord

Multiple queue là gì?

xử lý nhiều luồng queue khác nhau trên 1 server

Khi có nhiều công việc khác nhau muốn xử lý đồng thời, bản chất của việc này là tạo ra nhiều đường ống chứa nhiều job.
Mỗi một service queue sẽ đọc vào từng đường ống riêng trong mỗi đường ống lại có thể xử lý đồng thời nhiều queue.
Ex: Send msg cho 100 người nhóm A và push notify cho 100 người nhóm B, đây là 2 công việc khác nhau ko liên quan tới nhau nên có thể sử dụng các luồng queue khác nhau

  • Mục đích của việc tạo ra nhiều đường ống để ko làm ảnh hưởng công việc send msg hay push notify lẫn lộn lên nhau.

Các Vấn đề liên quan tới queue

  • Nhiều người nhầm lẫn về queue và ko phân biệt được sử dụng queue trên process khác nhau
  • Trên process các thông tin đối tượng trong code sẽ được tạo ra như 1 instance mới hoàn toàn
  • Nguy hiểm trong khi sử dụng transaction
  • Setting retry khi queue fails
  • Server không đủ mạnh config queue chưa hợp lý dẫn tới quá tải server

Tổng Kết

Vậy là mình vừa chém gió qua về các vấn đề của queue và multiple queue, mong là với các lý thuyết này có thể giúp các bạn tự tin hơn trong màn chém gió lúc đi phỏng vấn nhé ?

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo