GNU/Linux >> Znalost Linux >  >> Linux

Průvodce SRE pro Memcached pro vytváření škálovatelných aplikací

Memcached je univerzální systém ukládání do mezipaměti. To znamená, že je navržen tak, aby ukládal (nebo do mezipaměti) odpovědi na otázky, jejichž výpočet nebo načítání trvá dlouho a pravděpodobně budete požádáni znovu . Běžným případem použití je urychlení používání databáze:pokud například očekáváme, že budeme opakovaně potřebovat seznam „jmén všech lidí, kteří jsou v týmu X“, můžeme tato data vložit do Memcached místo spuštění SQL dotazu. pokaždé. (Poznámka:Memcached se občas označuje jako „memcache“. V tomto článku se budeme držet celého názvu.)

Mezipaměti jsou užitečné při vytváření škálovatelných aplikací a infrastruktury, což je jádrem práce inženýra spolehlivosti webu (SRE). Tento článek se zabývá tím, co je potřeba k efektivnímu provozu Memcached.

Doporučení paměti a démonizace Memcached

Memcached funguje nejlépe, když je omezen na velikost paměti, kterou má systém k dispozici: vystěhuje se data, když zabírají více místa, než je limit paměti. Nějaký paměťový prostor bude potřeba pro to, co můžeme nazvat „režie“ – paměť potřebná pro administrativní operace Memcached, operační systém a pomocné procesy.

Další skvělý obsah

  • Bezplatný online kurz:technický přehled RHEL
  • Naučte se pokročilé příkazy Linuxu
  • Stáhněte si cheaty
  • Najděte alternativu s otevřeným zdrojovým kódem
  • Přečtěte si hlavní obsah Linux
  • Podívejte se na zdroje s otevřeným zdrojovým kódem

To se nastavuje pomocí -m příznak příkazového řádku, což je pravděpodobně jediný příznak, který budete ke spuštění Memcached potřebovat. -d příznak (daemonize) obvykle není užitečný:na moderních operačních systémech založených na systemd by se Memcached neměl démonizovat sám. Podobně, pokud jej spustíte pod Dockerem, také by se neměl démonizovat.

Spuštění Memcached v kontejneru je v pořádku, ale je důležité zvážit, co ještě běží na hostiteli, a pečlivě vyladit požadavky na paměť.

Prohlížení dat Memcached se statistikami

Když používáte Memcached, je často dobré se přímo připojit a hrát si, abyste viděli, co se děje. Je to přiměřeně bezpečné, dokonce i s produkčními instancemi, pokud budete trochu opatrní.

Nejbezpečnější příkaz ke spuštění je stats . Způsobí to, že Memcached vyplivne velké množství statistik a podrobností, které jsou často užitečné:

$ echo statistiky | nc localhost 11211
...
STAT uptime 1346
...
STAT max_connections 1024
STAT curr_connections 2
STAT total_connections 6
STAT zamítnuté_připojení 4
...
STAT get_hits 0
STAT get_misses 0
STAT get_expired 0
...
END

Nejzajímavější statistiky jsou obvykle „úspěšné“, „nevynechané“ a „vypršené“. Ty mohou často vyprávět zajímavý příběh o tom, jak efektivní je keš. Pokud se účinnost sníží, je to důvod k obavám, protože by to mohlo snížit výkon aplikace.

Jedna o něco méně bezpečná věc, kterou můžete vyzkoušet, je uložení a vyzvednutí. Je to dobrý způsob, jak „nakopnout pneumatiky“ a naučit se, jak to funguje:

$ echo statistiky | nc localhost 11211
nastavit můj_klíč 0 0 8
moje_hodnota^M
STORED
získat můj_klíč
VALUE můj_klíč 0 8
moje_hodnota
END

