Request-response vs. publish-subscribe, phần 1: Sự khác biệt là gì?

13/07/2023 Đăng bởi: CÔNG TY TNHH AUTOMATION & CONTROL

Tất cả chúng ta đều biết rằng máy tính và các thiết bị điện tử khác — máy in, bộ định tuyến, máy tính xách tay, điện thoại thông minh, v.v. — được nối mạng để chúng có thể trao đổi thông tin.

Nhưng làm thế nào để thông tin đó đến được nơi mà nó cần được đi đến?

Hãy cùng xem xét một vài mô hình giao tiếp mạng và so sánh xem cái nào sẽ thể tốt hơn trong một số trường hợp nhất định. Trong bài viết này,hai mô hình mạng mà chúng ta sẽ xem xét là request-response và publish-subscribe.

Request and response (Yêu cầu và phản hồi)

Request-response illustration: client and server

Mô hình điển hình cho các máy tính giao tiếp trên mạng là Request-response. Trong mô hình Request-response, một máy khách hoặc phần mềm yêu cầu dữ liệu hoặc dịch vụ và một máy tính hoặc phần mềm máy chủ đáp ứng yêu cầu bằng cách cung cấp dữ liệu hoặc dịch vụ.

Ví dụ: khi bạn gửi một file excel máy in, chương trình excel của bạn là máy khách. Yêu cầu dịch vụ máy in của nó sẽ chuyển đến máy chủ in của công ty bạn, máy chủ này sẽ phản hồi yêu cầu và phân bổ tài nguyên cho các máy in trên mạng. Máy chủ in xử lý tất cả các yêu cầu in của khách hàng, đảm bảo rằng file excel của bạn và các lệnh in của đồng nghiệp đều được hoàn thành một cách có trật tự.

Trong tự động hóa, máy khách thường là PC và máy chủ là PLC hoặc PAC. Ứng dụng HMI trên PC của bạn yêu cầu dữ liệu từ PLC hoặc PAC để hiển thị trên màn hình.

Bạn có thể hình dung request-response giống như một khách hàng gửi một chiếc xe tải rỗng ra ngoài để chứa đầy dữ liệu. Máy chủ phản hồi bằng cách đưa dữ liệu lên xe tải và gửi lại.

 Publish and Subscribe (xuất bản và đăng ký)

Một cách khác để các thiết bị giao tiếp trên mạng được gọi là publish-subscribe, hoặc pub-sub. Trong kiến ​​trúc pub-sub, một nguồn trung tâm được gọi là broker - nhà môi giới (đôi khi còn được gọi là server - máy chủ) nhận và phân phối tất cả dữ liệu. Khách hàng của pub-sub có thể xuất bản dữ liệu cho nhà môi giới hoặc đăng ký để nhận dữ liệu từ đó — hoặc cả hai.

Máy khách xuất bản dữ liệu chỉ gửi khi dữ liệu thay đổi (báo cáo theo ngoại lệ hoặc RBE). Trường hợp máy khách đăng ký nhận thì dữ liệu được nhận tự động từ nhà môi giới / máy chủ, nhưng cũng chỉ khi nó thay đổi.

Nhà môi giới không lưu trữ dữ liệu; nó chỉ đơn giản là chuyển nó từ nhà xuất bản sang người đăng ký. Khi dữ liệu đến từ nhà xuất bản, nhà môi giới sẽ nhanh chóng gửi dữ liệu đó đến bất kỳ khách hàng nào đã đăng ký dữ liệu đó.

Tiếp tục với ví dụ xe tải,nhưng không có xe tải nào trống. Dữ liệu xuất bản của khách hàng sẽ gửi một xe tải đầy đủ cho nhà môi giới. Người môi giới thấy xe tải đi vào nhưng không dỡ hàng; nó chỉ đơn giản là định tuyến nguyên vẹn nó đến một người đăng ký (sao chép xe tải nếu có nhiều hơn một người đăng ký).

Trong sơ đồ bên dưới, khách hàng bên trái xuất bản dữ liệu mà khách hàng bên phải đăng ký. Ngoài ra, ứng dụng khách ở phía dưới bên phải cũng xuất bản dữ liệu cần thiết của các ứng dụng khách khác không được hiển thị.

MQTT clients and broker illustration

 MQTT — một giao thức pub-sub

MQTT logo

MQTT là một giao thức truyền tải khá nổi tiếng sử dụng kiến trúc pub-sub. MQTT cực kỳ nhẹ: nó hầu như không chiếm không gian trong một thiết bị, do đó ngay cả những thiết bị nhỏ với rất ít khả năng tính toán cũng có thể sử dụng nó.

MQTT xác định xe tải và các tuyến đường. Nhưng nó không xác định cách tải (dữ liệu) được đóng gói hoặc giải nén. Đó là nơi Sparkplug xuất hiện.

 MQTT với Sparkplug

Sparkplug logo

Sparkplug sẽ mở ra các đặc trưng của máy khách,từ đó cung cấp một định dạng nhắn tin thích hợp cho việc sử dụng trong công nghiệp.

Sparkplug mã hóa tải trọng dữ liệu: nó xác định cách dữ liệu được đóng gói trên xe tải trước khi được gửi bởi nhà xuất bản và cách nó được giải nén trong người đăng ký.

Dữ liệu được gửi qua MQTT với Sparkplug được nén và hiệu quả. Xe tải MQTT đã được đóng gói với định nghĩa Sparkplug cũng phải được giải nén bằng Sparkplug, vì vậy cả nhà xuất bản và người đăng ký phải sử dụng nó để nhận dữ liệu.

MQTT với Sparkplug cũng cung cấp một cách hiệu quả để theo dõi trạng thái của các máy khách và đảm bảo rằng các máy khách trên một kết nối dễ dàng vẫn có thể gửi và nhận dữ liệu.

Nếu khách hàng ngoại tuyến (ngắt kết nối với nhà môi giới), nhà môi giới sẽ gửi "giấy chứng tử" cho các khách hàng đã đăng ký dữ liệu đó.
Khi khách hàng trực tuyến trở lại (thiết lập lại kết nối), nhà môi giới sẽ cấp một "giấy khai sinh" với trạng thái hiện tại của tất cả các thẻ dữ liệu.


Một lượng dữ liệu bị thiếu nhất định cũng có thể được gửi đi, tùy thuộc vào cấu hình máy khách.
 

 

Trong phần 2, chúng ta sẽ cũng nói về sự khác biệt giữa 2 mô hình giao tiếp mạng này.

Hẹn gặp lại các bạn

 
zalo