Phát hành Memcached 1.6.0 có hỗ trợ bộ nhớ ngoài

diễn ra phát hành đáng kể hệ thống lưu trữ dữ liệu trong bộ nhớ Bản ghi nhớ 1.6.0, hoạt động trên dữ liệu ở định dạng khóa/giá trị và dễ sử dụng. Memcached thường đượ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 bằng cách lưu vào bộ đệm truy cập vào DBMS và dữ liệu trung gian. Mã số cung cấp theo giấy phép BSD.

Phiên bản mới ổn định việc thực hiện lưu trữ "cửa hàng mở rộng", hiện được xây dựng theo mặc định (để tắt trong tập lệnh định cấu hình, tùy chọn "-disable-extstore" được cung cấp), nhưng yêu cầu kích hoạt rõ ràng khi khởi động (các bản cài đặt cũ sẽ tiếp tục hoạt động mà không có thay đổi sau khi cập nhật). Mặc dù extstore thường được coi là ổn định nhưng vẫn nên thận trọng khi triển khai nó trên các hệ thống rất lớn.

Extstore cho phép bạn sử dụng ổ SSD/Flash để mở rộng kích thước bộ đệm. Giống như RAM, bộ lưu trữ Flash không tồn tại vĩnh viễn và được đặt lại khi khởi động lại. Phạm vi của chế độ mới là đảm bảo lưu trữ hiệu quả dữ liệu lớn vào bộ nhớ đệm. Khi sử dụng "extstore", các khóa và siêu dữ liệu, như trước đây, chỉ được lưu trữ trong RAM, nhưng dữ liệu lớn được liên kết với các khóa, kích thước vượt quá ngưỡng đã đặt, được lưu trữ trong bộ nhớ ngoài và chỉ con trỏ vẫn còn trong RAM.

Nếu key được liên kết với dữ liệu nhỏ thì Memcached hoạt động như bình thường, giữ dữ liệu trong bộ nhớ và không truy cập bộ nhớ ngoài. Nếu có nhiều bộ nhớ trống, thì dữ liệu cần thiết nhất cũng có thể được đặt hoàn toàn trong bộ đệm trong RAM (ví dụ: bạn có thể chỉ định rằng chỉ những đối tượng lớn hơn 1024 byte chưa được truy cập trong 3600 giây mới được đặt lại thành Flash ).

Việc triển khai được tối ưu hóa để đảm bảo hiệu suất tối đa và tải CPU tối thiểu, nhưng lại làm giảm hiệu quả lưu trữ (mức độ phân mảnh cao). Để kéo dài tuổi thọ của ổ Flash, dữ liệu sẽ được đệm và chuyển vào bộ lưu trữ một cách tuần tự. Để lưu trạng thái bộ đệm giữa các lần khởi động lại, bạn có thể sử dụng khả năng xuất hiện trong bản phát hành 1.5.18 để kết xuất kết xuất bộ đệm vào một tệp. Ở lần khởi động tiếp theo, bạn có thể khôi phục bộ đệm từ tệp này để loại bỏ mức tải tối đa của bộ xử lý nội dung do bộ đệm trống (bộ đệm ngay lập tức trở nên “ấm”).

Thay đổi quan trọng thứ hai trong Memcached 1.6 là việc làm lại mã giao tiếp mạng, mã này được điều chỉnh để tự động xử lý các yêu cầu hàng loạt trong một lệnh gọi hệ thống. Trước đây, khi gửi nhiều lệnh GET trong một gói TCP, memcached sẽ gửi kết quả bằng các lệnh gọi hệ thống riêng biệt. Trong Memcached 1.6, các phản hồi được tổng hợp và trả về bằng cách gửi một lệnh gọi hệ thống. Kết quả là hiện có trung bình 1.5 phím cho mỗi cuộc gọi hệ thống, trong các thử nghiệm cho thấy mức tải CPU giảm tới 25% và độ trễ giảm vài phần trăm.

Việc thiết kế lại hệ thống con mạng cũng giúp có thể chuyển sang phân bổ bộ đệm động khi cần thiết, thay vì chỉ định bộ đệm tĩnh. Tối ưu hóa này giúp giảm mức tiêu thụ bộ nhớ trong khi chờ lệnh mới thông qua kết nối do máy khách thiết lập từ 4.5 KB xuống 400-500 byte, đồng thời giúp loại bỏ nhiều lệnh gọi tới malloc, realloc và free, dẫn đến phân mảnh bộ nhớ không cần thiết trên hệ thống có số lượng kết nối lớn. Mỗi luồng công nhân hiện xử lý nhóm bộ đệm đọc và ghi riêng cho các kết nối máy khách đang hoạt động. Để điều chỉnh kích thước của các bộ đệm này
các tùy chọn “-o resp_obj_mem_limit=N” và “-o read_buf_mem_limt=N” được cung cấp.

Chi nhánh 1.6 cũng thông báo ngừng sử dụng giao thức nhị phân tương tác với máy chủ. Việc bảo trì giao thức nhị phân và sửa lỗi sẽ tiếp tục nhưng các tính năng mới và bản cập nhật cho các tính năng hiện có sẽ không được chuyển. Giao thức văn bản sẽ tiếp tục phát triển mà không có sự thay đổi. Giao thức nhị phân đã được thay thế bằng giao thức mới meta (phiên bản văn bản của giao thức với các lệnh meta nhỏ gọn), thể hiện sự kết hợp tối ưu giữa hiệu suất và độ tin cậy. Giao thức mới bao gồm tất cả các hoạt động có sẵn trước đây thông qua giao thức văn bản và nhị phân.

Nguồn: opennet.ru

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