Validators DAO cập nhật client TypeScript Yellowstone Geyser gRPC trong Solana Stream SDK, tích hợp NAPI-RS để nâng cao hiệu suất và độ ổn định của streaming tần suất cao

Validators DAO cập nhật client TypeScript Yellowstone Geyser gRPC trong Solana Stream SDK, tích hợp NAPI-RS để nâng cao hiệu suất và độ ổn định của streaming tần suất cao

Validators DAO cập nhật client TypeScript Yellowstone Geyser gRPC trong Solana Stream SDK, tích hợp NAPI-RS để nâng cao hiệu suất và độ ổn định của streaming tần suất cao
ELSOUL LABO B.V. (Trụ sở: Amsterdam, Hà Lan; CEO: Fumitake Kawasaki) và Validators DAO thông báo một bản cập nhật phiên bản lớn cho client TypeScript của nền tảng truyền dữ liệu Solana mã nguồn mở "Solana Stream SDK," cho phép client TypeScript cho Yellowstone Geyser gRPC tận dụng NAPI-RS (triển khai native Rust).
Với bản cập nhật này, Solana Stream SDK cải thiện dư địa xử lý và độ ổn định cho tải công việc streaming tần suất cao đồng thời bảo toàn trải nghiệm phát triển TypeScript. Ngay cả trong lưu lượng cao điểm và các đợt bùng phát sự kiện liên tiếp, hệ thống được thiết kế để duy trì ổn định và tránh rơi vào trạng thái sụp đổ. Ngoài ra, starter code đã được tái cấu trúc: không còn chỉ là các mẫu kết nối đơn giản mà trở thành nền tảng Production-Ready dành cho vận hành thực tế và khả năng mở rộng.

Điều kiện thực tế để xử lý luồng thời gian thực trong TypeScript

Luồng Solana được sử dụng trong các lĩnh vực mà khả năng phản hồi thời gian thực trực tiếp tạo ra giá trị, như giao dịch, giám sát, phân tích và ra quyết định vận hành. Đồng thời, nhiều môi trường phát triển thực tế chủ yếu dựa trên công nghệ web, khiến TypeScript trở thành lựa chọn phù hợp nhờ tốc độ phát triển, khả năng bảo trì, độ linh hoạt của đội ngũ và khả năng bàn giao thuận tiện.
Do đó, điều quan trọng không chỉ là có thể xử lý luồng bằng TypeScript, mà còn là có thể xử lý các luồng tần suất cao bằng TypeScript một cách khả thi và bền vững mà không sụp đổ khi vận hành dài hạn.

Tại sao thực thi đơn luồng Node.js trở thành nút thắt trong tải cao điểm

Streaming tần suất cao bao gồm việc tiếp nhận, xử lý, lọc, giải mã và liên tục thực thi logic phía hạ nguồn, tất cả đều diễn ra đồng thời. Trong điều kiện này, đường thực thi đơn luồng Node.js dễ bị backpressure khi tải bùng phát hoặc đột biến tải ngắn hạn.
Trong thực tế, điều này thường biểu hiện dưới dạng tăng độ trễ, xử lý bị tồn đọng, mất sự kiện và kết nối lại thường xuyên. Mặc dù TypeScript xuất sắc về tốc độ phát triển và khả năng bảo trì, thách thức vận hành chính là liệu có thể duy trì dư địa xử lý đủ lớn trong điều kiện streaming cao điểm hay không. Bản cập nhật này trực tiếp giải quyết thách thức đó.

Phạm vi tích hợp NAPI-RS trước và sau khi mở rộng

Trước đây, trong Solana Stream SDK, NAPI-RS chủ yếu được sử dụng trong Shreds gRPC TypeScript client. Với bản cập nhật này, hỗ trợ NAPI-RS (Rust native) đã được mở rộng sang client TypeScript cho Yellowstone Geyser gRPC được sử dụng rộng rãi.
Việc mở rộng này gia tăng đáng kể phần pipeline streaming có thể hưởng lợi từ thực thi native với overhead thấp mà vẫn giữ giao diện dựa trên TypeScript. Benchmark nội bộ cho thấy cải thiện đáng kể về khả năng chịu backpressure khi tải cao điểm, với dư địa xử lý tăng tối đa khoảng bốn lần. Điểm quan trọng không nằm ở hệ số nhân, mà ở việc hệ thống chống sụp đổ trong điều kiện cao điểm và có thể được coi là mức chuẩn vận hành đáng tin cậy.
So với các giải pháp thay thế như WebAssembly (WASM), NAPI thực thi code native trực tiếp, cho phép độ trễ thấp hơn và throughput cao hơn. Trong Solana Stream SDK, NAPI-RS đóng vai trò trung tâm trong việc nâng cao hiệu suất luồng thời gian thực mà không hy sinh trải nghiệm nhà phát triển TypeScript.

Ý nghĩa của việc sử dụng Yellowstone Geyser gRPC trong TypeScript

Geyser gRPC là giao diện cốt lõi để nhận luồng giao dịch, cập nhật tài khoản và sự kiện slot với độ trễ thấp. Độ trễ hoặc mất dữ liệu trực tiếp làm bỏ lỡ cơ hội giao dịch, làm chậm các quyết định giám sát và vận hành, đồng thời làm tăng chi phí phát triển và vận hành.
Việc cho phép giao diện cốt lõi này vận hành thực tế và chịu được tải cao điểm bằng TypeScript không chỉ là vấn đề tốc độ. Nó giảm trở ngại trong cả phát triển và vận hành, cho phép các nhóm liên tục cải thiện hệ thống mà không cần chuyển đổi stack hoặc viết lại logic cốt lõi.

Tái thiết kế starter code cho môi trường production

Trước đây, starter code chủ yếu là điểm khởi đầu cho thử nghiệm kết nối nhanh. Tuy nhiên, trong vận hành thực tế, các vấn đề như ngắt kết nối, kết nối lại, tính liên tục của luồng, trùng lặp hoặc thất thoát dữ liệu, lọc subscription và kiểm soát tải cao điểm là không thể tránh khỏi.
Nếu cấu trúc ban đầu quá nhẹ, những yêu cầu thực tế này thường được bổ sung manh mún về sau, làm cấu trúc trở nên chắp vá và tăng chi phí bảo trì dài hạn. Bản cập nhật này tổ chức lại starter code thành một nền tảng có thể chịu được yêu cầu vận hành thực tế ngay từ đầu.

Làm rõ điểm mở rộng qua tái cấu trúc

Ở phía TypeScript, các trách nhiệm đã được phân tách rõ ràng để xác định các điểm mở rộng. Điểm vào được giữ tối giản và tập trung vào kết nối và khởi tạo, trong khi logic xử lý được tách riêng trong các handler. Các hook như onTransaction và onAccount xác định các điểm tích hợp rõ ràng cho logic tùy chỉnh.
Cấu trúc này cho phép logic giao dịch, logic phát hiện, chính sách lọc và đích xuất dữ liệu được sửa đổi cục bộ và theo cách dễ dự đoán. Định nghĩa subscription cũng đã được thống nhất vào code TypeScript thay vì cấu hình dựa trên JSON, cải thiện khả năng đọc và an toàn kiểu. Các biểu thức dễ đọc như CommitmentLevel.PROCESSED giảm sai lệch cấu hình giữa code và hành vi runtime.

Xem độ ổn định vận hành là yêu cầu cốt lõi

Trong streaming tần suất cao, chỉ tốc độ là không đủ; khả năng chống chịu cũng quan trọng không kém. Bản cập nhật này tiếp tục cung cấp các cơ chế tích hợp như kiểm soát backpressure (hàng đợi giới hạn, ghi log sự kiện drop), các chỉ số về sự kiện đã nhận, đã xử lý và bị loại bỏ, keepalive kết nối (ping/pong), exponential backoff, và khôi phục phần dữ liệu bị gián đoạn dựa trên from_slot.
Đây không phải là cải tiến tùy chọn mà là yêu cầu nền tảng cho hệ thống streaming production. Coi starter code là Production-Ready có nghĩa là tích hợp các giả định này từ đầu thay vì thêm vào sau.

Đối tượng và trường hợp sử dụng

Bản cập nhật này dành cho các nhà phát triển muốn vận hành luồng Solana thời gian thực bằng TypeScript trong môi trường production, các nhóm xây dựng hệ thống phát hiện, giao dịch và giám sát độ trễ thấp với Yellowstone Geyser gRPC, và nhà phát triển gặp thách thức liên quan đến xử lý tải cao điểm và hành vi kết nối lại. Mục tiêu là nâng cao khả năng vận hành thực tế của streaming bằng TypeScript mà không hy sinh các ưu điểm vốn có.

Tham khảo

Các bản cập nhật cho Solana Stream SDK có sẵn trên GitHub. Validators DAO hoan nghênh phản hồi trên GitHub hoặc qua Discord chính thức của Validators DAO.
ERPC cung cấp hạ tầng streaming Solana trên nhiều khu vực. Với starter code Solana Stream SDK, nhà phát triển có thể kiểm tra hành vi trực tiếp trong môi trường Geyser gRPC thực tế. Thông qua bản dùng thử miễn phí của ERPC, nhà phát triển cũng có thể đánh giá SDK và hạ tầng streaming cùng nhau trong điều kiện gần với môi trường production. Thông tin chi tiết có trên trang web chính thức của ERPC.
Discord chính thức của Validators DAO: https://discord.gg/C7ZQSrCkYR Solana Stream SDK (GitHub): https://github.com/ValidatorsDAO/solana-stream Trang web chính thức của ERPC: https://erpc.global/vi/