Memcache Là Gì

  -  
Understanding Memcached - Tìm hiểu về Memcached, các chính sách vận động ở memcached client, memcached server, các có mang Consistent Hashing, Slab Allocation, giải pháp lúc này LRU cùng Hash Table vào memcached hệ thống.

Bạn đang xem: Memcache là gì



Overview

Memcachedkhối hệ thống caching tài liệu phân tán, lưu trữ bên trên memory dạng key - value.

Dữ liệu lưu trữ dạng key-value cùng với key là string, value là một trong object (serializable)

Use-cases: lưu các API calls, database calls, page rendering, …

Features

Một số ưu điểm trong memcached:

Xử lý tốt vấn đề phân mhình ảnh vùng nhớ (memory fragments), quản lý vùng ghi nhớ kết quả.Có khả năng phân tán độc lập các memcached server.Giao tiếp tự 2 phía client cùng VPS đơn lẻ.

Design Philosophy

Các nguyên lý trong xây dựng của Memcached:

Key-Value dạng đơn giản và dễ dàng, cùng với key là string, value hoàn toàn có thể được serializedHalf in Client, Half in Server:client lựa chọn VPS nhằm tàng trữ dựa vào key qua hàm hash với list các serversVPS chỉ làm chủ những quý giá được lưu trữ cùng quản lý vùng lưu giữ của nóServers trong memcached là disconnected: no crosstalk, no syncronization, no broadcasting, no replicationForgetting is a Feature: cần sử dụng LRU, expiration time. Không sử dụng garbage collector bảo đảm an toàn độ trễ phải chăng, thực hiện lazy deletion.

Detail

Memcached Client

Các clients cần có thuộc config về menu các servers memcached, bao gồm cả con số cùng thứ trường đoản cú những servers. Về cơ bạn dạng, mỗi client dựa trên quý hiếm key, thực hiện hàm hash hợp lý, lấy module đến số lượng VPS để search index của VPS đảm nhận key kia.Consistent Hashing

Memcached client ra quyết định VPS nào được lựa chọn cho từng giá trị key thông qua hàm hash, dựa vào cực hiếm mod cho số servers hiện nay active. Do đó, khi bao gồm Việc thêm/giảm hệ thống memcached dẫn mang lại các giá trị key bị remapped trội lên, khiến cađậy miss, yêu cầu phải áp dụng Consistent Hashing để giảm sút việc shift những servers Lúc xảy ra vấn đề thêm/giảm memcached hệ thống.

Consistent Hashing là chuyên môn map từng key mang đến quý hiếm ko dựa vào vào số lượng servers biết trước, rời sử dụng phxay module Lúc kích thước N bị thay đổi.

Kỹ thuật này đưa vùng không khí quý hiếm khóa key lên 1 vòng tròn, map từng cực hiếm tới điểm gần nó độc nhất theo phía ngược hướng klặng đồng hồ đeo tay nlỗi hình dưới đây:



Nhỏng hình bên trên, các cực hiếm hash của những khóa được bản đồ lên một điểm bên trên vòng tròn.

Xem thêm: Khám Phá Các Loại Hình Giải Trí Pub Là Gì ? Pub Và Bar Khác Nhau Như Thế Nào?

Trong ngữ điệu Java, ta thực hiện tlỗi viện spymemcached-2.12.0 nhằm triển khai connect đến Memcached Server. Dưới đó là một số điều mình đã khám phá về thư viện này:

Trong spymemcached-2.12.0, khi khởi sinh sản một memcached client (mcc), cho phép ta config ConnectionFactory, hoặc thực hiện DefaultConnectionFactory của thư viện.

Mặc định DefaultConnectionFactory sử dụng ArrayModNodeLocator, một implementation của NodeLocator thực hiện lookup dựa vào module của hash code trên length của danh mục server.





Failover

