Message Queue Là Gì

     
Mở đầu

Kiến trúc microservice vẫn dần biến một xu thế kiến trúc phần mềm được những developer thời nay lựa chọn để xây dựng những ứng dụng của mình thay vì phong cách thiết kế nguyên khối (Monolithic) truyền thống. Tương đối nhiều các đơn vị phát triển, công ty ở khắp đều nơi như Amazon, Netflix, Spotify giỏi Uber... Từ lâu đã biến hóa cách tiếp cận nguyên khối (monolithic) chậm trễ chạp, phức hợp sang bản vẽ xây dựng microservice để dễ dàng hóa và mở rộng cấu trúc của họ.

Bạn đang xem: Message queue là gì

Mình sẽ không còn lãng chi phí thêm thời gian của các bạn để thường xuyên nói về tại sao họ nên sử dụng microservice, đã có khá nhiều sự ủng hộ giành riêng cho microservice cũng giống như các luận bàn được phân chia sẻ, ra mắt và nói tới tính chất, ích lợi của microservice.

Tuy nhiên, cạnh bên rất nhiều tiện ích thì microservice cũng có những điểm yếu kém của nó. Trong số những nhược điểm lớn số 1 của microservice là sự phức tạp trong tương tác, giao tiếp giữa những service được xây dựng. Khi bạn muốn các service chủ quyền trong phong cách xây dựng microservice của chúng ta xử lý toàn bộ các yêu thương cầu, ngay cả với cân nặng lớn với độ tinh vi cao, thì làm vắt nào bạn cũng có thể đảm bảo được điều đó và làm thế nào bạn cũng có thể cải thiện về năng suất hệ thống?

Câu trả lời chính là: Message queue (hàng đợi tin nhắn)

Message queue là gì?

Vậy Message queue là gì cùng nó vận động như cầm nào?

Message queue là một trong những kiến trúc cung cấp giao tiếp ko đồng bộ. Ý nghĩa của queue sinh sống đây chính là 1 mặt hàng đợi đựng message ngóng để được cách xử lý tuần trường đoản cú theo vẻ ngoài vào trước thì ra trước (FIFO - First In First Out). Một message là các dữ liệu bắt buộc vận chuyển giữa bạn gửi và fan nhận. Vậy có thể hiểu đối chọi giản, message queue giống hệt như một áo quan thư e-mail của chúng ta. Email có lẽ rằng là ví dụ tốt nhất về giao tiếp không đồng bộ. Khi một e-mail được giữ hộ đi, fan gửi tiếp tục xử lý số đông thứ khác nhưng mà không đề xuất phản hồi ngay mau lẹ từ tín đồ nhận. Bí quyết xử lý lời nhắn này bóc tách người giữ hộ khỏi fan nhận nhằm họ không cần thiết phải tương tác với hàng ngóng tin nhắn và một lúc.

*

Kiến trúc cơ bản của message queue rất đối chọi giản, bao gồm các nhân tố như sau:

Message: tin tức được giữ hộ (có thể là text, binary hoặc JSON)Producer: Service tạo thành thông tin, tin báo vào message queue.Message Queue: khu vực chứa đều message này, có thể chấp nhận được producer cùng consumer hoàn toàn có thể trao đổi với nhauConsumer: Service nhận message trường đoản cú message queue cùng xử lýMột service hoàn toàn có thể vừa làm cho producer, vừa làm cho consumer
*
Các các loại message queue

Trong các khối hệ thống của chúng ta, đôi lúc ta buộc phải tới hai hoặc nhiều các service chủ quyền cùng xử một yêu thương cầu, vậy yêu cầu làm thế nào nhỉ? Đừng lo, vì message queue có những cơ chế không giống nhau giúp giải quyết vấn đề này.

1. Point-to-point

Message queue hoàn toàn có thể là hình dáng point-to-point, tức là khi kia ta chỉ tất cả một hàng chờ và một consumer tuyệt nhất dể xử lý các tin nhắn trong hàng đợi:

*

2. Publisher-Subscriber

Ngoài ra, message queue có thể sử dụng định dạng Publisher-Subscriber, trong những số ấy publisher (nhà sản xuất) nhắn tin nhắn đến hàng hóng (trong trường đúng theo này được gọi là Topic) và tất cả subscriber (người đăng ký) vào thuộc 1 Topic phần lớn sẽ nhận ra tin nhắn vào Topic đó:

*

Message queue trong phong cách thiết kế microservice

Chà, message queue là 1 kiến trúc tuyệt vời nhất cho giao tiếp không đồng bộ. Vậy trong khối hệ thống microservice, khi nhưng mà ta cần các microservice vừa độc lập lại vừa hoàn toàn có thể tương tác với nhau nhưng mà không yêu cầu ghép nối thì message queue là 1 lựa chọn hàng đầu. Giao tiếp được thực hiện bằng cách gửi tin nhắn gồm chứa tin tức hoặc lệnh cần được xử lý. Tín đồ gửi là Producer. đều tin nhắn này tiếp nối được gửi vào trong một hàng đợi và được xử lý bởi vì một microservice không giống ( Consumer). Sau đó, khi một tin nhắn được xử lý, nó sẽ ảnh hưởng xóa hoặc loại bỏ hóa, điều này bảo đảm an toàn rằng nó chỉ được cách xử trí một lần duy nhất.

*

