SocketCluster là gì? Hướng dẫn sử dụng SocketCluster
SocketCluster là gì?
SocketCluster là một mã nguồn mở, một framework real-time cho Node.js.
Nó hỗ trợ cả giao tiếp giữa client với server; một nhóm (group) thông qua cơ chế pub/sub channel (hiểu nôm na là nó tạo 1 kênh riêng để các phần tử trong 1 nhóm giao tiếp với nhau)
SocketCluster được thiết kế để dễ dàng mở rộng số processes/host khi xây dựng hệ thống. (ví dụ hiện tại bạn chỉ có 1 con server Node.js để nhận và xử lý request, nhưng sau đấy số lượng request nhiều nên, 1 server không thể đáp ứng, ta sẽ dùng SocketCluster để gán thêm 1 con server y hệt như thế vào hệ thống nhằm giảm tải áp lực cho hệ thống)
Một số khái niệm trong SocketClutser
- Worker: đây chính là đối tượng thực thi các chức năng của server, một server socketcluster có thể có nhiều thể hiện
worker
giúp giải quyết vấn đề single I/O của Node.js. Ví dụ máy bạn có 2 CPU thì có thể tạo 2 thể hiện workder, khi có 2 request đồng thời thì nó sẽ chia ra và được xử lý bởi 2 worker trong cùng 1 lúc. - Broker: Đối tượng chịu trách nhiệm giao tiếp giữa các
worker
- SocketCluser/SocketClient: là đối tượng dùng để tạo kết nối socket, cho phép giao tiếp với server 1 cách real-time
- Channel: Kênh giao tiếp, ví dụ trong ứng dụng chat thì mối room chat sẽ là 1 channel, khi một client gửi tin nhắn vào room (publish) thì chỉ có những client đang trong room đó (subscribe) mới nhận được tin nhắn, còn các client ở trong channel/room khác thì ko nhận được.
Các tính năng chính của SocketCluster
- Tận dụng số nhân CPU của máy tính (Node.js là Single IO nên nó chỉ sử dụng 1 nhân CPU để chạy, nên với những máy có nhiều nhân CPU thì sẽ rất lãng phí)
- Mở rộng hệ thống bằng nhiều host/máy (Scales horizontally): cái này giống hệ thống phân tán, cho phép tạo nhiều server trên nhiều máy khác nhau cùng phục vụ 1 mục đích, thay vì chỉ có một server Node.js trên 1 máy -> tăng tính sẵn sàng, tăng khả năng chịu tải…)
- Hỗ trợ JSON Web Toke (JWT) khi kết nối
- Client tự động reconnect nếu bị mất kết nối
- …
SocketCuster áp dụng ở đâu?
- Áp dụng cho hệ thống tài chính, tiền mã hóa, blockchain
- Hệ thống Chat bot và các ứng dụng liên quan
- IoT devices
- Server Game nhiều người chơi
- Nói chung là bất kỳ hệ thống real time hoặc service nào cần scale tới hàng triệu người dùng
Các loại client mà SocketCluster hỗ trợ
SocketCluster hỗ trợ rất nhiều loại client khác nhau:
Repo: https://github.com/SocketCluster/socketcluster-client
Repo: https://github.com/sacOO7/socketcluster-client-java
Repo: https://github.com/abpopov/SocketCluster-ios-client
Repo: https://github.com/sacOO7/socketcluster-client-swift
Repo: https://github.com/sacOO7/socketcluster-client-python
Repo: https://github.com/sacOO7/SocketclusterClientDotNet…
Code ví dụ SocketCluster
- Cài đặt SocketCluster Server, Tạo ứng dụng SocketCluster Hello World
- Hướng dẫn worker.js và server.js trong ứng dụng SocketCluster
- Code ví dụ SocketCluster với client JavaScript (HTML – Browser).
- Code ví dụ SocketCluster với client là Node.js
- Code ví dụ SocketCluster với client là Java
- Thực hiện login/authen với SocketCluster
- Chạy nhiều Server SocketCluster cùng lúc.
SocketCluster là gì? Hướng dẫn sử dụng SocketCluster
Okay, done!
References: