Huomaa: Tämä viesti on vanhentunut. Ajantasaisimman version löydät täältä.
tämä virka on vanhentunut. Päivitetty versio löytyy täältä. Olen tarkoituksella jättää tämän artikkelin täällä, joten en häiritse muita sivustoja linkittää takaisin minulle.
useita vuosia sitten suorituskyvyn rakentaminen ohjelmistojärjestelmäksi oli yksinkertaista – joko lisäsitte laitteistoresurssejanne (skaalautuitte) tai muokkasitte sovellustanne toimimaan tehokkaammin (suorituskyvyn viritys). Tänään, on olemassa kolmas vaihtoehto: horisontaalinen skaalaus (scale out).
ohjelmistojärjestelmien horisontaalinen skaalaus on tullut tarpeelliseksi viime vuosina, koska tietojenkäsittely on maailmanlaajuista ja sovellusten suorituskykyvaatimukset kasvavat jatkuvasti. Monissa tapauksissa ei ole enää hyväksyttävää ajaa yhtä palvelinta yhdellä tietokannalla samassa datakeskuksessa yrityksen pääkonttorin vieressä. Tarvitsemme aidosti hajautettuja ympäristöjä nykypäivän liiketoimintahaasteisiin vastaamiseksi.
valitettavasti horisontaalisen skaalauksen tarjoamat suoritusedut tulevat kustannusarvoltaan monimutkaisiksi. Hajautetut järjestelmät tuovat suorituskyvyn yhtälöön paljon enemmän tekijöitä kuin ennen. Tietueet vaihtelevat asiakkaiden/solmujen välillä eri paikoissa. Yksittäiset vikapisteet tuhoavat järjestelmän käyttöajan, ja ajoittaiset verkkoongelmat hiipivät pahimpaan mahdolliseen aikaan.
nämä huolet johdonmukaisuudesta (C), saatavuudesta (A) ja jakautumistoleranssista (P) hajautetuissa järjestelmissä muodostavat sen, mitä ~~Eric Brewer~~ ~ keksi YMP: n Teoreemaksi. Yksinkertaisesti sanottuna YMP: n lause osoittaa, että mikään hajautettu järjestelmä ei voi taata C: tä, A: ta ja P: tä samanaikaisesti.
johdonmukaisuus – kaikki solmut näkevät samat tiedot samaan aikaan.
Yksinkertaisesti sanottuna lukuoperaation suorittaminen palauttaa viimeisimmän kirjoitusoperaation arvon, jolloin kaikki solmut palauttavat saman datan. Järjestelmällä on johdonmukaisuus, jos tapahtuma alkaa järjestelmän kanssa johdonmukaisessa tilassa ja päättyy järjestelmän kanssa johdonmukaisessa tilassa. Tässä mallissa järjestelmä voi (ja tekee) siirtyä epäjohdonmukaiseen tilaan transaktion aikana, mutta koko tapahtuma rullataan takaisin, jos prosessin missä tahansa vaiheessa on virhe.
tyypilliset relaatiotietokannat ovat johdonmukaisia: SQL Server, MySQL ja PostgreSQL.
saatavuus-jokainen pyyntö saa vastauksen onnistumisesta / epäonnistumisesta.
käytettävyyden saavuttaminen hajautetussa järjestelmässä edellyttää, että järjestelmä pysyy toiminnassa 100% ajasta. Jokainen asiakas saa vastauksen riippumatta yksittäisen solmun tilasta järjestelmässä. Tämä metriikka on mitattava triviaali: joko voit lähettää luku – /kirjoituskomentoja tai et voi.
tyypillisiä relaatiotietokantoja ovat myös: SQL Server, MySQL ja PostgreSQL. Tämä tarkoittaa sitä, että relaatiotietokannat ovat olemassa CA – avaruudessa-johdonmukaisuus ja käytettävyys. CA ei kuitenkaan ole varattu vain relaatiotietokannoille – myös eräät asiakirjoihin keskittyvät työkalut, kuten ElasticSearch, kuuluvat CA-sateenvarjon alle.
Partition Tolerance-järjestelmä toimii edelleen viestin häviämisestä tai osittaisesta viasta huolimatta.
useimmat ihmiset pitävät tietovarastoaan yhtenä verkon solmukohtana. ”Tämä on meidän tuotanto SQL Server instance”. Jokainen, joka on suorittanut tuotannon esimerkiksi yli neljä minuuttia, nopeasti ymmärtää, että tämä luo yhden pisteen vika. Järjestelmä, joka on osio-suvaitsevainen voi kestää minkä tahansa määrän verkon vika, joka ei johda vika koko verkon. Tietueita monistetaan riittävästi solmujen ja verkkojen yhdistelmissä, jotta järjestelmä pysyy yllä ajoittaisten katkosten läpi.
tallennusjärjestelmät, jotka kuuluvat Osiotoleranssiin johdonmukaisuuden kanssa (CP): MongoDB, Redis, AppFabric välimuistiin ja MemcacheDB. CP-järjestelmät tekevät erinomaisista hajautetuista välimuisteista, sillä jokainen asiakas saa samat tiedot, ja järjestelmä on jaettu verkon rajojen yli.
tallennusjärjestelmiä, jotka kuuluvat Partition Tolerance with Availability (AP) – järjestelmään, ovat DynamoDB, CouchDB ja Cassandra.
päätelmä
hajautettujen järjestelmien avulla voimme saavuttaa laskentatehon ja käytettävyyden tason, jota ei yksinkertaisesti ollut saatavilla eilisvuosina. Järjestelmiemme suorituskyky on korkeampi, latenssi pienempi ja käyttöaika lähes 100% datakeskuksissa, jotka kattavat koko maapallon. Mikä parasta, järjestelmät tänään ajetaan hyödyke laitteisto, joka on helposti saatavissa ja konfiguroitavissa kustannukset lähestyvät $0.
kaikella tällä laskentateholla ja-hyödyllä on kuitenkin hintansa. Hajautetut järjestelmät ovat monimutkaisempia kuin niiden yhden verkon kollegansa. On paljon enemmän työkaluja ja taitoja, jotka on hankittava, jotta voidaan luoda todella skaalautuva, korkean suorituskyvyn järjestelmä. Hajautettujen järjestelmien monimutkaisuuden ymmärtäminen, sopivien kompromissien tekeminen käsillä olevaan tehtävään (CAP) ja oikean työkalun valinta työhön ovat kaikki kriittisiä taitoja maailmassa, jossa tietojärjestelmät etenevät, eivät ylöspäin.