Message Brokers là gì? Mesage Brokers trong design system

3540

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Tiếp theo chuỗi về System Design và System Architecture, bài viết này giới thiệu với anh em về khái niệm Message Brokers. Khái niệm này cũng nằm trong nhóm bài viết về Large Scale Systems Architectural Building Blocks.

Tuần trước hay trước nữa gì đó là bài viết về API Gateway – Cần biết khi thiết kế hệ thống, anh em có nhu cầu cứ feel free ghé đọc nha.

Ok, bắt đầu thôi nào!

  Digital Messaging - Giải Pháp Quản Lý Toàn Diện Dữ Liệu Người Dùng
  Discord đã lưu trữ hàng tỉ messages mỗi ngày như thế nào

Xem thêm các việc làm MySQL hấp dẫn trên TopDev

1. Message Brokers là gì?

Applications ngày nay càng ngày càng lớn, càng ngày càng phức tạp. Thời gian và cách thức để giao tiếp giữa các Services lớn đã trở thành một bài toán lớn. Rất may ta đã có một solutions khá tốt tên Message Brokers.

Luôn bắt đầu với khái niệm loằng ngoằng lèo nghèo

message broker is a piece of software, which enables services and applications to communicate with each other using messages. The message structure is formally defined and independent from the services that send them.

Message broker là một phần của phần mềm, cho phép services và applicaiton giao tiếp với nhau thông qua messages. Cấu trúc message thông thường được định nghĩa sẵn và nó động lập hoàn toàn khỏi services gửi nó.

Thêm nữa

This allows applications to share information with one another, even if they’re written in different programming languages!

Message Brokers còn cho phép ứng dụng chia sẻ thông tin với một cái khác, kể cả là 2 con services viết trên 2 ngôn ngữ lập trình khác nhau!

Rồi kèm thêm quả 3 khái niệm chất chơi ProducerConsumer và Queue/topic nữa. Loạn hết đầu, khó hiểu nhân đôi.

May thay ở Kieblog luôn có ví dụ cụ thể tận tình cho anh em.

Thật sự phân vân – LOL

2. Message Brokers Motivation

Trước khi bắt đầu với Message Brokers thì ta điểm xuyết qua tí về Load Balancer. Anh em nào chưa biết về Load Balancer có thể tham khảo bài này.

Rồi, bắt đầu với ví dụ, đầu tiên là

2.1 Synchronous Communication

Synchoronous là đồng bộ. Synchronous Communication nghĩa là giao tiếp đồng bộ. Sender và Receiver sẽ giao tiếp với nhau thông qua Direct Communication (kết nối trực tiếp).

Message Brokers

Ngoài kết nối trực tiếp (Direct Communication), cũng có thể thông qua Load Balancer như hình dưới

Message Brokers

Giao tiếp kiểu này thường yêu cầu cả Sender và Receiver đều phải work (healthy). Trường hợp một trong hai ngủm thì tính là ngủm.

Message Brokers

2.2 Drawbacks

Trường hợp giao tiếp trực tiếp (Direct Communication), sẽ có yêu cầu cho cả 2 services

Both application instances have to remain healthy and maintain this connection to complete transaction

Cả hai application đều phải đảm bảo ổn và duy trì connection để có thể hoàn thành một transaction.

Cũng không có vấn đề gì phát sinh để ta phải dùng Message Brokers nếu cả hai services đều nhỏ, ít xử lí và cho thời gian phản hồi nhanh.

Nhưng đời không như là mơ, trường hợp receiver services xử lí cồng kềnh và tốn nhiều thời gian thì sao?

Nói là làm, ví dụ ngay và luôn cho anh em. Giả sử ta đang build một hệ thống xử lí vé (ticket), đã là vé thì có mua bán, có thanh toán online, có xử lí đặt chỗ.

Message Brokers

Fullfilment Services sẽ thực thi nhiều actions, kiểm tra thẻ, thanh toán và gửi email thông báo thành công cho user. Nếu cả 3 thứ này đều tốn thời gian?

Message Brokers

Bài toán đặt ra lúc này là user cần có response nhanh nhất?. Không thể chờ tới khi tất cả các services hoàn thành (giảm performance). Chính lúc này là lúc Message Brokers ra tay.

À tí quên, chưa kể là trường hợp có nhiều user truy cập cùng lúc và Services xử lí lần lượt từng request.

2.3 Message Brokers là gì?

Lý thuyết, không thể không đọc.

A software architectural building block that uses the queue data structure to store messages between sender and receiver

Kiến trúc phần mềm theo các khối sử dụng queue để lưu trữ message giữa người gửi là người nhận là Message Brokers

Tới đây đã rõ, Brokers có nghĩa là môi giới và siêu đúng trong trường hợp này. Đứng giữa sender và receicer để nhận messages, đem nó vào queue. Ngon

Đứng giữa hai thằng là ông Brokers, sender lúc này gửi request tới ông trung gian và có ngay kết quả. Đôi khi là ngay lập tức. Đặt hàng phát là có thông báo đặt hàng thành công luôn. Quá đã.

Sau khi đã done và Broker trả về cho Sender, lúc này Message Brokers mới giao tiếp thật sự với Receiver. Đi thực hiện nốt cho xong các công việc.

Với kiến trúc này, ta cũng có thể chia nhỏ các services với nhiều brokers

Tới đây là anh em hiểu hết rồi đúng không?. Giờ chuyển qua phần hấp dẫn không kém. Benefits

3. Message Brokers Benefits

Chính vì cơ chế đứng trung gian giữa Sender và Receiver nên:

Most message brokers implemetation offer the publish/subscrible pattern

Hầu hết các message brokers đều implement dựa trên publish/subscrible pattern.

Về pattern này thì anh em có thể đọc bài này để hiểu hơn.

  • Publish messages to a particular channel (gửi tin nhắn tới một kênh cụ thể)
  • Subscrible to that channel (đăng kí một kênh)
  • Get notified when a new event is published (nhận thông báo khi có event mới được publish)

4. Message Capabalities

Về những thứ Message Brokers có thể làm, hoặc gọi chung là benefit đi. Bao gồm một số điểm sau:

  • Storing/temporarily buffering the messages
  • Message routing
  • Transformation validation

Với message brokers, ta cũng có thể đăng kí với các services khác, thông báo tới end user khi một event nào đó đã hoàn thành.

4.1 Fault Tolerance

Khả năng chịu lỗi là điểm đáng ghờm mà Mesage Brokers đem lại.

It allows different services to communicate with each other white some of them maybe unavailable temporarily

Nó cho phép các services khác nhau giao tiếp với nhau trong khi một trong số chúng đã ngủm củ tỏi

Thua, vậy lại chả tăng tính chịu lỗi, hàng không có nhưng anh brokers môi giới đã cho đặt luôn rồi.

4.2 Availability và Scalabality

Tính sẵn sàng (availability) và tính mở rộng (scalabality) cũng là 2 điểm mà Mesage Brokers đem tới. Trường hợp có rất nhiều traffic, thanh niên môi giới này có thể trả về kết quả nhanh chóng, sau đó đi xử lí từ từ.

We pay a little in performance when it comes to latency

Tăng performance và giảm độ trễ của hệ thống

Tới đây mong anh em đã hiểu rõ về Message Brokers. Một số bài viết hay để ở tham khảo nha.

5. Tham khảo

My pleasure when you spend a time to read my post – Wish all the best for you and your family – Happy Coding!

Bài viết gốc được đăng tải tại kieblog.vn

Có thể bạn quan tâm:

Xem thêm các công việc ngành CNTT hấp dẫn trên TopDev