Độ trễ dưới 100ms: Hóa ra bí mật của RisingWave nằm ở việc 'chia tay' RocksDB và 'kết hôn' với S3!
Lê Lân
0
Hệ Thống Xử Lý Dòng Dữ Liệu Cloud-Native: Giải Pháp Đột Phá Với RisingWave
Mở Đầu
Trong kỷ nguyên số hóa, xử lý dòng dữ liệu (stream processing) đã trở thành một phần không thể thiếu trong nhiều lĩnh vực như quảng cáo trực tuyến, giao dịch tài chính, an ninh mạng, và cá cược thể thao. Ở những lĩnh vực này, độ trễ xử lý kết quả càng thấp càng mang lại giá trị kinh doanh trực tiếp. Tuy nhiên, để đảm bảo hệ thống hoạt động ổn định và hiệu quả ở quy mô lớn, đặc biệt trên nền tảng đám mây, kiến trúc hệ thống cần được thiết kế lại triệt để. Các hệ thống dựa trên ổ cứng cục bộ và cơ sở dữ liệu nhúng như RocksDB đang dần bộc lộ giới hạn.
RisingWave là một cơ sở dữ liệu streaming hiệu năng cao được xây dựng bằng Rust, tương thích PostgreSQL, cho phép người dùng sử dụng chuẩn SQL để viết các logic xử lý phức tạp mà không cần học ngôn ngữ đặc thù mới. Từ đầu, RisingWave đã định hướng phát triển theo kiểu cloud-native với S3 làm lớp lưu trữ chính, loại bỏ hoàn toàn việc phụ thuộc vào ổ cứng cục bộ hay RocksDB.
Bài viết này sẽ phân tích chi tiết kiến trúc độc đáo của RisingWave, các thách thức của mô hình cũ, và cách hệ thống mới ứng dụng S3, cache thông minh, cùng cơ chế compact từ xa để đảm bảo độ trễ thấp cùng khả năng mở rộng cao trong môi trường đám mây.
Lý Do Chọn S3 Là Lớp Lưu Trữ Tính Trưởng Thành Và Đáng Tin Cậy
Đặc Điểm Và Lợi Ích Của S3
S3 có độ bền và tính sẵn sàng cao với khả năng chịu lỗi liên vùng sẵn có.
Dung lượng gần như không giới hạn, phù hợp với khối lượng dữ liệu lưu trữ khổng lồ.
Được tích hợp mặc định trong hầu hết các nền tảng đám mây hiện nay.
Giúp tách biệt hoàn toàn phần tính toán và lưu trữ.
Điểm then chốt:GTốc độ không phải là ưu tiên của S3, mà là sự đơn giản và độ tin cậy. Điều này giúp hệ thống vận hành linh hoạt, dễ phục hồi và mở rộng.
Những Hạn Chế Khi Dùng S3
Độ trễ đuôi (tail latency) không ổn định, có thể lên đến 200-300ms hoặc hơn, không phù hợp cho luồng dữ liệu real-time.
Chi phí request cao do luồng xử lý thường xuyên đọc/ghi nhiều dữ liệu nhỏ lẻ.
Không thể đọc trực tiếp từ S3 khi thực thi truy vấn — S3 chỉ dùng làm lớp lưu trữ bền vững, không phải con đường truy vấn.
Kiến Trúc Lưu Trữ 3 Tầng
Để tận dụng ưu điểm của S3 mà giảm thiểu nhược điểm, RisingWave triển khai kiến trúc ba tầng:
Bộ đệm trong bộ nhớ (in-memory cache)
Bộ đệm ổ cứng cục bộ (local disk cache)
Lưu trữ bền vững trên S3
Tại Sao Các Hệ Thống Dựa Trên RocksDB Không Phù Hợp Với Đám Mây
Kiến Trúc RocksDB Truyền Thống
RocksDB giữ trạng thái trên ổ cứng cục bộ, tính toán đồng bộ với đĩa.
Kiểu kiến trúc này hoạt động tốt với các hệ thống đơn tenant, trên môi trường máy chủ truyền thống.
Hạn Chế Khi Mở Rộng Và Đám Mây
Phụ thuộc vào đĩa nội bộ gây khó khăn trong mở rộng theo chiều ngang và tính khả dụng đa vùng (cross-AZ).
Khi mở rộng hoặc sự cố, việc di chuyển và tái tạo trạng thái gây độ trễ và mất thời gian.
Tiến trình compaction tiêu tốn CPU và I/O cùng lúc với truy vấn, làm tăng độ trễ và gây ra gián đoạn.
Không hỗ trợ gọn gàng các tính năng multi-tenancy, phân tách trạng thái sạch sẽ, và xử lý phức tạp.
Điều quan trọng:RocksDB không phải được thiết kế cho môi trường đám mây native với các yêu cầu về độ trễ thấp và quy mô lớn.
Hummock: Kiến Trúc Lưu Trữ Nhà Mới Thay Thế RocksDB
Giới Thiệu Hummock
Hummock là engine lưu trữ được xây dựng lại hoàn toàn, thiết kế cho stream processing và object storage (như S3) với mô hình LSM-tree.
Kiến Trúc Ba Tầng Của Hummock
Bộ nhớ trong: tốc độ truy cập nhanh nhất, ưu tiên dữ liệu nóng.
Cache đĩa: lưu trữ dữ liệu ở tầng trung gian, nhằm giảm tần suất truy cập S3.
S3: nơi lưu trữ dữ liệu bền vững, không tham gia vào truy vấn trực tiếp.
Mỗi barrier checkpoint tạo snapshot mới, đảm bảo cách biệt phiên bản cho truy vấn.
Dữ liệu trạng thái lưu dưới dạng SST immutable, được tải lên S3.
Hệ thống theo dõi metadata, phục vụ indexing và compaction.
Ưu Điểm Đặc Biệt
Tích hợp chặt chẽ với cache đĩa giúp mọi truy vấn luôn đọc trên bộ đệm, tránh truy vấn trực tiếp tới S3.
Hỗ trợ phân tán native, mở rộng dễ dàng, phục hồi nhanh mà không cần tải lại trạng thái.
Phần việc compaction được tách biệt hoàn toàn so với luồng truy vấn.
Remote Compaction: Giữ Cho Đường Truy Vấn Luôn “Sạch”
Áp Lực Khi Compaction Truyền Thống
RocksDB compaction diễn ra trên cùng node với truy vấn, dẫn đến cạnh tranh tài nguyên.
Gây hiện tượng độ trễ giật cục, backpressure và mất ổn định hệ thống.
Không phù hợp với luồng dữ liệu thời gian thực cần độ trễ thấp và ổn định.
Giải Pháp Compaction Từ Xa Của RisingWave
Compaction được thực hiện trên những node riêng biệt (compactor nodes).
Các node này rút dữ liệu từ S3, xử lý nền, sau đó đẩy kết quả trở lại S3.
Tách biệt hoàn toàn với luồng truy vấn, đảm bảo độ trễ ổn định.
Trong môi trường RisingWave Cloud, compaction chạy serverless, tài nguyên tự động bật tắt, đảm bảo tiết kiệm chi phí và cách ly tenant tốt.
Lựa Chọn Storage Cache: Vì Sao Dùng EBS Thay Vì NVMe?
Tiêu chí
NVMe Local Disk
AWS io2 EBS Block Storage
Hiệu năng
Rất cao, độ trễ thấp
Tốt, ổn định nhưng chậm hơn NVMe
Khả năng mở rộng
Cố định, không thể thay đổi
Linh hoạt mở rộng
Độ bền dữ liệu
Mất khi instance dừng
Dữ liệu tồn tại ngay cả khi dừng
Hỗ trợ nhiều instance
Có giới hạn cao
Hầu hết instance hỗ trợ
Chi phí vận hành
Phức tạp, rủi ro cao
Dễ quản lý, ổn định
Mặc dù NVMe có hiệu năng tốt hơn, chúng tôi chọn EBS làm mặc định nhằm đảm bảo sự ổn định vận hành, khả năng mở rộng linh hoạt và đa dạng môi trường đám mây.
Foyer: Hệ Thống Quản Lý Bộ Nhớ Đệm Ổ Đĩa Thông Minh
Vai Trò Của Foyer
Quản lý toàn diện I/O trên ổ đĩa cục bộ.
Điều phối chính sách đẩy và thu hồi bộ nhớ đệm dựa trên độ “nóng” của dữ liệu.
Theo dõi tỷ lệ truy cập (hit rate) thực tế để tối ưu hiệu quả cache.
Cách Foyer Hoạt Động
Trước khi truy vấn đụng chạm đến S3, dữ liệu luôn được kiểm tra qua bộ nhớ trong rồi đến cache ổ đĩa.
Chỉ khi dữ liệu không có trong cache mới truy cập S3.
Phân biệt trạng thái nóng và lưu trữ dựa trên cấu trúc DAG truy vấn, ưu tiên giữ dữ liệu nóng trên đĩa.
Giúp giảm chi phí truy cập S3 và giữ độ trễ ổn định.
Quy trình tách biệt rõ ràng ba lớp:
Tính toán (compute)
Bộ nhớ đệm Ổ đĩa (disk cache)
Lưu trữ đối tượng (object storage)
đây chính là chìa khóa để đạt được độ trễ thấp, khả năng mở rộng và tin cậy cho RisingWave.
Kết Luận
RisingWave đại diện cho một bước chuyển mình quan trọng trong lĩnh vực xử lý dòng dữ liệu trên nền đám mây. Bằng cách xây dựng lại hoàn toàn kiến trúc lưu trữ trạng thái, thay thế RocksDB bằng Hummock cùng hệ thống cache thông minh Foyer, và chuyển compaction thành công việc tách biệt thực thi từ xa, hệ thống không chỉ vượt qua các giới hạn truyền thống mà còn đạt được mức độ trễ dưới 100ms một cách ổn định.
Nếu bạn đang tìm kiếm giải pháp stream processing hiện đại, có khả năng mở rộng linh hoạt, hoạt động hiệu quả trên môi trường điện toán đám mây, RisingWave chắc chắn là một lựa chọn đáng cân nhắc.
Hãy trải nghiệm sức mạnh của nền tảng stream processing được thiết kế riêng cho đám mây – nơi hiệu suất, độ tin cậy và khả năng mở rộng hòa quyện trong một hệ thống duy nhất!