Một lấy ví dụ như sử dụng đơn giản và dễ dàng của message queue

Hãy tưởng tượng rằng chúng ta có một thương mại & dịch vụ web nhận được nhiều yêu cầu mỗi giây, toàn bộ các yêu mong cần đảm bảo an toàn không bị mất và cần phải xử lý vì một hàm có thông lượng cao. Nói giải pháp khác, thương mại & dịch vụ web của công ty luôn phải ở trạng thái sẵn sàng chuẩn bị cao và chuẩn bị sẵn sàng nhận một yêu thương cầu mới thay vày bị khóa bởi quá trình xử lý các yêu cầu đã nhận trước đó.

Trong trường thích hợp này, để một message queuq giữa thương mại & dịch vụ web và thương mại & dịch vụ xử lý là lý tưởng. Dịch vụ thương mại web hoàn toàn có thể đặt thông tin "bắt đầu xử lý" vào một hàng hóng và dịch vụ khác hoàn toàn có thể nhận cùng xử lý thông báo theo sản phẩm công nghệ tự. Hai quá trình được bóc tách rời ngoài nhau và không yêu cầu chờ đợi. Giả dụ bạn có rất nhiều yêu ước đến vào một khoảng thời hạn ngắn, khối hệ thống xử lý sẽ rất có thể xử lý vớ cả. Hàng đợi sẽ sống thọ với những yêu cầu ngay cả khi con số của chúng tăng lên.

Sau đó, hãy tưởng tượng rằng dịch vụ của công ty đang phân phát triển, khổi lượng yêu cầu buộc phải xử lý tạo thêm và khối hệ thống cần được mở rộng. Toàn bộ những gì bạn cần làm là thêm nhiều consumer để giải quyết hàng đợi nhanh hơn.

Xem thêm: Bank Routing Number Là Gì Và Được Tìm Thấy Ở Đâu? Bank Routing Number Là Gì

Ưu điểm

Message Queue là 1 trong những thành phần rất là quan trọng, luôn luôn phải có trong các hệ thống lớn cũng tương tự trong kiến trúc microservice dựa vào các ưu điểm sau:

Dự phòng: sau khi lưu trữ tin nhắn, mặt hàng đợi đảm bảo tin nhắn đang chỉ bị nockout bỏ khi quy trình đọc nó xác nhận thành công trong việc đọc cùng xử lý. Nếu bao gồm gì không đúng sót, lời nhắn sẽ vẫn tồn tại và được xử lý lại sau này.Nhắn tin ko đồng bộ: vào trường hòa hợp ứng dụng của doanh nghiệp không yêu mong phản hồi đúng chuẩn cho một quy trình, những consumer rất có thể nhận và cách xử trí theo súc tích và tốc độ riêng của nó.Khả năng phục hồi: Ví dụ: mang sử khối hệ thống của bạn bao hàm 2 microservice, một để giải pháp xử lý đơn đặt hàng và một thương mại dịch vụ khác nhằm gửi email. Tất cả một mặt hàng đợi cho thấy rằng một email cần phải gửi đi có nghĩa là ngay cả khi khối hệ thống email của doanh nghiệp không hoạt động, thương mại dịch vụ xử lý đơn đặt đơn hàng vẫn có thể tiếp tục nhận và xử lý đối kháng đặt hàng. Khi dịch vụ thương mại email trực tuyến đường trở lại, nó tất cả thể ban đầu đọc tin nhắn cùng gửi email.Khả năng mở rộng: sản phẩm đợi chất nhận được bạn bóc hệ thống của bản thân thành các microservices khác nhau và chia xác suất chúng theo nhu cầu.

Nhược điểm

Và vớ nhiên, không tồn tại gì là hoàn hảo nhất

*
sát bên nhiều tác dụng thì message queue cũng đều có những điểm yếu của nó:

Làm tinh vi hệ thốngPhải bao gồm message format: từ 2 phía producer cùng consumer rất cần phải thống độc nhất vô nhị format message để có thể gửi với nhận message.Monitor Queue là bắt buộc thiết: bạn cần phải theo dõi queue của chính bản thân mình để bảo đảm an toàn queue không vô số hay đầy queue.

Xem thêm: Ăn Xương Đầu Heo Có Tốt Không, 8 Bộ Phận Của Lợn Bạn Nên Hạn Chế Ăn

Khó xử lý đồng bộ: chưa hẳn lúc như thế nào message queue cũng chính là lựa chọn số 1 khi chúng ta xây dựng hệ thống. Sẽ có nhiều trường hợp khối hệ thống bắt buộc rất cần phải xử lý đồng điệu giữa những service, khi đó ta sẽ buộc phải lựa chọn phần nhiều cơ chế tương xứng hơn như Remote Procedure Invocation (RPI).Tóm lược

Để kết luận, nếu bạn đang nghĩ đến sự việc xây dựng hệ thống microservices hoặc nếu như khách hàng cần cải thiện hiệu suất của chúng và business logic của công ty không yêu cầu chúng cần được xử trí ngay lập tức, thì Message queue là thứ chúng ta cần. Chúng sẽ bảo vệ rằng toàn bộ các yêu ước nhận được số đông được cách xử lý trong khi tách bóc khỏi những microservices khác và nếu cần, chúng được cho phép bạn dễ dãi mở rộng lớn quy mô một trong những khoảng thời gian mong muốn cao.