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
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.
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.
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.
Câu trả lời hay, cảm ơn bạn đã nhập! – daveslab
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.
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.
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).
- 1. AF_INET là gì và tại sao tôi cần nó?
- 2. JAXB là gì và tại sao tôi nên sử dụng nó?
- 3. Yếu tố el/là gì? Làm thế nào để tôi sử dụng nó? Và tại sao?
- 4. PDO là gì và tại sao tôi nên sử dụng nó?
- 5. Giao thức TDS phiên bản 8.0 là gì và tại sao tôi nên sử dụng nó?
- 6. Asm ("pause") làm gì và tại sao sử dụng nó
- 7. Cách chính xác để sử dụng v8 :: Locker là gì và tại sao tôi phải sử dụng nó?
- 8. Tại sao tôi muốn sử dụng Giao diện?
- 9. GLEW làm gì và tại sao tôi cần nó?
- 10. Repo là gì và tại sao Google sử dụng?
- 11. .inc là gì và tại sao sử dụng?
- 12. Đoàn đại biểu là gì? Khi nào tôi muốn sử dụng nó?
- 13. EntityManager.flush làm gì và tại sao tôi cần sử dụng nó?
- 14. ReverseHTTP là gì và tại sao nó lại hữu ích?
- 15. "Toán học chuỗi" là gì và tại sao nó xấu?
- 16. Phương pháp Javascript CollectGarbage() là gì? Khi nào và tại sao nó nên được sử dụng?
- 17. AudioFlinger là gì và tại sao nó thất bại TONE_PROP_ACK?
- 18. Tại sao tôi muốn làm git rebase?
- 19. System.ServiceModel.Diagnostics.CallbackException là gì và tại sao tôi không thể xử lý nó?
- 20. Tại sao console.log được sử dụng? Nó làm gì?
- 21. Trong trình đổ bóng đỉnh OpenGL, w là gì và tại sao tôi chia nó?
- 22. Sự khác biệt giữa JApplet và Applet là gì và tôi nên sử dụng nó?
- 23. Truy vấn SQL động là gì và khi nào tôi muốn sử dụng truy vấn SQL?
- 24. Tại sao ứng dụng của tôi sử dụng nhiều bộ nhớ hơn sau khi tôi nén nó với UPX và tôi có thể làm gì với nó?
- 25. uint_fast32_t là gì và tại sao nó nên được sử dụng thay cho int và uint32_t thông thường?
- 26. Tại sao không nên sử dụng attach() trong R, và tôi nên sử dụng cái gì?
- 27. cổng zookeeper và cách sử dụng của nó là gì?
- 28. Pyximport là gì và tôi nên sử dụng nó như thế nào?
- 29. Tại sao tôi muốn một Widget giao diện người dùng jQuery kế thừa từ chính nó?
- 30. Tại sao XDocument của tôi lưu bản khai báo khi tôi không muốn nó?
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
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? –
@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ụ ..... –