Công nghệ lưu trữ bộ nhớ đệm từ xa mới của Microsoft Research 'Garnet'
(github.com/microsoft)-
Giới thiệu Garnet
- Garnet, một kho lưu trữ bộ nhớ đệm từ xa mới do Microsoft Research phát triển, mang lại nhiều lợi thế độc đáo.
- Dựa trên giao thức dây RESP phổ biến, nên có thể sử dụng các Redis client có sẵn trong hầu hết ngôn ngữ lập trình mà không cần chỉnh sửa.
- Cung cấp thông lượng và khả năng mở rộng tốt hơn với nhiều kết nối client và các tác vụ xử lý theo lô nhỏ, góp phần giảm chi phí cho các ứng dụng và dịch vụ quy mô lớn.
- Đạt độ trễ phía client rất thấp (ở mức 99,9% dưới 300 micro giây) khi sử dụng Azure cloud VM có bật accelerated TCP.
- Được xây dựng trên công nghệ .NET hiện đại, Garnet có thiết kế đa nền tảng, có khả năng mở rộng và hiện đại.
- Tận dụng hệ sinh thái thư viện phong phú của .NET để mở rộng phạm vi API và tạo ra nhiều cơ hội tối ưu hóa mở.
-
Tóm tắt tính năng
- Garnet triển khai nhiều API khác nhau, bao gồm thao tác chuỗi thô, phân tích và đối tượng.
- Có thể xử lý giao dịch đa khóa thông qua giao dịch RESP phía client và stored procedure phía server được viết bằng C#.
- Người dùng có thể tận dụng sự tiện lợi và an toàn của C# để định nghĩa các thao tác tùy chỉnh cho chuỗi thô và các kiểu đối tượng mới.
-
Xem trước hiệu năng
- Website đưa ra một số kết quả chính khi so sánh Garnet với các kho lưu trữ bộ nhớ đệm mã nguồn mở hàng đầu.
-
Điểm nổi bật trong thiết kế
- Thiết kế của Garnet xem xét lại toàn bộ stack của kho lưu trữ bộ nhớ đệm, từ việc nhận packet trên mạng đến phân tích và xử lý thao tác cơ sở dữ liệu, cũng như thực hiện tương tác với lớp lưu trữ.
- Lớp mạng của Garnet kế thừa thiết kế shared memory lấy cảm hứng từ nghiên cứu trước đó là ShadowFax.
- Thiết kế lưu trữ của Garnet gồm hai kho key-value Tsavorite được quyết định bởi một operation log hợp nhất.
-
Chế độ cluster
- Ngoài chạy trên một node đơn, Garnet còn hỗ trợ chế độ cluster để tạo và quản lý các triển khai sharding và replication.
- Cluster hiện vẫn đang trong quá trình hoàn thiện.
-
Bước tiếp theo
- Có thể truy cập trang tài liệu hoặc chuyển trực tiếp đến phần bắt đầu hoặc phần phát hành.
-
Giấy phép
- Dự án này được cấp phép theo giấy phép MIT, có thể tham khảo tệp LICENSE.
-
Quyền riêng tư
- Thông tin về quyền riêng tư có thể được tìm thấy trên website quyền riêng tư của Microsoft.
-
Đóng góp
- Dự án này hoan nghênh các đóng góp và đề xuất; với hầu hết đóng góp, bạn cần đồng ý với CLA.
- Dự án đã áp dụng Bộ quy tắc ứng xử mã nguồn mở của Microsoft; có thể tham khảo FAQ của bộ quy tắc ứng xử hoặc liên hệ opencode@microsoft.com nếu có thêm câu hỏi hay ý kiến.
-
Thương hiệu
- Dự án này có thể bao gồm nhãn hiệu hoặc logo cho dự án, sản phẩm hoặc dịch vụ; việc sử dụng nhãn hiệu hoặc logo của Microsoft phải tuân theo hướng dẫn về nhãn hiệu và thương hiệu của Microsoft.
Ý kiến của GN⁺
- Garnet là một kho lưu trữ bộ nhớ đệm mới tương thích với các Redis client hiện có, đồng thời mang lại hiệu năng và khả năng mở rộng cao hơn, nên có thể hấp dẫn với các doanh nghiệp vận hành dịch vụ đám mây quy mô lớn.
- Cần có dữ liệu dài hạn để đánh giá công nghệ này hoạt động ổn định đến mức nào trong môi trường thực tế, cũng như nó mang lại những lợi ích thực chất gì so với các giải pháp bộ nhớ đệm hiện có.
- Việc chế độ cluster của Garnet vẫn đang được phát triển có thể là một yếu tố quan trọng cần cân nhắc với những người dùng đang tính đến triển khai quy mô lớn.
- Vì Garnet được cung cấp dưới dạng mã nguồn mở, cộng đồng có thể đóng góp thêm nhiều tính năng và cải tiến, qua đó giúp nâng cao mức độ trưởng thành của công nghệ.
- Trước khi triển khai Garnet, cần cân nhắc khả năng tương thích với hệ thống hiện có, chi phí so với mức tăng hiệu năng, và cả chi phí di trú tiềm ẩn.
1 bình luận
Ý kiến trên Hacker News
Theo biểu đồ hiệu năng benchmark, thông lượng xử lý lệnh GET của Garnet cao hơn Dragonfly hơn 10 lần. Độ trễ p50 hơi cao hơn Dragonfly một chút, nhưng độ trễ p99 lại thấp hơn Dragonfly một chút. Thông lượng và độ trễ của Garnet và Dragonfly đều vượt trội hơn hẳn Redis, cho thấy Redis cần được tối ưu hiệu năng đáng kể.
Đây là tin rất đáng mừng cho những ai cần chạy Redis trực tiếp trên Microsoft Windows Server mà không phải phụ thuộc vào WSL2, hoặc dùng một hệ tương thích. Trước đây từng có một bản port Redis nay đã không còn được hỗ trợ, và nó gặp vấn đề về sử dụng bộ nhớ, được cho là chủ yếu do các file ánh xạ bộ nhớ.
Đây là một lựa chọn thay thế Redis có hiệu năng ấn tượng khi chạy trên các stack thực tế ngoài Azure. Tôi tò mò không biết nó thể hiện thế nào trong môi trường thực tế.
Thật thú vị khi thấy Microsoft và đội .NET xây dựng những dự án hạ tầng rất ấn tượng. Yarp đảm nhiệm reverse proxy/API gateway các kiểu, còn giờ thì có Garnet cho bộ nhớ đệm trong bộ nhớ.
Vì Garnet là đa luồng nên
MSETkhông mang tính nguyên tử. Nếu muốn một phiên bảnMSETcó tính nguyên tử thì phải biểu diễn nó bằng transaction (stored procedure).Nhìn các bình luận ở đây, có vẻ giờ không còn ai dùng memcached nữa sao?
Microsoft Research đôi khi đưa ra những dự án rất ấn tượng. Được làm R&D và vẫn nhận lương chắc hẳn rất thú vị. Tôi ước các tập đoàn lớn làm nhiều dự án kiểu R&D có ích cho ngành hơn nữa. Nếu Hashicorp được đưa ra thị trường thì hy vọng sẽ có một công ty tốt mua lại.
Dự án này trông thực sự rất ổn. Tôi hy vọng cuối cùng nó sẽ thay thế tài nguyên "Azure Cache for Redis". Hiện tại dịch vụ đó chậm, là một nhánh fork của Redis được làm để chạy trên Windows, và mất gần một giờ để khởi tạo instance.
Tôi tự hỏi hệ thống này hoạt động kém ở đâu. Tôi cũng muốn xem benchmark trên các loại instance nhỏ hơn. 72 vCPU là một instance khá lớn.