Po zadání moje_hodnota , musíte odeslat konec řádku ve stylu DOS:return a nový řádek. To se provádí v konzole Linux pomocí Ctrl+V a poté stiskněte Enter , která vydá návrat znak (ASCII 13) a poté stiskněte Enter jako obvykle vypíše nový řádek znak (ASCII 10).

První 0 je pro „metadata“ a předává se v 0 znamená, že neexistují žádná zajímavá metadata. Je považováno za bitovou masku, takže 0 má všechny bity vypnuté. Druhá 0 je po dobu platnosti. Znamená to „nevyprší“. Obecně je to pro testování v pořádku. Ve výrobním nastavení je dobré nastavit dobu expirace klíčů.

Pokud se jedná o důležitou instanci, je třeba dbát na to, abyste nepřepsali důležitý klíč. Schopnost rychlého ukládání a načítání prostřednictvím příkazového řádku však umožňuje ujistit se, že Memcached běží správně.

Sdílení Memcached jako služby

Všimněte si, že v moderním nastavení mikroslužeb bude mnoho služeb chtít ukládat data do Memcache a stojí za to přijít se strategií, jak to spravovat. Jednou z možností je spustit Memcache nebo cluster pro každou službu. To je však často komplikované a náročné na údržbu. Často je správné, aby služby sdílely Memcache. V takovém případě je dobré zavést nějaké rozumné zásady; například nařizuje předponu názvu služby ke klíči. To umožňuje zkontrolovat, které služby využívají, kolik místa, pomocí cachedump příkaz:

$ echo 'stats items' | nc -w 1 localhost 11211|grep ':number '
STAT items:1:number 2

Tento příkaz zobrazí všechna ID "desek". Memcache ukládá podobně velké klíče ve slabech; tento příklad má pouze jeden slab:

$ echo 'stats cachedump 1 1000' | nc -w 1 localhost 11211
ITEM můj_klíč [8 b; 0 s]
POLOŽKA foo [5 b; 0 s]
KONEC

Zde jsou dva klíče:jeden s 8bajtovou hodnotou a druhý s 5bajtovou hodnotou.

V realističtějším scénáři s mnoha klíči možná budete chtít zpracovat tato data pomocí awk nebo skript a pomocí místní konvence zjistit, kolik místa jednotlivé služby využívají.

To lze integrovat do monitorovacího systému, jako je Prometheus, a sledovat chování v průběhu času.

Navíc, protože mnoho týmů sdílí stejnou službu, je užitečným vodítkem navrhnout, aby služby šifrovaly a ověřovaly data, která ukládají do mezipaměti. Symetrické šifrování na moderních CPU je výkonné, což umožňuje mnohem jednodušší modely zabezpečení. Jedním z příkladů knihovny, která toto podporuje, je kryptografický Fernet. (Pokud si o tom chcete přečíst více, dejte mi vědět v komentářích.)

Závěr

Memcached je běžná open source technologie, kterou SRE podporuje. V tomto článku jsem se podíval na to, jak se o tom dotazovat na běžné statistiky, nabídl jsem nějaké rady ohledně konfigurace a ukázal, jak pomoci více týmům sdílet jeden cluster Memcached snadno monitorovaným a bezpečným způsobem. Máte další otázky, jak spravovat Memcached? Zeptejte se v komentářích a já se rád podělím o další tipy.


Linux
  1. Průvodce linuxovým terminálem pro začátečníky

  2. Jak zabalit aplikace Python pro Linux

  3. 3 přístupy ke správě tajemství pro aplikace Flatpak

  1. 4 nástroje pro budování vestavěných linuxových systémů

  2. Kompletní průvodce pro použití AsciiDoc v Linuxu

  3. Nainstalovat MERN Stack pro aplikace založené na JS na Ubuntu 20.04 – průvodce krok za krokem?

  1. Bash pro průvodce smyčkou a příklady

  2. Co je Linux? Průvodce pro netechnické uživatele

  3. Jak vyhledat výstupní kódy pro aplikace?