Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis

Microsoft đã mở nguồn hệ thống NoSQL Garnet, được thiết kế để tạo các kho lưu trữ bộ nhớ đệm và tương thích với các thư viện máy khách hiện có để lưu trữ Redis. Garnet hỗ trợ tạo các cụm bộ nhớ đệm dữ liệu có thể mở rộng, có thể sử dụng tính năng sao chép, di chuyển khóa và phân chia dữ liệu trên các nút cụm. Dự án được viết bằng C# với lõi lưu trữ bằng C++, được mở theo giấy phép MIT và có thể chạy trên tất cả các nền tảng được .NET hỗ trợ (nền tảng chính là Linux và Windows).

Để lưu trữ dữ liệu, công cụ Tsavorite (một nhánh của bộ lưu trữ Microsoft FASTER) được sử dụng, hỗ trợ xử lý truy vấn đa luồng, giao dịch, sửa các thay đổi ở chế độ không chặn (điểm kiểm tra), phục hồi sau lỗi, lưu bản sao dự phòng và duy trì nhật ký hoạt động. Công cụ mạng trong Garnet được xây dựng bằng kiến ​​trúc bộ nhớ dùng chung do dự án nghiên cứu ShadowFax đề xuất. Việc xử lý TLS và tương tác với bộ lưu trữ được thực hiện trong một luồng duy nhất, giúp tránh được chi phí chuyển đổi luồng và sử dụng bộ đệm CPU hiệu quả hơn khi truyền dữ liệu qua mạng.

Kiến trúc Garnet tách biệt logic để phân tích cú pháp và xử lý các yêu cầu khỏi các hoạt động lưu trữ. Dữ liệu được lưu trữ bằng hai kho lưu trữ khóa-giá trị dựa trên thư viện Tsavorite. Kho "chính" đầu tiên được tối ưu hóa cho các hoạt động chuỗi nhanh và kho "đối tượng" thứ hai được tối ưu hóa để chứa các đối tượng phức tạp và các loại dữ liệu nâng cao như hàm băm và danh sách. Các kiểu dữ liệu trong bộ lưu trữ thứ hai được triển khai bằng thư viện .NET. Dữ liệu được lưu trữ trên heap (C# heap), cho phép nó được cập nhật một cách hiệu quả và ở dạng tuần tự hóa trên đĩa.

Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis

Đặc điểm của Garnet:

  • Có thể triển khai lưu trữ nhiều tầng, RAM mở rộng, ổ SSD và lưu trữ đám mây, trong đó dữ liệu có nhu cầu ít hơn được đẩy vào bộ lưu trữ chậm để tạo bộ đệm lớn hơn RAM.
  • Hỗ trợ thiết bị mở rộng, cho phép tạo các lớp được tối ưu hóa để hoạt động với các thiết bị khác nhau, ví dụ: có các lớp dành cho SDD, ổ cứng và bộ lưu trữ đám mây Azure Storage.
  • Một cơ chế hiệu quả để tái sử dụng không gian trống trong RAM, ngăn ngừa sự phân mảnh.
  • Giới hạn có thể định cấu hình về kích thước bộ nhớ được sử dụng cho chỉ mục, nhật ký và lưu trữ đối tượng.
  • Giao thức RESP được sử dụng để truy cập vào bộ lưu trữ, cho phép sử dụng Garnet với các máy khách Redis chưa sửa đổi.
  • Hỗ trợ lưu trữ cả giá trị chuỗi và cấu trúc dữ liệu phức tạp như danh sách, hàm băm, bộ, danh sách được sắp xếp và dữ liệu vị trí địa lý. Khả năng xác định tuổi thọ của khóa.
  • Tính khả dụng của API để thực hiện các truy vấn phân tích (HLL/Hyperloglog, Bitmap), giao dịch (MULTI/EXEC) và sử dụng mô hình xuất bản/đăng ký.
  • Có sẵn các phương tiện để kiểm soát truy cập linh hoạt thông qua ACL.
  • Khả năng xác định cấu hình ở định dạng JSON hoặc redis.conf.
  • Hỗ trợ kết nối các trình xử lý mạng bổ sung. Khả năng mã hóa lưu lượng truy cập bằng TLS (dựa trên SslStream).
  • Khả năng tạo các tiện ích mở rộng trong C# để triển khai các thao tác bổ sung với chuỗi và đối tượng.
  • Hỗ trợ các thủ tục lưu trữ giao dịch trải rộng trên nhiều khóa.
  • Khả năng khôi phục trạng thái từ vị trí đã lưu trước đó (khôi phục điểm kiểm tra). Sự hiện diện của chế độ tệp chỉ nối thêm (AOF, tệp chỉ nối thêm), trong đó tất cả dữ liệu cũ vẫn có sẵn và không được thay thế.
  • Hỗ trợ tạo cụm lưu trữ với tính năng sao chép, phân chia, di chuyển khóa động giữa các nút và khôi phục các nút bị lỗi.
  • Hiệu suất cao và độ trễ thấp khi thực hiện truy vấn. Xử lý hiệu quả các yêu cầu hàng loạt nhỏ qua số lượng lớn phiên khách hàng, cho phép bạn đạt được thông lượng (số lượng yêu cầu được xử lý mỗi giây) cao hơn nhiều so với các giải pháp cạnh tranh. Khi chạy trên máy ảo trên đám mây Azure, trong hầu hết các trường hợp, độ trễ của máy khách không vượt quá 300 micro giây. Trong các thử nghiệm của chúng tôi, Garnet vượt trội hơn đáng kể so với Redis, Dragonfly và KeyDB về hiệu suất và khả năng phản hồi. Trong một số thử nghiệm, Garnet vượt trội hơn các hệ thống cạnh tranh tới mười lần.
    Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis
    Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis
    Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis
    Bộ lưu trữ Garnet nguồn mở của Microsoft tương thích với Redis

Nguồn: opennet.ru

Thêm một lời nhận xét