Helpex - Trao đổi & giúp đỡ Đăng nhập

Giao tiếp không đồng bộ với hàng đợi và dịch vụ vi mô: Một ...

Nguyễn Minh Thư
· 17:00 26/06/2019
00:54:00 16/06/2021

Trong bài viết này, chúng tôi sẽ giới thiệu cho các bạn về thông điệp không đồng bộ là gì và thảo luận tại sao bạn nên xem xét nó cho các kiến ​​trúc microservices của mình.

Những gì bạn sẽ học

  • Giao tiếp không đồng bộ là gì.
  • Tại sao chúng ta cần giao tiếp không đồng bộ.
  • Cách thực hiện Giao tiếp không đồng bộ.
  • Tại sao bạn nên cân nhắc sử dụng Giao tiếp không đồng bộ cho các dịch vụ nhỏ của mình.

Các phương pháp hay nhất với Cloud và Microservices

Đây là bài viết cuối cùng trong loạt sáu bài viết về các phương pháp hay nhất với dịch vụ đám mây và microservices. Năm phần đầu tiên có thể được tìm thấy ở đây:

  1. Ứng dụng 12 yếu tố: Các phương pháp hay nhất trong ứng dụng gốc trên đám mây và dịch vụ vi mô
  2. Kiến trúc Microservices: Phương pháp tiếp cận theo hướng sự kiện
  3. Các phương pháp hay nhất về Microservices: Bạn có xây dựng được đường cắt dọc không? 
  4. Các phương pháp hay nhất về kiến ​​trúc nghệ thuật vi mô: Hàng đợi nhắn tin
  5. Các phương pháp hay nhất về Microservices: Xây dựng kiểu mẫu

Giao tiếp đồng bộ là gì?

Hãy xem xét ví dụ sau về kiến ​​trúc microservices:

Giao tiếp không đồng bộ với hàng đợi và dịch vụ vi mô: Một ...

Bạn có Microservice1 gọi Microservice2, lần lượt gọi Microservice3. Giả sử rằng Microservice3 cung cấp một chức năng dịch vụ web đơn giản. Vì vậy, Microservice1 có thể gửi cho nó một yêu cầu dữ liệu qua HTTP và nhận lại phản hồi có chứa dữ liệu được yêu cầu.

Giao tiếp tồn tại giữa hai microservices này được gọi là giao tiếp đồng bộ . Microservice1 gửi yêu cầu, đợi dữ liệu được trả lại và sau đó tiếp tục.

Hạn chế của giao tiếp đồng bộ

Phương thức giao tiếp này hoạt động tốt khi phản hồi đến gần như ngay lập tức. Tuy nhiên, nó đặt ra những hạn chế đối với các dịch vụ nhỏ có liên quan. Để có Microservice1, Microservice2 cũng cần có sẵn.

Trong một số trường hợp nhất định, giao tiếp đồng bộ thậm chí có thể không thân thiện với người dùng.

Giả sử Microservice2 không hoạt động. Trong trường hợp đó, người dùng đã gửi yêu cầu cần phải hiểu rõ về nó. Không phải lúc nào bạn cũng muốn làm điều đó. Trong những tình huống như vậy, giao tiếp không đồng bộ cung cấp một giải pháp thay thế tốt hơn.

Giao tiếp không đồng bộ

Hãy xem kiến ​​trúc ứng dụng sau:

Giao tiếp không đồng bộ với hàng đợi và dịch vụ vi mô: Một ...

Trong hình trên, chúng tôi sử dụng ZipkinDistributedTracingServer. Các dịch vụ vi mô khác nhau gửi nhật ký cuối cùng được hợp nhất trong Dịch vụ truy tìm Zipkin. Mỗi microservice đặt thông tin truy tìm của nó vào hàng đợi tin nhắn RabbitMQ. Máy chủ xử lý thông báo khi và khi chúng vào hàng đợi.

Trong kiến ​​trúc này, các ứng dụng giao tiếp thông qua RabbitMQ. CurrencyCalculationService đưa thông tin theo dõi của riêng mình vào RabbitMQ, và sau đó quên nó đi. Nó không lo lắng về các phản hồi trở lại với nó.

Bây giờ, điều gì sẽ xảy ra nếu ZipkinDistributedTracingServer bị hỏng?

Các dịch vụ giao tiếp với nó sẽ không lo lắng một chút nào. Họ sẽ tiếp tục gửi tin nhắn đến hàng đợi. Khi máy chủ hoạt động trở lại, nó sẽ tiếp tục xử lý các thông báo có trong hàng đợi và lưu chúng vào cơ sở dữ liệu.

Ưu điểm của giao tiếp không đồng bộ

Hãy xem xét một số lợi thế của giao tiếp không đồng bộ:

  • Trong một hệ thống liên quan đến nhắn tin không đồng bộ, máy chủ không cần phải luôn hoạt động. Tin nhắn được đưa vào hàng đợi tin nhắn có thể được xử lý theo lô, sau đó.
  • Thay vì một phiên bản duy nhất của máy chủ theo dõi xử lý hàng đợi tin nhắn, bạn có thể tạo ra nhiều phiên bản để giảm tải.
  • Nếu bạn sử dụng phiên bản hiện đại của hàng đợi nhắn tin, bạn sẽ có nhiều khả năng sử dụng tính năng phát lại. Điều này giúp xử lý lại một thông báo ban đầu có lỗi.
  • Giao tiếp không đồng bộ là rất tốt cho các hệ thống yêu cầu tính nhất quán cuối cùng .

Điều tuyệt vời là miễn là chúng tôi sửa lỗi và xử lý lại thông báo, người dùng dịch vụ đã khởi tạo yêu cầu có lỗi thậm chí không cần biết về chúng.

Hạn chế của giao tiếp không đồng bộ

Giao tiếp không đồng bộ không thể được sử dụng nếu quá trình xử lý cần theo thời gian thực - tức là nếu có một hạn chế cứng về thời gian phản hồi của một yêu cầu nhất định. 

Tóm lược

Trong bài viết này, chúng ta đã xem xét tất cả về giao tiếp không đồng bộ là gì. Chúng tôi bắt đầu với việc xem xét giao tiếp đồng bộ và thấy rằng nó đặt ra những hạn chế đối với các ứng dụng và tính khả dụng của chúng. Giao tiếp không đồng bộ giải quyết vấn đề bằng cách khiến các dịch vụ xếp hàng yêu cầu vào hàng đợi tin nhắn. Sau đó, một máy chủ sẽ xử lý chúng một cách độc lập, thường là theo lô.

19 hữu ích 0 bình luận 23k xem chia sẻ

Có thể bạn quan tâm