Professional Documents
Culture Documents
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 (sập hoàn toàn).
1.3.1.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. 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?
Ví dụ ngay và luôn. 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ỗ.
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
thì sao?
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.
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 (là một bài toán mà Message Brokers giải quyết OKE
nhất).
Chúng ta cứ nói đi nói lại rằng Message Brokers sẽ giải quyết, thì bây giờ ta sẽ coi
Message Brokers là gì và nó giải quyết điều gì nhé
1.3.1.3. Message Brokers là gì?
Message Brokers là 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
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
phía BE hoặc dữ liệu. Với kiến trúc này, ta cũng có thể chia nhỏ các services
với nhiều brokers như thanh toán lập hóa đơn, gửi mail, lưu cơ sở dữ liệu,...
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.
1.3.1.6. Fault Tolerance
Fault Tolerance là Khả năng chịu lỗi là điểm đáng ghờm mà Mesage
Brokers đem lại. 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 (sập server)
1.3.1.7. Availability và Scalabality trong message brokers
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ừ. Điều này giúp
tăng performance và giảm độ trễ của hệ thống
Khi một thông điệp mới về thời tiết được gửi với chủ đề "weather.boston," cả
Subscriber 1 và Subscriber 2 sẽ nhận được thông điệp:
Subscriber 1: Nhận thông điệp - "Hôm nay có nắng ở Boston."
Subscriber 2: Nhận thông điệp - "Hôm nay có nắng ở Boston."
Subscriber 1 và Subscriber 2 nhận thông điệp và có thể gửi phản hồi trực tiếp đến
"reply_to.weather" để đáp ứng yêu cầu dự báo thời tiết.
1.4.Nats ClI
Tích hợp nhiều thứ như máy chủ tích hợp và tất cả các tính năng bạn cần
để mô phỏng môi trường của Nats