Vấn đề failover Lúc xẩy ra crash server, client sẽ loop next bên trên hệ thống danh mục cho đến lúc tra cứu thấy hệ thống làm sao còn active sầu cùng map key ngày nay mang lại server này.

Compression

Memcached client cung ứng có thể chấp nhận được enable hoặc disable compression dựa vào threshold cho vật phẩm size.

Memcached Server

Multiple Instances: Memcached là 1 trong những distributed servers, cho nên vì thế rất có thể start những instance trên thuộc 1 host hoặc nhiều host.Networking: cung cấp TCP.. và UDPConnection limit với Threading.Slab Allocation

Memcached VPS làm chủ memory áp dụng slab allocator tránh phân mảnh vùng nhớ. Triết lý của kỹ thuật này là phân đoạn các vùng ghi nhớ đang cấp phép thành các chunks cùng với size được định ra trước đó.

Xem thêm: Link Tải Dynomite Deluxe Full Pc, Game Bắn Trứng Miễn Phí

Ví dụ Khi start memcached instance, với option -vv, ta sẽ thấy được những slab class được memcached phân đoạn như sau:


memcached -p 11112 -vvslab class 1: chunk kích thước 96 perslab 10922slab class 2: chunk form size 120 perslab 8738slab class 3: chunk kích cỡ 152 perslab 6898slab class 4: chunk form size 192 perslab 5461slab class 5: chunk kích thước 240 perslab 4369slab class 6: chunk kích thước 304 perslab 3449slab class 7: chunk form size 384 perslab 2730slab class 8: chunk kích cỡ 480 perslab 2184slab class 9: chunk kích cỡ 600 perslab 1747slab class 10: chunk size 752 perslab 1394slab class 11: chunk size 944 perslab 1110slab class 12: chunk kích thước 1184 perslab 885slab class 13: chunk form size 1480 perslab 708slab class 14: chunk kích cỡ 1856 perslab 564slab class 15: chunk form size 2320 perslab 451slab class 16: chunk size 2904 perslab 361slab class 17: chunk kích cỡ 3632 perslab 288slab class 18: chunk form size 4544 perslab 230slab class 19: chunk kích cỡ 5680 perslab 184slab class 20: chunk kích cỡ 7104 perslab 147slab class 21: chunk kích cỡ 8880 perslab 118slab class 22: chunk size 11104 perslab 94slab class 23: chunk kích thước 13880 perslab 75slab class 24: chunk kích thước 17352 perslab 60slab class 25: chunk kích cỡ 21696 perslab 48slab class 26: chunk kích cỡ 27120 perslab 38slab class 27: chunk kích thước 33904 perslab 30slab class 28: chunk kích cỡ 42384 perslab 24slab class 29: chunk size 52984 perslab 19slab class 30: chunk kích cỡ 66232 perslab 15slab class 31: chunk kích thước 82792 perslab 12slab class 32: chunk form size 103496 perslab 10slab class 33: chunk kích cỡ 129376 perslab 8slab class 34: chunk size 1617đôi mươi perslab 6slab class 35: chunk size 202152 perslab 5slab class 36: chunk kích cỡ 252696 perslab 4slab class 37: chunk form size 315872 perslab 3slab class 38: chunk kích cỡ 394840 perslab 2slab class 39: chunk kích cỡ 524288 perslab 2
lúc start memcached, gồm 39 slab class được tạo thành, cùng với kích cỡ chunk kích thước nghỉ ngơi mỗi slab class tăng dần, chunk kích thước càng Khủng, số slot trong slab class càng giảm. Một Slab class là group của những chunks gồm cùng chunk form size, từng chunk được gọi là slot, là đơn vị chức năng nhỏ độc nhất vô nhị để lưu data.

Growth Factor là thông số nhân đến form size các slab class tiếp đến, trong instance memcached được start nhỏng trên thì Growth Factor là một trong những.25: (120/96 = 1.25 | 152/120 ~ 1.25 | 192/152 ~ 1.25 | 240/192 = 1.25 | bla bla)