2010-05-19 36 views
26

Trên nhóm của tôi tại nơi làm việc, chúng tôi sử dụng công nghệ IBM MQ rất nhiều cho giao tiếp ứng dụng chéo. Tôi đã nhìn thấy gần đây trên Hacker News và những nơi khác về các công nghệ MQ khác như RabbitMQ. Tôi có một sự hiểu biết cơ bản về những gì nó là (một khu vực thường được kiểm tra để đặt và nhận được tin nhắn), nhưng những gì tôi muốn biết chính xác những gì là nó tốt? Làm thế nào tôi biết được nơi tôi muốn sử dụng nó và khi nào? Tại sao không chỉ gắn bó với các hình thức thô sơ hơn của nhắn tin interprocess?MQ là gì và tại sao tôi muốn sử dụng nó?

Trả lời

40

Tất cả các giải thích cho đến nay đều chính xác và quan trọng - nhưng có thể thiếu một cái gì đó: một trong những lợi ích chính của hàng đợi thông điệp: khả năng phục hồi.

Hãy tưởng tượng điều này: bạn cần liên lạc với hai hoặc ba hệ thống khác. Một cách tiếp cận phổ biến những ngày này sẽ được các dịch vụ web mà là tốt nếu bạn cần một câu trả lời ngay lập tức.

Tuy nhiên: dịch vụ web có thể ngừng hoạt động và không khả dụng - bạn sẽ làm gì sau đó?Đưa tin nhắn của bạn vào hàng đợi tin nhắn (có một thành phần trên máy/máy chủ của bạn) thường sẽ hoạt động trong trường hợp này - tin nhắn của bạn không được phân phối và do đó được xử lý ngay bây giờ - nhưng sau này, khi khác mặt của dịch vụ trở lại trực tuyến.

Vì vậy, trong nhiều trường hợp, việc sử dụng hàng đợi tin nhắn để kết nối các hệ thống khác nhau là một cách tin cậy và mạnh mẽ hơn khi gửi thư qua lại. Nó không hoạt động tốt cho mọi thứ (nếu bạn muốn biết giá cổ phiếu hiện tại cho MSFT, đưa yêu cầu đó vào hàng đợi có thể không phải là ý tưởng hay nhất) - nhưng trong nhiều trường hợp, như đặt hàng vào hàng đợi thông điệp của nhà cung cấp, nó hoạt động thực sự tốt và có thể giúp giảm bớt một số vấn đề về độ tin cậy với các công nghệ khác.

+0

Trường hợp sử dụng rất thú vị, rất có ý nghĩa đối với tôi. Cảm ơn! – daveslab

+1

Vì vậy, bạn sẽ làm gì nếu máy chủ MQ bị hỏng? Nó không còn khả năng phục hồi hơn một dịch vụ web, phải không? –

+1

@RobHolmes: thông thường, bạn vẫn có thể * enqueue * nó vào hàng đợi địa phương của bạn - nó sẽ được truyền đến máy chủ xếp hàng khi nó sao lưu - và ** có **, ** ** IS linh hoạt hơn web thông thường dịch vụ ..... –

2

MQ đơn giản là viết tắt của Hàng đợi tin nhắn.

Bạn sẽ sử dụng thông báo khi bạn cần gửi tin nhắn liên ứng/cross-platform/cross-application một cách đáng tin cậy mà không phụ thuộc vào thời gian.

Hàng đợi tin nhắn nhận được tin nhắn, đặt nó vào hàng đợi thích hợp và đợi ứng dụng truy xuất tin nhắn khi sẵn sàng.

6

Hệ thống xếp hàng tin nhắn được cho là cung cấp cho bạn một số phần thưởng. Trong số những cái quan trọng nhất là quan sát và hành vi giao dịch.

Thiết kế giao dịch rất quan trọng nếu bạn muốn miễn nhiễm với các lỗi, chẳng hạn như mất điện. Hãy tưởng tượng rằng bạn muốn thông báo cho một hệ thống rút tiền ATM của ngân hàng, và nó phải được thực hiện chính xác một lần theo yêu cầu, bất kể máy chủ nào bị lỗi tạm thời ở giữa. Các hệ thống MQ sẽ cho phép bạn điều phối các giao dịch trên nhiều cơ sở dữ liệu, MQ và các hệ thống khác.

Không cần phải nói, các hệ thống như vậy rất chậm so với các đường ống có tên, TCP hoặc các công cụ phi giao dịch khác. Nếu hiệu suất cao là bắt buộc, bạn sẽ không cho phép tin nhắn của bạn được ghi vào đĩa. Thay vào đó, nó sẽ làm phức tạp thiết kế của bạn - để đạt được giao tiếp đáng tin cậy và nhanh chóng đáng kinh ngạc, đẩy nhà thiết kế vào các thủ thuật thực sự không tầm thường.

Hệ thống MQ thông thường cho phép người dùng xem nội dung hàng đợi, viết plugin, xóa hàng đợi, v.v.

+0

Câu trả lời hay, cảm ơn bạn đã nhập! – daveslab

11

MQ là viết tắt của hàng đợi tin nhắn.

Đây là lớp trừu tượng cho phép nhiều quy trình (có khả năng trên các máy khác nhau) giao tiếp thông qua các mô hình khác nhau (ví dụ: điểm-điểm, xuất bản đăng ký, v.v.). Tùy thuộc vào việc triển khai, nó có thể được cấu hình cho những thứ như độ tin cậy được đảm bảo, báo cáo lỗi, bảo mật, khám phá, hiệu suất, v.v.

Bạn có thể làm tất cả điều này bằng tay, nhưng rất khó.

Ví dụ: Giả sử bạn muốn xử lý để giao tiếp, nhưng một trong số chúng có thể chết ở giữa và sau đó được kết nối lại. Làm thế nào bạn sẽ đảm bảo rằng các thông điệp tạm thời đã không bị mất? Các giải pháp MQ có thể làm điều đó cho bạn.

0

Hàng đợi tin nhắn tạo cơ sở cho nhiều mẫu được mô tả trong sách 'Mẫu tích hợp doanh nghiệp' cổ điển và website.

0

tham chiếu: dịch vụ web có thể ngừng hoạt động và không khả dụng - bạn sẽ làm gì sau đó? Là một phần mở rộng cho điều đó; những gì nếu mạng nội bộ của bạn và máy tính địa phương của bạn là xuống là tốt? Trong khi bạn đợi hệ thống phục hồi các hệ thống được triển khai phụ thuộc ở nơi khác, chờ đợi dữ liệu đó cần xem luồng dữ liệu thay thế. Nếu không, điều đó có thể không đủ đáp ứng 'thời gian thực' cho ngày hôm nay và rất sớm trong các yêu cầu về Internet of Things (IOT) trong tương lai.

nếu bạn muốn lưu trữ song song đúng, không dễ bay hơi của các luồng FIFO khác nhau (ít nhất là tại một số điểm dọc theo chuỗi tín hiệu) sử dụng bộ nhớ FPGA và FRAM. FRAM chạy ở tốc độ đồng hồ và các thiết bị FPGA có thể được lập trình lại khi đang thêm và lấy đi tuy nhiên nhiều luồng dữ liệu song song độc lập là cần thiết (trong các ràng buộc được thiết lập của khóa học).

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