A Memcached 1.6.0 kiadása a külső tárolók támogatásával

került sor a memórián belüli adatgyorsítótár rendszer jelentős felszabadulását Memcached 1.6.0, amely kulcs/érték formátumú adatokkal működik, és könnyen használható. A Memcachedet általában könnyű megoldásként használják a nagy terhelésű helyek munkájának felgyorsítására a DBMS-hez és a köztes adatokhoz való hozzáférés gyorsítótárazásával. Kód szállított a BSD licenc alatt.

Az új verzió stabilizálja a tároló megvalósítását "extstore", amely most már alapértelmezés szerint meg van építve (a konfiguráló szkriptben a letiltáshoz a "-disable-extstore" opció rendelkezésre áll), de az indításkor kifejezett aktiválást igényel (a régi telepítések a frissítés után is változtatás nélkül működnek). Bár az extstore-t általában stabilnak tekintik, óvatosság javasolt, ha nagyon nagy rendszereken implementálja.

Az Extstore lehetővé teszi az SSD/Flash meghajtók használatát a gyorsítótár méretének bővítésére. A RAM-hoz hasonlóan a Flash-tárhely sem állandó, és újraindításkor visszaáll. Az új mód célja a nagy adatok hatékony gyorsítótárazásának biztosítása. Az "extstore" használatakor a kulcsok és a metaadatok a korábbiakhoz hasonlóan csak a RAM-ban tárolódnak, de a kulcsokhoz kapcsolódó nagyméretű adatok, amelyek mérete meghaladja a beállított küszöbértéket, külső tárolóban tárolódnak, és csak a mutató marad a RAM-ban.

Ha a kulcs kis adathoz van társítva, akkor a Memcached a szokásos módon működik, az adatokat a memóriában tartja, és nem fér hozzá a külső tárolóhoz. Ha sok a szabad memória, akkor a legszükségesebb adatok teljesen elhelyezhetők a RAM gyorsítótárában (például megadhatja, hogy csak az 1024 bájtnál nagyobb, 3600 másodpercig nem elért objektumok legyenek visszaállítva Flash-re ).

A megvalósítást úgy optimalizálták, hogy biztosítsa a maximális teljesítményt és a minimális CPU-terhelést, a tárolási hatékonyság rovására (nagyfokú töredezettség). A Flash meghajtók élettartamának meghosszabbítása érdekében az adatok pufferelése és tárolása egymás után történik. Az újraindítások közötti gyorsítótár állapotának mentéséhez használhatja az 1.5.18-as kiadásban megjelent képességet a gyorsítótár kiíratásának fájlba való kiírásához. A következő indításkor visszaállíthatja a gyorsítótárat ebből a fájlból, hogy kiküszöbölje a tartalomfeldolgozók terhelési csúcsait a gyorsítótár üressége miatt (a gyorsítótár azonnal „felmelegszik”).

A második fontos változás a Memcached 1.6-ban a hálózati kommunikációs kód átdolgozása volt, amely alkalmas arra, hogy egy rendszerhíváson belül automatikusan feldolgozza a kötegelt kéréseket. Korábban, amikor több GET-parancsot küldtek egyetlen TCP-csomagban, a memcached külön rendszerhívásokkal küldte el az eredményeket. A Memcached 1.6-ban a válaszok összesítése és visszaadása egyetlen rendszerhívás elküldésével történik. Ennek eredményeként most átlagosan 1.5 kulcs van rendszerhívásonként, ami a tesztek során a CPU-terhelés akár 25%-os csökkenését és a várakozási idő több százalékos csökkenését mutatja.

A hálózati alrendszer áttervezése azt is lehetővé tette, hogy a pufferek statikus hozzárendelése helyett szükség szerint dinamikus kiosztásra váltsunk. Ez az optimalizálás 4.5 KB-ról 400-500 bájtra csökkentette a memóriafelhasználást, miközben új parancsokra várt a kliens által létrehozott kapcsolaton keresztül, és lehetővé tette a sok malloc, realloc és free hívás eltávolítását, amelyek a memória szükségtelen töredezettségéhez vezetnek. nagy számú kapcsolattal rendelkező rendszerek. Mostantól minden munkaszál saját olvasási és írási pufferkészletet kezel az aktív ügyfélkapcsolatokhoz. Ezen pufferek méretének beállításához
a „-o resp_obj_mem_limit=N” és „-o read_buf_mem_limt=N” opciók állnak rendelkezésre.

A Branch 1.6 is bejelentette az elavulást bináris protokoll interakció a szerverrel. A bináris protokoll karbantartása és a hibajavítások folytatódnak, de az új funkciók és a meglévő funkciók frissítései nem kerülnek áthelyezésre. Szöveges protokoll változások nélkül tovább fog fejlődni. A bináris protokollt egy új protokoll váltotta fel meta (a protokoll szöveges változata kompakt metaparancsokkal), bemutatva a teljesítmény és a megbízhatóság optimális kombinációját. Az új protokoll lefedi az összes korábban szöveges és bináris protokollon keresztül elérhető műveletet.

Forrás: opennet.ru

Hozzászólás