0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Khám Phá Công Nghệ RSocket: Bí Quyết Thành Công Của Canva Trong Thiết Kế Trực Tuyến

Đăng vào 4 ngày trước

• 4 phút đọc

Trong kỷ nguyên số hóa hiện nay, nhu cầu về các công cụ thiết kế đơn giản, hiệu quả đã tăng cao. Canva, nền tảng thiết kế trực tuyến ra đời vào năm 2013, nhanh chóng thu hút hàng triệu người dùng trên toàn cầu nhờ vào sự dễ dàng và tiện lợi mà nó mang lại.


Chúng tôi đã tạo ra một nhóm dành cho những bạn đam mê thiết kế hệ thống! Hãy tham gia để cùng nhau xây dựng cộng đồng System Design Việt Nam lớn mạnh hơn!

Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa

Kênh TikTok: https://www.tiktok.com/@sydexa.com


Một trong những tính năng nổi trội của Canva chính là khả năng cộng tác theo thời gian thực. Nhờ vào tính năng này, nhiều người có thể cùng nhau chỉnh sửa một thiết kế mà không gặp trở ngại nào, tiết kiệm thời gian và nâng cao hiệu quả công việc nhóm.

Canva thu hút hơn 135 triệu người dùng mỗi tháng, khẳng định vị thế của mình trong lĩnh vực thiết kế trực tuyến. Vậy điều gì đã giúp Canva có khả năng mở rộng để phục vụ hàng triệu người dùng này? Đó chính là giao thức RSocket.

Tại Sao Chọn RSocket?

Trong việc phát triển hệ thống hỗ trợ cộng tác thời gian thực, mô hình request-response qua giao thức HTTP truyền thống không đáp ứng được nhu cầu. Để tương tác thực sự theo thời gian thực, cần có một giao thức song hướng cho phép gửi dữ liệu liên tục đến khách hàng ngay khi có bất kỳ thay đổi nào.

Việc triển khai các giao thức song hướng quy mô lớn là một thách thức lớn. Khi số lượng người dùng tăng mạnh, hệ thống sẽ phải duy trì nhiều kết nối đồng thời, đòi hỏi tài nguyên lớn và ảnh hưởng đến độ tin cậy.

Phương pháp long polling đã có từ lâu, tuy giúp giữ kết nối nhưng gây ra độ trễ đáng kể và phức tạp trong quản lý trạng thái.

Server-Sent Events (SSE) trên HTTP/2 cải thiện vấn đề nhưng vẫn chỉ cho phép truyền dữ liệu một chiều. Trong khi đó, WebSockets cung cấp giao tiếp song hướng nhưng đối mặt với nhiều hạn chế khi triển khai trong microservices với số lượng người dùng lớn.

Cuối cùng, RSocket đã ra đời để giải quyết những khó khăn này.

Giới Thiệu Về RSocket

RSocket là một giao thức được phát triển bởi một nhóm các công ty hàng đầu, nhằm hỗ trợ xây dựng các hệ thống microservices phân tán, với khả năng phục hồi cao và hiệu suất tốt.

1. Hiệu Suất Vượt Trội

RSocket hỗ trợ đa kênh (multiplexing), cho phép gửi và nhận nhiều luồng dữ liệu một cách đồng thời qua một kết nối mạng duy nhất. Điều này giúp tiết kiệm tài nguyên và đảm bảo hiệu suất giao tiếp cao cho các ứng dụng thời gian thực.

2. Định Dạng Dữ Liệu

Là một giao thức nhị phân, RSocket có thể hoạt động độc lập trên nhiều lớp vận chuyển, từ TCP đến WebSockets. Điều này giúp dễ dàng chuyển đổi và gửi dữ liệu ở nhiều định dạng khác nhau.

3. Tính Linh Hoạt

RSocket tương thích với hầu hết các ngôn ngữ lập trình, điều này giúp tăng cường khả năng tối ưu hóa và triển khai. Tính năng kiểm soát luồng dữ liệu ở cấp ứng dụng cũng giúp lập trình viên tiết kiệm thời gian.

4. Khả Năng Phục Hồi

Mỗi kênh trong RSocket đều có chi tiết kiểm soát luồng độc lập, giúp hạn chế tình trạng quá tải cho hệ thống. Cơ chế Leasing giúp cho server biết được số lượng message cần xử lý và phân bổ tài nguyên hợp lý.

5. Mô Hình Giao Tiếp

RSocket thiết lập mô hình communication peer-to-peer, nơi cả client và server đều có thể khởi tạo các tương tác. RSocket hỗ trợ nhiều mô hình giao tiếp khác nhau như Request-Response, Request-Stream và Fire-and-Forget, giúp cho ứng dụng phân tán linh hoạt hơn.

Kiến Trúc Của Canva

Trong kiến trúc của Canva, client kết nối với máy chủ WebSocket Gateway qua giao thức HTTP. Trong khi đó, RSocket được sử dụng để kết nối giữa máy chủ WebSocket Gateway và các máy chủ backend. Việc sử dụng thuần Java ở backend giúp Canva tận dụng hiệu suất và khả năng mở rộng.

Canva quản lý nhiều kênh trong một kết nối RSocket duy nhất, từ đó tối ưu hóa hiệu suất và giảm thiểu số lượng kết nối cần thiết.

Tổng Kết

Chất lượng trải nghiệm người dùng là mục tiêu hàng đầu mà mọi ứng dụng hướng tới. RSocket nổi lên như một giải pháp hiệu quả trong việc xây dựng các ứng dụng phân tán. Mặc dù còn trong giai đoạn phát triển, RSocket đã thể hiện tiềm năng lớn trong việc đáp ứng nhu cầu khắt khe về hiệu suất và khả năng phục hồi. Chúng tôi rất mong để gặp lại bạn trong những bài viết tiếp theo!


Tham gia ngay vào cộng đồng của chúng tôi và cùng nhau khám phá thế giới thiết kế hệ thống!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào