NATS (Neural Autonomic Transport System) là gì?

24/01/2022

Bài viết khái quát về tính năng cũng như cách cài đặt để sử dụng NATS. Sau đó đưa ra những thư viện mà bạn có thể tham khảo để biết thêm về NATS. Cùng tìm hiểu với Jpapan IT Works nhé!

NATS là gì?

NATS (Neural Autonomic Transport System) là một message broker được viết bằng Go, khá mới mẻ, hiện đại và được sử dụng khá phổ biến.

Ưu điểm của NATS là đơn giản, nhanh, nhẹ và cực kỳ dễ dùng.

nats

Lưu ý : 

Phiên bản NATS broker thông thường không có chức năng lưu trữ các bản tin được truyền tải qua nó. Đối với các hệ thống cần lưu trữ, ghi nhận các lịch sử bản tin, cẩn sự chắc chắn an toàn ta có thể sử dụng NATS Streaming.

NATS Streaming được xây dựng dựa trên NATS Server core nhưng có thể các tính năng như : Lưu trữ bản tin khi qua broker (Memory, File, Database), Sử dụng Google Protocol Buffers binary message, Rate limit cho Publisher và Subscribers, ...

Dưới đây là một số tính năng cơ bản mà NATS cung cấp

Publish-Subscribe

Tính năng cho phép các Publisher gửi bản tin đến một hoặc nhiều các Subscribers.

NATS

Request-Reply

Tính năng cho phép Publisher có thể nhận phản hồi từ một trong các Subscribers.

NATS

Queue Groups

Tính năng cho phép tạo nhóm các Subscribers cùng xử lý một subject.

NATS

Các khái niệm và thành phần trong NATS

Publisher

Thành phần thực hiện quá trình gửi bản tin lên NATS.

Subscriber

Thành phần thực hiện việc lấy các bản tin từ NATS về.

Subject

  • NATS truyền và phân loại, gom nhóm các bản tin dựa trên các chủ đề được gọi là Subject. Tên các Subject này được định danh là duy nhất.
  • NATS cho phép các Subscribers có thể nhận được các bản tin từ một hoặc nhiều Subjects khác nhau thông qua việc định nghĩa các wildcards .
  • NATS dùng ký tự . để phân cách các token trong tên Subject

Một số trường hợp hay dùng

  • Nhận hết tất cả các bản tin được gửi đến NATS (Subscribe tất cả các Subject) : >
  • Matching A Single Token

foo.* sẽ nhận bản tin từ các Subject foo.bar, foo.baz, ...  nhưng ko nhận được bản tin từ Subject foo.bar.baz

  • Matching Multiple Tokens

foo.> sẽ nhận bản tin từ các Subject foo.bar, foo.baz, foo.bar.baz, foo.bar.1, ...

Cluster

Cơ chế này có thể hiểu là chạy NATS trên nhiều instance hoặc cài trên nhiều máy và kết nối chúng lại tạo thành một mạng gọi là Cluster. Việc này giúp tăng tính sẵn sàng và ổn định cho broker và cũng giúp scale mở rộng hệ thống.

NATS

Cài đặt NATS Server

Tải binary tương ứng với hệ điều hành đang sử dụng

Ví dụ ở đây để cài cho Windows 64bit

 

Ngoài ra có thể cài dùng Docker, Cài trên K8S dùng Operator, ...

Chạy với câu lệnh

nats-server.exe

nats-server.exe -c nats-server.conf

Tham khảo việc tạo và thiết lập các thông số cho NATS

Giám sát

NATS Server đã cung cấp module cho việc giám sát dưới dạng một HTTP server thông qua việc cấu hình ở bên trên. Server này cung cấp các thông tin như:

  • Các thông tin liên quan đến cấu hình hiện tại
  • Số lượng các client đang kết nối và đã kết nối
  • Số lượng, dung lượng các bản tin đi đến và ra ngoài tổng hoặc với từng client
  • Các thông tin liên quan mạng cluster
  • Các thông tin liên quan đến các Subscribers

Tham khảo thêm

http://demo.nats.io:8222

https://docs.nats.io/nats-server/configuration/monitoring

Các công cụ giám sát khác lấy thông tin từ server

 

Thư viện C#

NATS Server

https://www.nuget.org/packages/NATS.Client

https://github.com/nats-io/nats.net

 

NATS Streaming Server

https://www.nuget.org/packages/STAN.Client

https://github.com/nats-io/stan.net

 

Hỗ trợ việc kết nối tới NATS ổn định thông qua các cơ chế retry

https://github.com/App-vNext/Polly

 

Tham khảo thêm

https://nats.io

https://github.com/nats-io/nats-server

https://github.com/nats-io/nats-streaming-server

https://www.youtube.com/watch?v=VPHGgJiQUHw&t=182s

https://www.youtube.com/watch?v=2-KdyI1bC_s

 

Sưu tầm

Japan IT Works 



Việc làm theo chuyên ngành

Việc làm theo ngành

Việc làm theo tỉnh thành