Wat is een gedistribueerde cache?

Ik ben in de war over het concept van gedistribueerde cache. Ik weet een beetje wat het is van google zoeken. Een gedistribueerde cache kan meerdere servers omvatten, zodat deze in omvang en in transactiecapaciteit kan groeien. Ik begrijp echter niet echt hoe het werkt of hoe het de gegevens verspreidt.

Laten we bijvoorbeeld zeggen dat we Data 1, 2, 3, 4, 5, 6, 7, 8, 9, 10en 2 cacheservers A en B. Als we gedistribueerde cache gebruiken, is een van de mogelijke oplossingen dat gegevens 1, 3, 5, 7, 9 worden opgeslagen in cacheserver A en 2, 4, 6, 8, 10 worden opgeslagen in cacheserver B.

Dus klopt dit of heb ik het verkeerd begrepen?

De tweede vraag is dat ik meestal het woord serverknooppunthoorde. Wat is het? In het bovenstaande voorbeeld is Server A een serverknooppunt, toch?

Derde vraag, als een server (laten we zeggen server A) uitvalt, wat kunnen we daar dan aan doen? Ik bedoel, als mijn voorbeeld hierboven correct is, kunnen we de gegevens 1, 3, 5, 7, 9 niet uit de cache halen wanneer Server A niet beschikbaar is, wat zou Cache Server dan kunnen doen in dit geval?


Antwoord 1, autoriteit 100%

  1. Ja, de helft van de gegevens op server a en de helft op server b zou een gedistribueerde cache zijn. Er zijn veel methoden om de gegevens te distribueren, hoewel een soort hashing van de sleutels het populairst lijkt te zijn.

  2. De termen server en node zijn over het algemeen uitwisselbaar. Een knooppunt is over het algemeen een enkele eenheid van een verzameling, vaak een cluster genoemd. Een server is over het algemeen een enkel stuk hardware. In erlang kun je meerdere instanties van de erlang-runtime op een enkele server uitvoeren, en dus heb je meerdere erlang-knooppunten… maar over het algemeen zou je één knooppunt per server willen hebben voor een meer optimale planning. (Voor niet-gedistribueerde talen en platforms moet u uw processen beheren op basis van uw behoeften.)

  3. Als een server uitvalt en het is een cacheserver, dan moeten de gegevens van de oorspronkelijke bron komen. Bijv.: Een cache is meestal een op geheugen gebaseerde database die is ontworpen om snel te kunnen worden opgehaald. De gegevens in de cache blijven alleen bewaard zolang ze regelmatig worden gebruikt en zullen uiteindelijk worden gewist. Maar voor gedistribueerde systemen waar je volharding nodig hebt, is een veelgebruikte techniek om meerdere exemplaren te hebben. Bv: je hebt servers A, B, C, D, E en F. Voor data 1 zou je het op A zetten, en dan een kopie op B en C. Couchbase en Riak doen dit. Voor data 2 kan het op B staan, en dan kopieën op C en D. Op deze manier heb je, als een server uitvalt, nog steeds twee kopieën.


Antwoord 2, autoriteit 15%

Ik gebruik al geruime tijd gedistribueerde caching-oplossingen (NCache, AppFabric, enz.) en ik ga alle drie de vragen beantwoorden op basis van mijn ervaring met Distributed caching.

1: Met een gedistribueerde caching-oplossing kunt u gegevens op alle servers bewaren door een cachecluster te maken. Laten we zeggen dat je 2 cacheservers (serverknooppunten) hebt en dat je 10 items aan je cache hebt toegevoegd. Idealiter zouden 5 items aanwezig moeten zijn in beide serverknooppunten, aangezien de gegevensbelasting wordt verdeeld over het aantal servers in uw cachecluster. Dit wordt meestal bereikt met behulp van hashing en intelligente algoritmen voor gegevensdistributie. Als gevolg hiervan wordt de belasting van uw gegevensverzoek ook verdeeld over alle cacheservers en bereikt u een lineaire groei in transnationale capaciteit naarmate u meer servers in het cachecluster bevindt.

2: Een cachecluster kan veel servermachines bevatten, ook wel serverknooppunten genoemd. Ja, Server A is een serverknooppunt of servermachine in uw voorbeeld.

3: Typisch gedistribueerde cachingsystemen zijn zeer betrouwbaar met behulp van replicatie-ondersteuning. Als een of meer servers uitvallen en u had de replicatie ingeschakeld, dan zal er geen dataverlies of downtime zijn. NCache heeft verschillende typologieën om dit aan te pakken, zoals gerepliceerde topologie en partitie van replicatopologie waarbij gegevens van elke server ook naar de andere server worden gerepliceerd. In het geval dat een server uitvalt, worden de gerepliceerde gegevens van die server automatisch beschikbaar gemaakt vanaf het overgebleven serverknooppunt.

In uw voorbeeld worden de gegevens van server A(1, 3, 5, 7, 9) gerepliceerd naar server B(2, 4, 6, 8, 10) en vice versa. Als server A uitvalt, worden de data van server A die aanwezig is op Server B beschikbaar gemaakt en van daaruit gebruikt zodat er geen data verloren gaat. Dus als server A uitvalt en de applicatie om gegevens (1) vraagt, worden deze gegevens opgehaald van server B, omdat server B een back-up bevat van alle gegevens van server A. Dit sluit naadloos aan op uw applicaties en wordt automatisch beheerd door de caching systeem.

Other episodes