Cộng đồng công nghệ đang tích cực thảo luận về các phương pháp khác nhau để giải quyết vấn đề độ trễ của S3 sau khi RisingWave công bố chi tiết về giải pháp cache lai có tên Foyer. Trong khi S3 cung cấp khả năng lưu trữ không giới hạn với chi phí thấp, độ trễ 50-150ms khiến nó không phù hợp cho các ứng dụng thời gian thực cần truy cập dữ liệu nhanh.
So sánh độ trễ giữa S3 và lưu trữ cục bộ
- Thời gian đến byte đầu tiên của S3 : 50-150ms
- Truy cập bộ nhớ: ~0ms
- Truy cập đĩa: 0.2-1ms
- S3 Express One Zone : Vài millisecond
Swap so với quản lý cache rõ ràng
Một cuộc tranh luận chính nổi lên xung quanh việc liệu các nhà phát triển có cần hệ thống cache phức tạp hay có thể dựa vào các giải pháp đơn giản hơn. Một số nhà phát triển cho rằng việc sử dụng bộ nhớ hệ thống với swap cung cấp giao diện thống nhất mà không cần quản lý cache rõ ràng. Materialize.com được báo cáo đã chuyển từ quản lý cache ổ đĩa tùy chỉnh sang sử dụng swap và thấy cải thiện hiệu suất đáng kể. Phương pháp này cho phép hệ điều hành tự động xử lý việc chuyển bộ nhớ xuống ổ đĩa.
Tuy nhiên, những người khác chỉ ra những nhược điểm nghiêm trọng với phương pháp swap. Đối với các khối lượng công việc nhạy cảm với độ trễ, lỗi trang và swap tạo ra những đột biến hiệu suất không thể dự đoán làm tổn hại thời gian phản hồi. Nhiều môi trường sản xuất cố ý vô hiệu hóa swap để ngăn chặn những vấn đề này, khiến việc quản lý cache rõ ràng trở nên đáng tin cậy hơn trong các kịch bản triển khai khác nhau.
Chiến lược Quản lý Cache
- Quản lý Rõ ràng: Điều phối cache bộ nhớ và đĩa tùy chỉnh
- Dựa trên Swap: Để hệ điều hành tự động xử lý việc chuyển bộ nhớ xuống đĩa
- Phương pháp Kết hợp: Kết hợp cache bộ nhớ với các lớp cache đĩa
- Đánh đổi: Độ phức tạp so với khả năng dự đoán hiệu suất
Tác động hiệu suất thực tế
Sự khác biệt hiệu suất giữa S3 và lưu trữ cục bộ là đáng kể. Thời gian đến byte đầu tiên của S3 dao động từ 50-150ms, trong khi phục vụ từ bộ nhớ giảm xuống gần bằng không, và truy cập ổ đĩa chỉ mất 0.2-1ms. Khoảng cách lớn này giải thích tại sao cache trở thành thiết yếu thay vì tùy chọn cho các ứng dụng được xây dựng trên S3.
AWS cung cấp S3 Express One Zone với độ trễ hàng mili giây một chữ số, nhưng dịch vụ cao cấp này nhắm đến các trường hợp sử dụng khác nhau nơi cùng một đối tượng cần truy cập thường xuyên trên nhiều instance. Đối với truy cập lặp lại một instance, cache cục bộ vẫn hiệu quả về chi phí hơn.
Các giải pháp mã nguồn mở đang được chú ý
Một số dự án đang xây dựng dựa trên Foyer, thư viện cache lai dựa trên Rust được lấy cảm hứng từ CacheLib của Facebook. Distributed Chroma sử dụng Foyer rộng rãi trong cơ sở dữ liệu vector mã nguồn mở của họ, trong khi các nhà phát triển khác đã tích hợp nó vào hệ thống tập tin và dịch vụ lưu trữ. Thư viện cung cấp cả chế độ trong bộ nhớ và lai, cho phép các nhà phát triển bắt đầu đơn giản và thêm cache ổ đĩa sau này mà không thay đổi logic ứng dụng.
Tính năng Foyer Hybrid Cache
- Được viết bằng Rust , lấy cảm hứng từ CacheLib của Facebook
- Hỗ trợ cả chế độ in-memory và hybrid
- Trừu tượng hóa bộ nhớ đệm in-memory với zero-copy
- Nhiều disk engine cho các workload khác nhau
- Được sử dụng bởi Distributed Chroma và các dự án mã nguồn mở khác
Cân nhắc chi phí và đánh đổi
Trong khi các yêu cầu GET của S3 tương đối rẻ, chi phí thực sự đến từ tác động độ trễ lên hiệu suất ứng dụng thay vì giá yêu cầu. Sự phức tạp của hệ thống cache lai đòi hỏi lập kế hoạch cẩn thận xung quanh việc vô hiệu hóa cache, hành vi write-through, và xử lý các yêu cầu đồng thời cho cùng một dữ liệu.
Cuộc thảo luận tiết lộ rằng việc lựa chọn giữa các chiến lược cache khác nhau phụ thuộc rất nhiều vào yêu cầu khối lượng công việc cụ thể, ràng buộc triển khai, và mục tiêu hiệu suất. Khi nhiều ứng dụng áp dụng kiến trúc S3-first, những quyết định cache này trở nên ngày càng quan trọng để duy trì trải nghiệm người dùng chấp nhận được.
Tham khảo: The Case for Hybrid Cache for Object Stores