Dự án Dragonfly đang phát triển giải pháp thay thế nhanh hơn cho Redis và Memcached

Đã có bản phát hành đầu tiên của hệ thống bộ nhớ đệm trong bộ nhớ Dragonfly, hỗ trợ các giao thức Memcached và Redis nhưng cho phép thực thi các truy vấn với hiệu suất cao hơn nhiều và tiêu thụ ít bộ nhớ hơn. Hệ thống xử lý dữ liệu ở định dạng khóa/giá trị và có thể được sử dụng như một giải pháp nhẹ để tăng tốc công việc của các trang web có tải trọng cao, lưu vào bộ nhớ đệm các truy vấn chậm tới DBMS và dữ liệu trung gian trong RAM. Mã Dragonfly được viết bằng C/C++ và được phân phối theo BSL (Giấy phép Nguồn Kinh doanh).

Giấy phép BSL được những người đồng sáng lập MySQL đề xuất như một giải pháp thay thế cho mô hình Open Core. Bản chất của BSL là mã chức năng nâng cao ban đầu có sẵn để sửa đổi, nhưng trong một thời gian, chỉ có thể được sử dụng miễn phí nếu đáp ứng các điều kiện bổ sung, yêu cầu phải mua giấy phép thương mại để vượt qua. Các điều khoản cấp phép bổ sung của dự án Dragonfly yêu cầu mã chỉ được chuyển sang giấy phép Apache 2.0 vào ngày 1 tháng 2027 năm XNUMX. Cho đến thời điểm này, giấy phép chỉ cho phép sử dụng mã để đảm bảo hoạt động của các dịch vụ và sản phẩm của mình, nhưng cấm sử dụng để tạo các dịch vụ đám mây trả phí hoạt động như một tiện ích bổ sung cho Dragonfly.

Theo các nhà phát triển và thử nghiệm đã được chứng minh, Dragonfly tuyên bố là hệ thống lưu trữ bộ nhớ nhanh nhất. So với Redis, Dragonfly đạt hiệu suất tăng gấp 25 lần và giảm mức tiêu thụ bộ nhớ gấp ba lần đối với khối lượng công việc thông thường. Một máy chủ Dragonfly có thể xử lý hàng triệu yêu cầu mỗi giây, ví dụ: trong môi trường Amazon EC2 c6gn.16xlarge, có thể đạt được hiệu suất 3.8 triệu yêu cầu mỗi giây.

Dự án Dragonfly đang phát triển giải pháp thay thế nhanh hơn cho Redis và Memcached

Trong các thử nghiệm lưu trữ 5 GB dữ liệu, Dragonfly yêu cầu bộ nhớ ít hơn 30% so với Redis. Khi tạo ảnh chụp nhanh bằng lệnh “bgsave”, mức tiêu thụ bộ nhớ tăng lên, nhưng vào những thời điểm cao điểm, nó vẫn ít hơn gần ba lần so với trong Redis và bản thân thao tác ghi ảnh chụp nhanh cũng nhanh hơn nhiều (trong thử nghiệm, ảnh chụp nhanh trong Dragonfly được viết bằng 30 giây, trong khi Redis - trong 42 giây).

Dự án Dragonfly đang phát triển giải pháp thay thế nhanh hơn cho Redis và Memcached

Đạt được hiệu suất cao nhờ kiến ​​trúc đa luồng không chia sẻ tài nguyên (không chia sẻ gì), nghĩa là mỗi luồng được chỉ định một bộ xử lý riêng biệt với phần dữ liệu riêng, hoạt động mà không cần mutexes và spin lock. Để đảm bảo tính nguyên tử khi làm việc với nhiều phím, khóa VLL nhẹ được sử dụng. Để lưu trữ thông tin trong bộ nhớ một cách hiệu quả, cấu trúc bảng điều khiển được sử dụng, cấu trúc này thực hiện một loại bảng băm được phân vùng.

Trong số các tính năng có sẵn trong bản phát hành đầu tiên, có hỗ trợ cho giao thức RESP2 và 130 lệnh Redis, gần tương ứng với chức năng của bản phát hành Redis 2.8. Ngoài ra, Dragonfly hỗ trợ tất cả các lệnh memcached ngoại trừ CAS (kiểm tra và đặt), cung cấp hỗ trợ cho các hoạt động không đồng bộ để tạo ảnh chụp nhanh, cung cấp mức tiêu thụ bộ nhớ có thể dự đoán được, cung cấp trình thông dịch Lua 5.4 tích hợp và hỗ trợ các loại dữ liệu phức tạp như băm, bộ và danh sách (ZSET, HSET, LIST, SETS và STRING).

Chế độ bộ nhớ đệm có sẵn riêng biệt, chế độ này tự động thay thế dữ liệu cũ bằng dữ liệu mới sau khi hết bộ nhớ trống. Có thể gắn trọn đời vào dữ liệu trong thời gian đó dữ liệu được coi là có liên quan. Trạng thái lưu trữ có thể được xóa vào đĩa ở chế độ nền để phục hồi sau khi khởi động lại. Để quản lý hệ thống, bảng điều khiển HTTP được cung cấp (liên kết với cổng TCP 6379) và API để trả về số liệu, tương thích với Prometheus. Trong các phiên bản tương lai, chúng tôi dự định mở rộng hỗ trợ cho các lệnh Redis và triển khai khả năng sao chép lưu trữ để có khả năng chịu lỗi và cân bằng tải.

Nguồn: opennet.ru

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