2013-04-15 28 views
5

Tôi đã nghiên cứu Hệ thống Hàng đợi Tin nhắn trong lớp học của mình nhưng tôi vẫn không hiểu được cách Hệ thống Hàng đợi Tin nhắn hoạt động trong các tình huống thời gian thực như thế nào? Có hướng dẫn nào có thể giúp tôi có được bức tranh hoàn chỉnh không? Ai đó có thể giải thích cho tôi về cách các hệ thống này hoạt động?Hệ thống hàng đợi thông báo hoạt động như thế nào?

+1

Bài viết [wikipedia] (http://en.wikipedia.org/wiki/Message_queue) là một nơi tốt để bắt đầu. –

Trả lời

10

Ví dụ: Chuỗi hoặc quy trình của tôi có thể gửi thư đến hàng đợi thư của bạn và gửi thư, mã của tôi tiếp tục thực hiện việc khác. Mã của bạn, khi nó được xung quanh nó, đọc tin nhắn tiếp theo từ hàng đợi tin nhắn, và sau đó quyết định phải làm gì về tin nhắn đó. Hàng đợi tin nhắn tránh cần phải có một phần quan trọng hoặc mutex được chia sẻ giữa hai chủ đề, hoặc các quá trình. Lớp hàng đợi thông điệp cơ bản tự chăm sóc đảm bảo rằng các thông điệp nhận được vào hàng đợi mà không có điều kiện chủng tộc ảnh hưởng đến tính toàn vẹn của hàng đợi.

Hàng đợi thư có thể được sử dụng cho cả tin nhắn một chiều và hai chiều, không đồng bộ. Đối với một cách sử dụng, thread của tôi có thể sử dụng nó để giữ cho thread của bạn thẩm định các sự kiện quan trọng trong thread của tôi, mà không có sự thừa nhận trở lại từ thread của bạn. Để sử dụng hai chiều, sau khi chuỗi của tôi gửi một thông điệp đến chuỗi của bạn, chuỗi của bạn có thể cần gửi dữ liệu về chủ đề của tôi qua hàng đợi tin nhắn của tôi.

Lớp hàng đợi thư sử dụng lược đồ đồng bộ hóa cấp thấp hơn để đảm bảo rằng không có hai người viết nào vào hàng đợi có thể viết cùng một lúc. Nó đảm bảo rằng tất cả các ghi vào hàng đợi là nguyên tử. Nó cũng đảm bảo rằng một người đọc hàng đợi không thể đọc một tin nhắn được viết một phần từ hàng đợi.

Hầu hết các API hàng đợi thư cũng hỗ trợ đọc thư từ hàng đợi dựa trên bộ lọc mà bạn chỉ định. Ví dụ: giả sử bạn xem xét các thư từ một chuỗi thời gian quan trọng để quan trọng hơn là các thư khác. Bạn có thể mỗi khi bạn kiểm tra hàng đợi của mình cho thư, trước tiên hãy kiểm tra thư từ chuỗi chủ đề quan trọng và trước tiên hãy dịch vụ những thư đó. Sau đó, chuỗi của bạn sẽ tiếp tục xử lý phần còn lại của thư như bình thường, miễn là không tìm thấy thêm thư nào từ chuỗi chủ đề.

A C tutorial of the UNIX message queues

2

Đó là một chủ đề phức tạp nhưng để đặt nó chỉ đơn giản là:

nhắn Queues là một trong những tốt nhất cách khác nhau, nếu không phải là tốt nhất, để thực hiện hệ thống phân phối.

Bây giờ bạn có thể hỏi, hệ thống phân phối là gì? Nó là một hệ thống tích hợp mở rộng nhiều máy, khách hàng hoặc các nút thực hiện nhiệm vụ của họ song song theo một cách không gây rối. Một hệ thống phân phối phải đủ mạnh để tiếp tục hoạt động khi một hoặc nhiều nút bị lỗi, ngừng hoạt động, tụt hậu hoặc bị gỡ xuống để bảo trì.

Sau đó, bạn có thể hỏi, hàng đợi tin nhắn là gì? Nó là một phần mềm trung gian hướng thông điệp cho phép phát triển một hệ thống phân tán bằng cách sử dụng thông điệp không đồng bộ để liên lạc giữa các nút thông qua mạng.

Và cuối cùng bạn có thể hỏi, điều gì tốt cho tất cả? Điều này là tốt cho việc triển khai các ứng dụng có nhiều bộ phận chuyển động được gọi là các nút cần theo dõi thời gian thực và khả năng phản ứng theo thời gian thực.Để tóm tắt chúng cung cấp: song song (các nút có thể thực sự chạy song song), tích hợp chặt chẽ (tất cả các nút nhìn thấy cùng một thông điệp theo cùng thứ tự), tách (các nút có thể phát triển độc lập), failover/redundancy (khi nút bị lỗi, một nút khác có thể chạy và xây dựng trạng thái để tiếp quản ngay lập tức), khả năng mở rộng/cân bằng tải (chỉ cần thêm các nút), độ đàn hồi (các nút có thể tụt hậu trong các đỉnh hoạt động mà không ảnh hưởng đến toàn bộ hệ thống) và khả năng phục hồi (các nút có thể thất bại/ngừng hoạt động mà không lấy toàn bộ hệ thống xuống).

Kiểm tra this article thảo luận chi tiết cơ sở hạ tầng hàng đợi thư.

Các vấn đề liên quan