Memcached og højtydende MySQL - 💡 Fix My Ideas

Memcached og højtydende MySQL

Memcached og højtydende MySQL


Forfatter: Ethan Holmes, 2019

Memcached er et distribueret objekt caching system, der oprindeligt blev udviklet til at forbedre LiveJournal's ydeevne og siden er blevet brugt som en skaleringsstrategi for en række højbelastede websteder. Det tjener som et stort, ekstremt hurtigt hashbord, der kan spredes på tværs af mange servere og åbnes samtidigt fra flere processer. Den er designet til at blive brugt til næsten alle back-end caching behov, og for højtydende webapplikationer er det et godt supplement til en database som MySQL.

I et typisk miljø kan en webudvikler anvende en kombination af procesniveau caching og den indbyggede MySQL query caching for at udnytte den ekstra ydelse fra en applikation. Problemet er, at caching i processen er begrænset til webprocessen, der kører på en enkelt server. I en afbalanceret konfiguration opretholder hver server sin egen cache, hvilket begrænser effektiviteten og den tilgængelige størrelse af cachen. Tilsvarende er MySQLs forespørgselscache begrænset til den server, som MySQL-processen kører på. Forespørgselsbufferen er også begrænset, fordi den kun kan cache rækkeresultater. Med memcached kan du oprette en cache-servere, der kan lagre enhver form for serieliseret objekt, og disse data kan deles af alle de belastningsbalancerede webservere. Cool, nej?

For at oprette en memcached-server, kan du simpelthen downloade dæmonen og køre den med et par parametre. Fra den memcached hjemmeside:

For det første starter du den memcached daemon på så mange ekstra maskiner som du har. Demonen har ingen konfigurationsfil, kun nogle få kommandolinjemuligheder, kun 3 eller 4, som du sandsynligvis vil bruge:

# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211

Dette begynder at gemmes som en dæmon ved hjælp af 2 GB hukommelse og lytter på IP 10.0.0.40, port 11211. Fordi en 32-bits proces kun kan adressere 4 GB virtuel hukommelse (normalt betydeligt mindre afhængigt af dit operativsystem), hvis du har en 32-bit server med 4-64 GB hukommelse ved hjælp af PAE du kan bare køre flere processer på maskinen, hver med 2 eller 3 GB hukommelse.

Det handler om så enkelt som det bliver. Der er ingen reel konfiguration. Ingen godkendelse. Det er bare et gigantisk hashbord. Du vil selvfølgelig oprette dette på et privat, ikke-adresserbart netværk. Derefter er arbejdet med at forespørge og ajourføre cachen helt op til applikationsdesigneren. Du får de grundlæggende funktioner i sæt, få og slet. Her er et simpelt eksempel i PHP:

$ memcache = nyt Memcache; $ memcache-> addServer ('10 .0.0.40 ', 11211); $ memcache-> addServer ('10 .0.0.41 ', 11211);

$ value = "Data til cache";

$ memcache-> set ('thekey', $ værdi, 60); ekko "Caching i 60 sekunder: $ værdi
“;

$ hentet = $ memcache-> get ('thekey'); ekko "Hentet: $ hentet
“;

PHP-biblioteket tager sig af det beskidte arbejde med serialisering af enhver værdi, du overfører til cachen, så du kan sende og hente arrayer eller endda fuldføre dataobjekter.

I dit programs datalag, i stedet for straks at ramme databasen, kan du nu spørge memcached først. Hvis elementet er fundet, er det ikke nødvendigt at ramme databasen og samle dataobjektet. Hvis nøglen ikke findes, vælger du de relevante data fra databasen og gemmer det afledte objekt i cachen. Tilsvarende opdaterer du cachen, når dit dataobjekt er ændret og opdateret i databasen. Hvis du antager, at din API er struktureret godt, skal der kun foretages et par ændringer, der dramatisk ændrer skalerbarheden og ydeevnen af ​​din ansøgning.

Jeg har linket til nogle få ressourcer nedenfor, hvor du kan finde flere oplysninger om brug af memcached i din ansøgning. Udover dokumentationen på memcached websiden har Todd Hoff samlet en liste over artikler om memcached og opsummeret flere memcached performance teknikker. Det er et temmelig alsidigt værktøj. For dem af jer, der har brugt memcached, giv os en holler i kommentarerne og del dine tips og tricks.

Memcached Strategier til brug af Memcached og MySQL Better Together Memcached og MySQL tutorial (PDF)



Du Kan Være Interesseret

Math mandag: tonsvis af trekanter

Math mandag: tonsvis af trekanter


Abney Park spiller Maker Faire

Abney Park spiller Maker Faire


3D-udskrivning Topografiske kort fra rumfærdsdata

3D-udskrivning Topografiske kort fra rumfærdsdata


Åbne indkøbsplaner for "Low-Tech, High-Thinking" Vandfiltre

Åbne indkøbsplaner for "Low-Tech, High-Thinking" Vandfiltre