Hajutamise lühimärkmed: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Uus lehekülg: '== Miks hajutada? == Suurtes süsteemides võib juhtuda, et: * üks server ei suuda vbl teenindada * ühte serverisse data ei mahu * CDN-i idee, data oleks kasutajatele f...'
 
 
3. rida: 3. rida:
Suurtes süsteemides võib juhtuda, et:
Suurtes süsteemides võib juhtuda, et:


* üks server ei suuda vbl teenindada   
* üks server ei suuda vbl teenindada   
* ühte serverisse data ei mahu
* ühte serverisse data ei mahu
* CDN-i idee, data oleks kasutajatele füüsiliselt lähedal kiireks accessiks
* CDN-i idee, data oleks kasutajatele füüsiliselt lähedal kiireks accessiks
   
   
Näiteks, skypes läks seda kohe alguses vaja.
Näiteks, skypes läks seda kohe alguses vaja.


Väikese süsteemi puhul ei juhtu neid asju kunagi.
Väikese süsteemi puhul ei juhtu neid asju kunagi.
 
== Oluline (näite)süsteem: Memcached ==
== Oluline (näite)süsteem: Memcached ==



Viimane redaktsioon: 22. aprill 2019, kell 12:25

Miks hajutada?

Suurtes süsteemides võib juhtuda, et:

  • üks server ei suuda vbl teenindada
  • ühte serverisse data ei mahu
  • CDN-i idee, data oleks kasutajatele füüsiliselt lähedal kiireks accessiks

Näiteks, skypes läks seda kohe alguses vaja.

Väikese süsteemi puhul ei juhtu neid asju kunagi.

Oluline (näite)süsteem: Memcached

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

key-value baas

{"http://xx.com/api/people":23,
 "bsesd": "dfsdfsdf",
 ...
} 

põhirakendus: päringute cachimine API päringud

  • keyd
  • aeg, millal salvestati
  • data

memcachedit on lihtne panna korraga mitme masina peale 10 serverit, igaühes jookseb

variandid mis oleks:

  • (memcached ei tee seda) iga server sisaldab kogu datat
  • (seda memcached teeb) iga server sisaldab osa datat

uus data tuleb mingi key "k1":

  • peame otsustama mis serverisse panna
  • päring otsib "k1"-te: peame teadma mis serveris ta on ja sealt küsima. Selleks:
    • arvutad key hashi
    • hash("k1") oleks ntx 192202
    • jagad serverite arvuga, saad jäägi: see on serveri nr

Alternatiivsüsteem: redis.

Veidi keerulisem datastruktuur ja päringud.

Replikeerimine baasides

Põhiststsenaarium:

  • data ei mahu ära või
  • server ei jaksa vastata päringutele

Jagame osa datat ühte serverisse teise osa teise, kolmanda kolmandasse jne

Mis põhimõtte järgi? Variandid:

  • jagame väga suured tabelid a la memcachedi moodi ridade kaupa, näiteks kasutajanime esitähe järgi:
    • a-c: server 1
    • d-k: server 2.
    • ...
    • x-z: server N

Ehk, osa datat replitseerida, osa jagada.

  • osa tabeleid serverisse 1, osa serverisse 2, jne.
  • eksootiline: osa tulpasid suurest tabelist server 1, osa server 2,