Perusteellinen johdanto hajautettuihin järjestelmiin

Mikä on hajautettu järjestelmä ja miksi se on niin monimutkainen?

Karhu harkitsee hajautettuja järjestelmiä

Sisällysluettelo

esittely

  1. Mikä on hajautettu järjestelmä?
  2. Miksi jakaa järjestelmää?
  3. Esimerkki tietokannan skaalauksesta
  4. Hajautettu vs. hajautettu

Hajautetut järjestelmäluokat

  1. Hajautetut tietokaupat
  2. Hajautettu tietojenkäsittely
  3. Hajautetut tiedostojärjestelmät
  4. Jaettu viestit
  5. Hajautetut sovellukset
  6. Jaetut pääkirjat

Yhteenveto

esittely

Maailman jatkuvasti kasvavan teknologisen laajentumisen myötä hajautetut järjestelmät ovat yleistymässä. Ne ovat laaja ja monimutkainen tietotekniikan opintojen ala.

Tämän artikkelin tarkoituksena on esitellä sinulle hajautetut järjestelmät perustarkoituksella, antamalla sinulle katsauksen tällaisten järjestelmien eri luokkiin, samalla kun et sukella syvälle yksityiskohtiin.

Mikä on hajautettu järjestelmä?

Hajautettu järjestelmä sen yksinkertaisimmassa määritelmässä on ryhmä tietokoneita, jotka toimivat yhdessä näyttääkseen yhtenä tietokoneena loppukäyttäjälle.

Näillä koneilla on jaettu tila, ne toimivat samanaikaisesti ja voivat epäonnistua itsenäisesti vaikuttamatta koko järjestelmän käyttöaikaan.

Ehdotan, että tutkimme asteittain esimerkkiä järjestelmän jakelusta, jotta saat paremman käsityksen kaikesta:

Perinteinen pino

Mennään tietokannan kanssa! Perinteiset tietokannat tallennetaan yhden koneen tiedostojärjestelmään aina, kun haluat hakea / lisätä tietoja siihen - puhut suoraan kyseiseen koneeseen.

Jotta voimme levittää tätä tietokantajärjestelmää, meidän on pitänyt käyttää tätä tietokantaa useilla koneilla samanaikaisesti. Käyttäjän on kyettävä puhumaan valitsemansa koneen kanssa, eikä hänen pitäisi voida kertoa, että hän ei puhu yhdelle koneelle - jos hän lisää tietueen solmuun 1, solmun # 3 on kyettävä palauttamaan tietue.

Arkkitehtuuria, jota voidaan pitää hajautettuna

Miksi jakaa järjestelmää?

Järjestelmät jaetaan aina tarpeen mukaan. Asia on totta: hajautettujen järjestelmien hallinta on monimutkainen aihe, joka on täynnä sudenkuoppia ja maamiinoja. Hajautettujen järjestelmien käyttöönotto, ylläpito ja virheenkorjaus on päänsärky, joten miksi mennä sinne lainkaan?

Se mitä hajautettu järjestelmä mahdollistaa, on skaalata vaakatasossa. Palatessamme takaisin edelliseen esimerkkiin yhdestä tietokantapalvelimesta, ainoa tapa käsitellä lisää liikennettä olisi päivittää laitteisto, jossa tietokanta on käynnissä. Tätä kutsutaan pystysuuntaiseksi skaalausksi.

Pystysuuntainen skaalaus on kaikki hyvin, kun pystyt, mutta tietyn ajan kuluttua huomaat, että edes paras laitteisto ei riitä riittävästi liikennettä, puhumattakaan käytännöllisestä isäntänä pitämisestä.

Vaakatasossa tapahtuva skaalaaminen tarkoittaa yksinkertaisesti uusien tietokoneiden lisäämistä sen sijaan, että päivitettäisiin yhden tietokoneen laitteita.

Vaakasuuntainen skaalaus tulee paljon halvemmaksi tietyn kynnyksen jälkeen

Se on huomattavasti halvempaa kuin pystysuuntainen skaalaus tietyn kynnyksen jälkeen, mutta se ei ole sen ensisijainen tapa suosia.

Pystysuuntainen skaalaus voi vain heikentää suorituskykyäsi uusimpien laitteistoominaisuuksien mukaisesti. Nämä ominaisuudet osoittautuvat riittämättömiksi teknologiayrityksille, joiden työmäärä on kohtalainen tai suuri.

Parasta horisontaalisen skaalauksen suhteen on, että sinulla ei ole korkia siitä, kuinka paljon voit skaalata - aina kun suorituskyky heikkenee, lisää vain uusi kone potentiaaliseen äärettömyyteen saakka.

Helppo skaalaaminen ei ole ainoa hyöty, jonka saat hajautetuista järjestelmistä. Vikasietoisuus ja matala viive ovat myös yhtä tärkeitä.

Vikatoleranssi - kymmenen koneen klusteri kahden tietokeskuksen välillä on luonnostaan ​​vikasietoisempi kuin yksi kone. Vaikka yksi tietokeskus palaa, sovellus toimisi edelleen.

Alhainen viive - Verkkopaketin aika matkustaa maailmaan rajoittuu fyysisesti valon nopeudella. Esimerkiksi lyhyin mahdollinen aika pyynnön edestakaiseen kulkuun (toisin sanoen edestakaisin) New Yorkista Sydneyen väliseen valokuitukaapeliin on 160 ms. Hajautettujen järjestelmien avulla sinulla voi olla solmu molemmissa kaupungeissa, jolloin liikenne voi osua sitä lähimpään solmuun.

Jotta hajautettu järjestelmä toimisi, tarvitset kuitenkin näillä koneilla toimivan ohjelmiston, joka on erityisesti suunniteltu toimimaan useilla tietokoneilla samanaikaisesti ja käsittelemään siihen liittyviä ongelmia. Tämä ei ole helppoa.

Skaalaa tietokantaamme

Kuvittele, että verkkosovelluksemme on saanut erittäin suositun. Kuvittele myös, että tietokantamme alkoi saada kaksi kertaa enemmän kyselyjä sekunnissa kuin se pystyy käsittelemään. Sovelluksesi alkaa heti heikentyä suorituskyvyssä, ja käyttäjät huomaavat sen.

Tehdään yhdessä työtä ja tehdään tietokantamme mittakaava vastaamaan korkeita vaatimuksiamme.

Tyypillisessä verkkosovelluksessa luet tietoja yleensä paljon useammin kuin lisäät uusia tietoja tai muokkaat vanhoja.

Lukemisen suorituskykyä voidaan parantaa, ja se tapahtuu niin kutsutun Master-Slave-kopiointistrategian avulla. Täällä voit luoda kaksi uutta tietokantapalvelinta, jotka synkronoituvat pääpalvelimen kanssa. Saalis on, että voit lukea vain näistä uusista esiintymistä.

Aina kun lisäät tai muokkaat tietoja - puhut päätietokantaan. Se puolestaan ​​informoi asynkronisesti orjia muutoksesta ja he myös tallentavat sen.

Onnittelut, voit nyt suorittaa 3x niin monta kyselyä! Eikö se ole niin hienoa?

Sudenkuoppa

Sainpas! Kadotimme heti C: n relaatiotietokantamme ACID-takuisiin, mikä tarkoittaa johdonmukaisuutta.

Näet, nyt on olemassa mahdollisuus, että lisäämme uuden tietueen tietokantaan heti sen jälkeen antamalla sille lukukyselyn eikä saa mitään takaisin, ikään kuin sitä ei olisi olemassa!

Uuden tiedon levittäminen isäntältä orjalle ei tapahdu heti. Itse asiassa on olemassa aikaikkuna, josta voit hakea vanhentuneita tietoja. Jos näin ei olisi, kirjoitustulos kärsisi, koska sen pitäisi odottaa synkronoidusti datan etenemistä.

Hajautettuihin järjestelmiin liittyy kourallinen kompromisseja. Tämä kysymys on yksi, josta sinun täytyy elää, jos haluat mitoittaa asianmukaisesti.

Jatkuu mittakaavassa

Slave-tietokantatapaa käyttämällä voidaan skaalata lukemaamme liikennettä jossain määrin vaakatasossa. Se on hienoa, mutta kirjoitusliikenteessämme on löydetty seinä - se on silti kaikki yhdessä palvelimessa!

Meillä ei ole täällä paljon vaihtoehtoja. Meidän on yksinkertaisesti jaettava kirjoitusliikenne useisiin palvelimiin, koska yksi ei pysty käsittelemään sitä.

Yksi tapa on siirtyä monen isäntä-kopiointistrategian kanssa. Siellä on vain sellaisten orjien sijasta, joista voit lukea vain useita isäntäsolmuja, jotka tukevat lukemista ja kirjoittamista. Valitettavasti tämä muuttuu monimutkaiseksi todella nopeasti, koska sinulla on nyt mahdollisuus luoda ristiriitoja (esim. Lisätä kaksi tietuetta samalla tunnuksella).

Mennään toisen tekniikan kanssa, jota kutsutaan sharding (kutsutaan myös osiointi).

Varjostimella jaat palvelimesi useaksi pienemmäksi palvelimeksi, joita kutsutaan sirkuiksi. Näillä siruilla on kaikki tietueet - luot säännön siitä, millaiset tietueet mihin shardiin menevät. On erittäin tärkeää luoda sääntö, jonka mukaan tiedot leviävät yhtenäisellä tavalla.

Mahdollinen lähestymistapa tähän on alueiden määritteleminen tietueesta saatavien tietojen perusteella (esim. Käyttäjät, joilla on nimi A-D).

Tämä varjostusnäppäin on valittava erittäin huolellisesti, koska kuorma ei ole aina yhtä suuri mielivaltaisten sarakkeiden perusteella. (esim. useammilla ihmisillä on nimi, joka alkaa kirjaimella C kuin Z). Yhden sirpaleen, joka vastaanottaa enemmän pyyntöjä kuin toiset, kutsutaan kuumana pisteeksi, ja sitä on vältettävä. Kun tiedot on jaettu, tietojen uudelleenmuodostaminen tulee uskomattoman kalliiksi ja voi aiheuttaa merkittäviä seisokkeja, kuten FourSquare-yhtiön pahamaineisen 11 tunnin seisokin tapauksessa.

Jotta esimerkki olisi yksinkertainen, oletetaan, että asiakasmme (Rails-sovellus) tietää mitä tietokantaa käytetään jokaisessa tietueessa. On myös syytä huomata, että varjostusta varten on monia strategioita ja tämä on yksinkertainen esimerkki käsitteen havainnollistamiseksi.

Olemme voittaneet tällä hetkellä melko paljon - voimme lisätä kirjoitusliikennettämme N kertaa, missä N on sirpaleiden lukumäärä. Tämä ei käytännössä anna meille melkein mitään rajoituksia - kuvittele kuinka hienorakeinen voimme saada aikaan tämän osituksen.

Sudenkuoppa

Ohjelmistotuotannossa kaikki on enemmän tai vähemmän kompromissia, eikä tämä ole poikkeus. Varjostus ei ole yksinkertainen saavutus, ja sitä on parasta välttää, kunnes sitä todella tarvitaan.

Olemme nyt tehneet kyselyitä muilla avaimilla kuin osioidulla avaimella uskomattoman tehottomia (niiden on läpikäytä kaikki sirut). SQL JOIN -kyselyt ovat vielä huonompia, ja monimutkaisista tulee käytännössä käyttökelvottomia.

Hajautettu vs. hajautettu

Ennen kuin jatkamme eteenpäin, haluaisin erottaa nämä kaksi termiä.

Vaikka sanat kuulostavat samanlaisilta ja voidaan päätellä tarkoittavan samaa loogisesti, niiden erotuksella on huomattava teknologinen ja poliittinen vaikutus.

Hajautettu jakelu on edelleen teknisessä mielessä, mutta koko hajautetut järjestelmät eivät ole yhden toimijan omistuksessa. Kukaan yritys ei voi omistaa hajautettua järjestelmää, muuten sitä ei enää hajauteta.

Tämä tarkoittaa, että useimpia järjestelmiä, jotka menemme tänään läpi, voidaan ajatella jakautuneina keskitettyinä järjestelminä - ja juuri niiden on tehty.

Jos ajattelet sitä - hajautetun järjestelmän luominen on vaikeampaa, koska silloin joudut käsittelemään tapauksia, joissa jotkut osallistujista ovat haitallisia. Näin ei ole normaalien hajautettujen järjestelmien tapauksessa, koska tiedät, että omistat kaikki solmut.

Huomaa: Tästä määritelmästä on keskusteltu paljon ja se voidaan sekoittaa muihin (vertaisverkkoon, yhdistyneeseen). Varhaisessa kirjallisuudessa se on myös määritelty eri tavalla. Riippumatta siitä, mitä annoin sinulle määritelmänä, se on mielestäni laajimmin käytetty nyt, kun blockchain ja cryptocurrencies popularisoivat termiä.

Hajautetut järjestelmäluokat

Käymme nyt läpi pari hajautettuja järjestelmäluokkia ja luetellaan niiden suurin julkisesti tunnettu tuotantokäyttö. Muista, että suurin osa näistä numeroista on vanhentuneita ja ovat todennäköisesti huomattavasti suurempia siitä hetkestä lähtien kun luet tätä.

Hajautetut tietokaupat

Hajautettuja tietovarastoja käytetään eniten ja tunnustetaan hajautettuihin tietokantoihin. Useimmat hajautetut tietokannat ovat NoSQL-ei-relaatiotietokantoja, rajoittuen avain-arvon semantiikkaan. Ne tarjoavat uskomattoman suorituskyvyn ja skaalautuvuuden johdonmukaisuuden tai saatavuuden kustannuksella.

Tunnettu mittakaava - Applen tiedetään käyttävän 75 000 Apache Cassandra -solmua, jotka tallentavat yli 10 petatavua dataa, vuonna 2015

Emme voi aloittaa keskusteluja hajautetusta tietovarastosta ottamatta ensin käyttöön CAP-lause.

CAP-lause

Vuonna 2002 todistettu CAP-lause väittää, että hajautettu tietovarasto ei voi olla samanaikaisesti johdonmukainen, saatavana ja osiota sietävä.

Valitse 2 kolmesta (mutta ei johdonmukaisuutta ja saatavuutta)

Joitakin nopeita määritelmiä:

  • Johdonmukaisuus - Se mitä olet lukenut ja kirjoittanut peräkkäin, on odotettua (muistatko getcha-tietokannan toisinnuksen muutama kappale sitten?)
  • Saatavuus - koko järjestelmä ei kuole - jokainen viallinen solmu palauttaa aina vastauksen.
  • Osio-suvaitsevainen - Järjestelmä toimii edelleen ja ylläpitää johdonmukaisuuden / saatavuuden takuita verkko-osioista huolimatta

Todellisuudessa jakautumistoleranssi on annettava jokaiselle hajautetulle tietovarastolle. Kuten monissa paikoissa mainittiin, joista yksi on tämä hieno artikkeli, sinulla ei voi olla johdonmukaisuutta ja saatavuutta ilman osiotoleranssia.

Ajattele sitä: jos sinulla on kaksi solmua, jotka hyväksyvät tiedon ja niiden yhteys kuolee - miten ne molemmat tulevat saataville ja tarjoavat samanaikaisesti johdonmukaisuuden? Heillä ei ole mitään keinoa tietää, mitä toinen solmu tekee, ja sellaisenaan niistä voi joko tulla offline-tilassa (ei käytettävissä) tai työskennellä vanhentuneiden tietojen kanssa (epäjohdonmukaiset).

Mitä me teemme?

Loppujen lopuksi sinulla on mahdollisuus valita, haluatko järjestelmän olevan vahvasti yhdenmukainen vai erittäin saatavana verkkoosion alla.

Käytäntö osoittaa, että useimmat sovellukset arvostavat saatavuutta enemmän. Sinun ei välttämättä tarvitse aina vahvaa johdonmukaisuutta. Silloinkin tätä kompromissia ei välttämättä tehdä, koska tarvitset 100-prosenttisen saatavuuden takuun, vaan pikemminkin siksi, että verkon viive saattaa olla ongelma, kun joudut synkronoimaan koneita vahvan johdonmukaisuuden saavuttamiseksi. Nämä ja muut tekijät saavat sovellukset tyypillisesti valitsemaan ratkaisuja, jotka tarjoavat suuren saatavuuden.

Tällaiset tietokannat asettuvat heikoimman johdonmukaisuusmallin kanssa - mahdollisen johdonmukaisuuden (vahva vs. mahdollisen johdonmukaisuuden selitys). Tämä malli takaa, että jos tietylle tuotteelle ei tehdä uusia päivityksiä, kaikki kyseisen tuotteen käyttöoikeudet palauttavat viimeisimmän päivitetyn arvon.

Nämä järjestelmät tarjoavat BASE-ominaisuuksia (toisin kuin perinteisten tietokantojen ACID)

  • Pohjimmiltaan käytettävissä - järjestelmä palauttaa vastauksen aina
  • Pehmeä tila - järjestelmä voi muuttua ajan myötä, jopa silloin, kun mitään syöttöä ei ole (mahdollisen johdonmukaisuuden vuoksi)
  • Lopullinen johdonmukaisuus - Jos syöttöä ei ole, tiedot leviävät jokaiselle solmulle ennemmin tai myöhemmin - siten tullessa johdonmukaiseksi

Esimerkkejä sellaisista saatavissa olevista hajautetuista tietokannoista - Cassandra, Riak, Voldemort

Tietysti on muitakin tietovarastoja, jotka pitävät parempana johdonmukaisuutta - HBase, Couchbase, Redis, Zookeeper

YMP-lause on monien artikkeleiden arvoinen yksinään - jotkut koskevat sitä, kuinka voit muokata järjestelmän CAP-ominaisuuksia asiakkaan käyttäytymisen mukaan ja toiset siitä, miten sitä ei ymmärretä kunnolla.

Cassandra

Kuten edellä mainittiin, Cassandra on hajautettu No-SQL-tietokanta, joka suosii AP-ominaisuuksia YMP: n ulkopuolelle asettumalla mahdollisen johdonmukaisuuden kanssa. Myönnän, että tämä voi olla hiukan harhaanjohtava, koska Cassandra on erittäin konfiguroitavissa - voit saada sen tarjoamaan vahvan johdonmukaisuuden myös saatavuuden kustannuksella, mutta se ei ole sen yleinen käyttötapaus.

Cassandra käyttää johdonmukaista hajautusta määrittääkseen, minkä solmujen klusteristasi on hallittava siirrettäviä tietoja. Asetat kopiointikertoimen, joka tarkoittaa periaatteessa kuinka monta solmua haluat kopioida tietosi.

Näyte kirjoittaa

Kun luet, luet vain niistä solmuista.

Cassandra on massiivisesti skaalautuva, tuottaen kohtuuttoman korkean kirjoitustehon.

Mahdollisesti puolueellinen kaavio, joka näyttää kirjoitusten lukumäärän sekunnissa. Otettu täältä.

Vaikka tämä kaavio saattaa olla puolueellinen ja näyttää siltä, ​​että siinä verrataan Cassandraa tietokantoihin, jotka on asetettu tarjoamaan vahvaa johdonmukaisuutta (muuten en näe miksi MongoDB laskisi suorituskykyä päivitettäessä 4: stä 8: een solmuun), tämän pitäisi silti näyttää mikä oikein asetettu ylös Cassandra-klusteri kykenee.

Siitä huolimatta Cassandra ei hajautettuissa järjestelmissä, jotka mahdollistavat horisontaalisen skaalauksen ja uskomattoman suuren suorituskyvyn, tarjoa joitain ACID-tietokantojen perustavanlaatuisia piirteitä - nimittäin tapahtumia.

Yhteisymmärrys

Tietokantatapahtumat ovat hankalia toteuttaa hajautetuissa järjestelmissä, koska ne edellyttävät kunkin solmun sopivan oikeista toimista (keskeyttää tai sitoutua). Tätä kutsutaan konsensukseksi ja se on hajautettujen järjestelmien perustavanlaatuinen ongelma.

”Transaktion sitoumus” -ongelmaan tarvittavan sopimustyypin saavuttaminen on suoraviivaista, jos osallistuvat prosessit ja verkko ovat täysin luotettavia. Oikeat järjestelmät ovat kuitenkin alttiina useille mahdollisille vikoille, kuten prosessihäiriöille, verkon osioinnille ja kadonneille, vääristyneille tai kopioiduille viesteille.

Tämä aiheuttaa ongelman - on osoittautunut mahdottomaksi taata, että oikea konsensus saavutetaan rajoitetussa aikataulussa epäluotettavassa verkossa.

Käytännössä on kuitenkin olemassa algoritmeja, jotka saavuttavat konsensuksen epäluotettavassa verkossa melko nopeasti. Cassandra tarjoaa todella kevyitä tapahtumia käyttämällä Paxos-algoritmia hajautetulle konsensukselle.

Hajautettu tietojenkäsittely

Hajautettu tietojenkäsittely on avain suurten tietojenkäsittelyn tuloon, jonka olemme nähneet viime vuosina. Se on tekniikka jakaa valtava tehtävä (esim. Yhteensä 100 miljardia tietuetta), jota yksikään tietokone ei kykene suorittamaan yksinään, moniin pienempiin tehtäviin, joista kukin mahtuu yhdeksi hyödykekoneeksi. Voit jakaa valtavan tehtävän moniin pienempiin, saada ne suorittamaan monissa koneissa samanaikaisesti, yhdistämään tiedot asianmukaisesti ja olet ratkaissut alkuperäisen ongelman. Tämä lähestymistapa antaa sinulle mahdollisuuden skaalata uudelleen vaakasuunnassa - kun sinulla on suurempi tehtävä, sisällytä vain lisää solmuja laskelmaan.

Tunnettu mittakaava - Folding @ Home -yrityksellä oli 160 000 aktiivista konetta vuonna 2012

Varhainen keksijä tässä tilassa oli Google, joka joutui välttämättä keksimään uuden hajautetun laskennan paradigman - MapReduce - niiden suurten tietomäärien vuoksi. He julkaisivat asiasta lehden vuonna 2004, ja avoimen lähdekoodin yhteisö perusti myöhemmin sen pohjalta Apache Hadoopin.

MapReduce

MapReduce voidaan määritellä yksinkertaisesti kahdeksi vaiheeksi - tietojen kartoittamiseksi ja pelkistämiseksi jotain merkityksellistä.

Katsotaanpa taas esimerkkiä:

Sano, että olemme keskisuuria ja tallensimme valtavan tietomme toissijaiseen hajautettuun tietokantaan varastointitarkoituksia varten. Haluamme hakea tietoja, jotka edustavat päivittäin annettujen salakuunteluiden lukumäärää koko huhtikuun 2017 ajan (vuosi sitten).

Tämä esimerkki pidetään mahdollisimman lyhyenä, selkeänä ja yksinkertaisena, mutta kuvitelkaa työskentelevämme kuormien kanssa dataa (esim. Analysoimalla miljardeja pilauksia). Emme selvästikään tallenna kaikkia näitä tietoja yhdelle koneelle, emmekä analysoi kaikkea tätä yhdellä koneella. Emme myöskään tiedustele tuotantotietokantaa vaan pikemminkin jotakin ”varastotietokantaa”, joka on rakennettu erityisesti matalan prioriteetin offline-töihin.

Jokainen Kartta-työ on erillinen solmu, joka muuttaa niin paljon tietoa kuin pystyy. Jokainen työ kulkee kaikki tietyn tallennussolmun tiedot ja kartoittaa sen yksinkertaisena päivämäärän ja numeron yhtenä kokonaisuutena. Sitten suoritetaan kolme välivaihetta (joista kukaan ei puhu) - Shuffle, Sort ja Partition. Periaatteessa he järjestävät tiedot edelleen ja poistavat ne sopivaan pienentämiseen. Koska olemme tekemisissä isojen tietojen kanssa, meillä on jokainen Pienennä työ erotettuna työskentelemään vain yhtenä päivämääränä.

Tämä on hyvä malli ja antaa yllättävän mahdollisuuden tehdä paljon sen kanssa - voit ketjuttaa useita MapReduce-töitä esimerkiksi.

Parempia tekniikoita

MapReduce on nykyään hiukan vanha ja tuo siihen joitain ongelmia. Koska se toimii erissä (töissä), syntyy ongelma, jos jos työ epäonnistuu - joudut käynnistämään koko asian uudelleen. 2 tunnin työn epäonnistuminen voi todella hidastaa koko tietojenkäsittelyputkea, ja et halua sitä ainakaan, varsinkin ruuhka-aikoina.

Toinen ongelma on aika, jonka odotat tulosten saamiseen. Reaaliaikaisissa analyyttisissä järjestelmissä (joissa kaikissa on suurta dataa ja ne käyttävät siten hajautettua laskentaa) on tärkeää, että viimeisimmät sirkutetut tiedot ovat mahdollisimman tuoreita eikä varmasti muutama tunti sitten.

Sinänsä on syntynyt muita arkkitehtuureja, jotka käsittelevät näitä kysymyksiä. Nimittäin Lambda-arkkitehtuuri (eräkäsittelyn ja virtaprosessoinnin sekoitus) ja Kappa-arkkitehtuuri (vain virtaprosessointi). Nämä alan edistysaskeleet ovat tuoneet uusia mahdollistavia työkaluja - Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Hajautetut tiedostojärjestelmät

Hajautettuja tiedostojärjestelmiä voidaan pitää hajautettuina tietovarastoina. Ne ovat sama asia kuin konsepti - suuren määrän tietojen tallentamista ja käyttämistä koneiden klusterissa, jotka kaikki näkyvät yhtenä. Ne yleensä kulkevat käsi kädessä hajautetun tietojenkäsittelyn kanssa.

Tunnettu mittakaava - Yahoo tunnetaan HDFS: n suorittamisesta yli 42 000 solmulla 600 petatatavun datan tallentamiseksi, jo vuonna 2011

Wikipedia määrittelee eron siinä, että hajautetut tiedostojärjestelmät sallivat tiedostojen pääsyn samoilla rajapinnoilla ja semantiikalla kuin paikalliset tiedostot, ei mukautetun sovellusliittymän kautta, kuten Cassandra-kyselykieli (CQL).

HDFS

Hadoopin hajautettu tiedostojärjestelmä (HDFS) on hajautettu tiedostojärjestelmä, jota käytetään hajautettuun laskentaan Hadoop-kehyksen kautta. Laajastandardisella käytöllä sitä käytetään suurten tiedostojen (kooltaan GB tai TB) tallentamiseen ja jäljentämiseen monissa koneissa.

Sen arkkitehtuuri koostuu pääasiassa NameNodes ja DataNodes. NameNodes on vastuussa klusterin metatietojen pitämisestä, kuten mikä solmu sisältää mitkä tiedostolohkot. Ne toimivat verkon koordinaattoreina selvittämällä, missä tiedostojen tallennus ja kopiointi on parasta, seuraamalla järjestelmän terveyttä. DataNodes yksinkertaisesti tallentaa tiedostoja ja suorittaa komentoja, kuten kopioida tiedosto, kirjoittaa uusi tiedosto ja muut.

Ei ole yllättävää, että HDFS: ää käytetään parhaiten Hadoopin kanssa laskentaan, koska se tarjoaa tietoisuuden laskentatehtäviin. Mainitut työt juoksevat sitten solmuihin, jotka tallentavat tietoja. Tämä hyödyntää datapaikallisuutta - optimoi laskelmat ja vähentää verkon kautta tapahtuvaa liikennettä.

IPFS

Planetaarinen tiedostojärjestelmä (IPFS) on jännittävä uusi vertaisverkkoprotokolla / -verkko hajautetulle tiedostojärjestelmälle. Hyödyntämällä Blockchain-tekniikkaa, siinä on täysin hajautettu arkkitehtuuri, jolla ei ole yhtä omistajaa eikä vikakohtaa.

IPFS tarjoaa nimipalvelimen (samanlainen kuin DNS), nimeltään IPNS, ja antaa käyttäjille helpon pääsyn tietoihin. Se tallentaa tiedoston historiallisen versioinnin kautta, samalla tavalla kuin Git tekee. Tämä mahdollistaa pääsyn kaikkiin tiedoston aiempiin tiloihin.

Sitä kehitetään edelleen voimakkaasti (v0.4 kirjoittamisen ajankohdasta lähtien), mutta se on jo nähnyt projekteja, jotka ovat kiinnostuneita rakentamaan sitä (FileCoin).

Jaettu viestit

Viestijärjestelmät tarjoavat keskeisen sijainnin viestien / tapahtumien tallennukselle ja etenemiselle koko järjestelmässäsi. Niiden avulla voit erottaa sovelluksen logiikan suoraan puhumisesta muiden järjestelmien kanssa.

Tunnettu mittakaava - LinkedInin Kafka-klusteri käsitteli 1 biljoonaa viestiä päivässä, huippunsa ollessa 4,5 miljoonaa viestiä sekunnissa.

Yksinkertaisesti sanottuna, viestintäalusta toimii seuraavalla tavalla:

Viesti lähetetään sovelluksesta, joka mahdollisesti sen luo (kutsutaan tuottajaksi), menee alustalle ja sitä lukevat mahdollisesti useat sitä kiinnostavat sovellukset (kutsutaan kuluttajiksi).

Jos joudut tallentamaan tietyn tapahtuman muutamiin paikkoihin (esim. Käyttäjän luominen tietokantaan, varastoon, sähköpostin lähetyspalveluun ja muuhun, mitä keksit), viestintäalusta on puhtain tapa levittää viesti.

Kuluttajat voivat joko vetää tietoja välittäjiltä (pull-malli) tai saada välittäjät työnnämään tietoja suoraan kuluttajiin (push-malli).

On olemassa pari suosittua huippuluokan viestintäalustaa:

RabbitMQ - Viestinvälittäjä, jonka avulla voit hienosäätää viestien suuntaviivojen ohjaamista reitityssääntöjen ja muiden helposti konfiguroitavien asetusten avulla. Voidaan kutsua älykkääksi välittäjäksi, koska siinä on paljon logiikkaa ja se seuraa tiiviisti sen läpi kulkevia viestejä. Tarjoaa sekä AP- että CP-asetukset CAP: stä. Käyttää push-mallia kuluttajien ilmoittamiseen.

Kafka - Viestinvälittäjä (ja kaikki ulkopuolinen alusta), joka on vähän alempi taso, koska siinä ei seurata mitkä viestit on luettu eikä se salli monimutkaista reitityslogiikkaa. Tämä auttaa sitä saavuttamaan uskomattoman suorituskyvyn. Mielestäni tämä on suurin mahdollisuus tässä tilassa avoimen lähdekoodin yhteisön aktiivisella kehittämisellä ja Confluent-tiimin tuella. Kafkalla on kiistatta laajin käyttö huipputeknologiayrityksiltä. Kirjoitin perusteellisen johdannon tähän, missä tutkin yksityiskohtia kaikesta sen hyvyydestä.

Apache ActiveMQ - vanhin joukosta, vuodelta 2004. Käyttää JMS-sovellusliittymää, eli se on suunnattu Java EE -sovelluksiin. Se kirjoitettiin uudelleen nimellä ActiveMQ Artemis, joka tarjoaa erinomaisen suorituskyvyn Kafkan kanssa.

Amazon SQS - AWS: n tarjoama viestintäpalvelu. Voit integroida sen nopeasti olemassa oleviin sovelluksiin ja poistaa tarpeen käsitellä omaa infrastruktuuria, mikä saattaa olla suuri etu, koska Kafkan kaltaisten järjestelmien asennus on vaikeasti hankalaa. Amazon tarjoaa myös kaksi samanlaista palvelua - SNS ja MQ, joista jälkimmäinen on periaatteessa ActiveMQ, mutta jota Amazon hallinnoi.

Hajautetut sovellukset

Jos vierität 5 Rails-palvelinta yhden kuormituksen tasapainottajan takana, joka kaikki on kytketty yhteen tietokantaan, voisitko soittaa, että hajautettu sovellus? Muista määritelmäni ylhäältä:

Hajautettu järjestelmä on ryhmä tietokoneita, jotka toimivat yhdessä näyttääkseen yhtenä tietokoneena loppukäyttäjälle. Näillä koneilla on jaettu tila, ne toimivat samanaikaisesti ja voivat epäonnistua itsenäisesti vaikuttamatta koko järjestelmän käyttöaikaan.

Jos lasket tietokannan jaetuksi tilaksi, voisit väittää, että se voidaan luokitella hajautetuksi järjestelmäksi - mutta olet väärässä, koska olet unohtanut määritelmän "yhdessä työskentelemisen" osan.

Järjestelmä jaetaan vain, jos solmut kommunikoivat keskenään toimiensa koordinoimiseksi.

Siksi jotain sovellusta, joka käyttää sen taustakoodiaan vertaisverkossa, voidaan paremmin luokitella hajautetuksi sovellukseksi. Siitä huolimatta, tämä on kaikki tarpeetonta luokittelua, jolla ei ole mitään tarkoitusta, mutta joka havainnollistaa kuinka huolet olemme ryhmittelemästä asioita yhdessä.

Tunnettu mittakaava - 193 000 solmun BitTorrent-parvi jakson Game of Thrones, huhtikuu 2014

Erlangin virtuaalikone

Erlang on toimiva kieli, jolla on hieno semantiikka samanaikaisuuden, jakauman ja vikasietoisuuden suhteen. Erlang-virtuaalikone itse hoitaa Erlang-sovelluksen jakelun.

Sen malli toimii siten, että sillä on monia eristettyjä kevyitä prosesseja, joilla kaikilla on mahdollisuus puhua keskenään sisäänrakennetun viestinvälitysjärjestelmän kautta. Tätä kutsutaan näyttelijämalliksi, ja Erlang OTP -kirjastoja voidaan ajatella hajautettuina näyttelijäkehyksinä (Akka-linjan mukaisesti JVM: lle).

Malli auttaa sitä saavuttamaan suuren samanaikaisuuden melko yksinkertaisesti - prosessit jakautuvat niitä käyttävän järjestelmän käytettävissä oleviin ytimiin. Koska tämä ei eroa verkkoasetuksista (lukuun ottamatta kykyä pudottaa viestejä), Erlangin VM voi muodostaa yhteyden muihin Erlangin VM-koneisiin, jotka toimivat samassa tietokeskuksessa tai jopa toisella mantereella. Tämä virtuaalikoneiden parvi ajaa yhden sovelluksen ja käsittelee konevikoja haltuunoton kautta (toisen solmun ajoitetaan ajoittuvan).

Itse asiassa jaettu kielikerros lisättiin vikasietoisuuden aikaansaamiseksi. Yhdellä koneella toimiva ohjelmisto on aina vaarassa, että kyseinen kone kuolee ja siirtää sovelluksesi offline-tilaan. Monilla solmuilla toimiva ohjelmisto mahdollistaa helpomman laitteistovirheiden käsittelyn, mikäli sovellus on rakennettu tätä ajatellen.

BitTorrent

BitTorrent on yksi yleisimmin käytetyistä protokollista suurten tiedostojen siirtämiseen verkossa torrentien kautta. Pääideana on helpottaa tiedostojen siirtoa verkon eri vertaisverkkojen välillä tarvitsematta käydä pääpalvelimen läpi.

BitTorrent-asiakasohjelman avulla voit muodostaa yhteyden useisiin tietokoneisiin ympäri maailmaa ladataksesi tiedoston. Kun avaat .torrent-tiedoston, muodostat yhteyden ns. Seurantalaitteeseen, joka on kone, joka toimii koordinaattorina. Se auttaa vertaistunnistuksessa osoittamalla verkon solmut, joissa on haluamasi tiedosto.

näyteverkko

Sinulla on käsitykset kahden tyyppisistä käyttäjistä, piikkilukija ja kylvökone. Koehenkilö on käyttäjä, joka lataa tiedoston, ja kylvökone on käyttäjä, joka lataa mainitun tiedoston.

Hauska asia vertaisverkoissa on, että tavallisena käyttäjänä sinulla on kyky liittyä verkkoon ja osallistua siihen.

BitTorrent ja sen edeltäjät (Gnutella, Napster) antavat sinun vapaaehtoisesti isännöidä tiedostoja ja ladata niitä haluaville käyttäjille. Syynä BitTorrent on niin suosittu, että se oli ensimmäinen laatuaan tarjota kannustimia osallistumiseen verkkoon. Vapauttaminen, jossa käyttäjä lataa vain tiedostoja, oli ongelma aiempien tiedostojenjakoprotokollien kanssa.

BitTorrent ratkaisi vapaamuodon jossain määrin tekemällä kylvökoneita lisäämään niitä, jotka tarjoavat parhaan latausnopeuden. Se toimii kannustamalla sinua lähettämään tiedostoa ladatessasi. Valitettavasti sen jälkeen kun olet valmis, mikään ei tee sinua pysymään aktiivisena verkossa. Tämä aiheuttaa verkon kylvökoneiden puutteen, joilla on koko tiedosto, ja koska protokolla luottaa suuresti sellaisiin käyttäjiin, ratkaisut, kuten yksityiset seurantalaitteet, toteutuivat. Yksityiset jäljittäjät vaativat, että olet jäsen yhteisössä (usein vain kutsuttava) voidaksesi osallistua hajautettuun verkkoon.

Pellolla saavutetun edistymisen jälkeen keksittiin jäljittämättömät torrentit. Tämä oli päivitys BitTorrent-protokollaan, joka ei luottanut keskitettyihin seurantalaitteisiin metatietojen keräämisessä ja vertaisten löytämisessä, vaan käytti sen sijaan uusia algoritmeja. Yksi tällainen esimerkki on Kademlia (Mainline DHT), hajautettu hash table (DHT), jonka avulla voit löytää ikätovereita muiden vertaisten kautta. Itse asiassa jokainen käyttäjä suorittaa jäljittäjän tehtävät.

Jaetut pääkirjat

Hajautettua pääkirjaa voidaan ajatella muuttumattomana, vain liitteenä olevana tietokannana, joka replikoidaan, synkronoidaan ja jaetaan jaetun verkon kaikkien solmujen välillä.

Tunnettu mittakaava - Ethereum-verkosto suoritti huippunsa 1,3 miljoonaa tapahtumaa päivässä 4. tammikuuta 2018.

Ne hyödyntävät tapahtumien hankintakuviota, jonka avulla voit luoda pääkirjan tilan milloin tahansa sen historiassa.

Blockchain

Blockchain on nykyinen taustalla oleva tekniikka, jota käytetään hajautettuihin pääkirjaan ja joka itse asiassa merkitsi niiden alkua. Tämä uusin ja suurin hajautetun tilan innovaatio mahdollisti ensimmäisen todella jaetun maksuprotokollan - Bitcoin - luomisen.

Blockchain on hajautettu pääkirja, joka sisältää tilatun luettelon kaikista tapahtumista, joita sen verkossa on koskaan tapahtunut. Tapahtumat on ryhmitelty ja tallennettu lohkoihin. Koko lohkoketju on olennaisesti linkitetty luettelo lohkoista (tästä myös nimi). Mainitut lohkot ovat laskennallisesti kalliita luoda ja on tiiviisti kytketty toisiinsa salaustekniikan avulla.

Yksinkertaisesti sanottuna, jokainen lohko sisältää erityisen hajautuksen (joka alkaa X nolla määrällä) nykyisen lohkon sisällöstä (Merkle-puun muodossa) plus edellisen lohkon hajautus. Tämä tiiviste vaatii paljon prosessoritehoa tuottamaan, koska ainoa tapa keksiä se on raa'an voiman kautta.

Yksinkertaistettu lohkoketju

Kaivostyöläiset ovat solmuja, jotka yrittävät laskea tiivisteen (bruttovoiman kautta). Kaivostyöläiset kilpailevat keskenään siitä, kuka voi keksiä satunnaisen merkkijonon (kutsutaan nonssiksi), joka yhdistettynä sisältöön tuottaa edellä mainitun hash. Kun joku löytää oikean nonin - hän lähettää sen koko verkkoon. Sitten jokainen solmu varmentaa sanotun merkkijonon yksinään ja hyväksyy heidän ketjuunsa.

Tämä tarkoittaa järjestelmää, jossa lohkoketjun muokkaaminen on kohtuuttoman kallista ja on kohtuuttoman helppoa tarkistaa, ettei sitä ole rikottu.

Lohkon sisällön muuttaminen on kallista, koska se tuottaisi erilaisen hajautuksen. Muista, että jokaisen seuraavan lohkon tiiviste on siitä riippuvainen. Jos muutat tapahtumaa yllä olevan kuvan ensimmäisessä lohkossa - vaihtaisit Merkle-juuren. Tämä puolestaan ​​muuttaa lohkon tiivistettä (todennäköisimmin ilman tarvittavia johtavia nollia) - se muuttaisi lohkon nro 2 hajauttamista ja niin edelleen ja niin edelleen. Tämä tarkoittaa, että joudut pakottamaan uusi pakkaus jokaiselle lohkolle juuri muokkaamasi jälkeen.

Verkko luottaa ja toistaa aina pisin voimassa oleva ketju. Jotta huijata järjestelmää ja lopulta tuottaa pidempi ketju, tarvitset yli 50% kaikkien solmujen käyttämästä prosessorin kokonaisteholta.

Blockchain-ketjua voidaan ajatella jakautuneena mekanismina syntyvän konsensuksen saavuttamiseksi. Konsensusta ei saavuteta nimenomaisesti - konsensuksen saavuttamiseksi ei ole vaaleja tai kiinteää hetkeä. Sen sijaan konsensus on syntyvä tuote tuhansien riippumattomien solmujen asynkronisesta vuorovaikutuksesta, kaikki seuraavat protokollasääntöjä.

Tästä ennennäkemättömästä innovaatiosta on äskettäin tullut teknologia-alueen nousukausi, ja ihmisten ennustetaan merkitsevän Web 3.0: n luomista. Se on ehdottomasti tällä hetkellä ohjelmistotekniikan maailman jännittävin tila, joka on täynnä erittäin haastavia ja mielenkiintoisia ongelmia, jotka odottavat ratkaisua.

Bitcoin

Aikaisemmista hajautetuista maksuprotokollista puuttui tapa taata kaksinkertaisen kulumisen ongelma käytännössä reaaliajassa hajautetulla tavalla. Tutkimus on tuottanut mielenkiintoisia ehdotuksia [1], mutta Bitcoin toteutti ensimmäisenä käytännön ratkaisun, jolla on selvät edut muihin nähden.

Kaksinkertaisen kulutusongelman mukaan näyttelijä (esim. Bob) ei voi viettää yhtä resurssiaan kahteen paikkaan. Jos Bobilla on 1 dollari, hänen ei pitäisi voida antaa sitä sekä Alicelle että Zackille - se on vain yksi omaisuus, sitä ei voi kopioida. Osoittautuu, että on todella vaikeaa todella saavuttaa tämä takuu hajautetussa järjestelmässä. On olemassa mielenkiintoisia lieventämistä koskevia lähestymistapoja, jotka edeltävät blockchainia, mutta ne eivät ratkaise ongelmaa kokonaan käytännöllisesti.

Tuplakulut voidaan ratkaista helposti Bitcoinilla, koska ketjuun lisätään vain yksi lohko kerrallaan. Tuplarahan käyttäminen on mahdotonta yhdessä lohkossa, joten vaikka kaksi lohkoa luodaan samanaikaisesti - vain yksi tulee olemaan mahdollisimmin pisin ketju.

Bitcoin luottaa vaikeuteen kerätä prosessoritehoa.

Vaikka äänestysjärjestelmässä hyökkääjän on lisättävä vain solmuja verkkoon (mikä on helppoa, koska vapaa pääsy verkkoon on suunnittelun tavoite), suorittimen tehopohjaisessa järjestelmässä hyökkääjä kohtaa fyysisen rajoituksen: pääsy yhä enemmän tehokas laitteisto.

Tämä on myös syy, jonka pahantahtoisten solmuryhmien on hallittava yli 50% verkon laskentatehosta onnistuneen hyökkäyksen toteuttamiseksi. Vähemmän kuin, ja muu verkko luo pidemmän lohkon ketjun nopeammin.

Ethereum

Ethereumia voidaan ajatella ohjelmoitavana blockchain-pohjaisena ohjelmistoalustana. Sillä on oma kryptovaluutta (Ether), joka polttaa älykkäiden sopimusten käyttöönottoa blockchainissa.

Älykkäät sopimukset ovat pala koodia, joka tallennetaan yhtenä tapahtumana Ethereumin lohkoketjussa. Koodin suorittamiseksi sinun tarvitsee vain tehdä kauppa, jonka määränpäänä on älykäs sopimus. Tämä puolestaan ​​saa kaivoksen solmut suorittamaan koodin ja sen muutokset. Koodi suoritetaan Ethereum-virtuaalikoneen sisällä.

Älykkäiden sopimusten kirjoittamiseen käytetään solidia, Ethereumin alkuperäistä ohjelmointikieltä. Se on kattava ja täydellinen ohjelmointikieli, joka on suorassa liittymässä Ethereum-lohkoketjuun, jolloin voit kysyä tilaa kuten saldot tai muut älykkäät sopimustulokset. Äärettömien silmukoiden estämiseksi koodin suorittaminen vaatii jonkin verran eetteriä.

Koska lohkoketju voidaan tulkita tilamuutosten sarjana, Ethereumin ja vastaavien alustojen päälle on rakennettu paljon hajautettuja sovelluksia (DApp).

Jaettujen pääkirjojen lisäkäytöt

Olemassaolotodistus - Palvelu, jolla tallennetaan nimettömästi ja turvallisesti todisteita tietyn digitaalisen asiakirjan olemassaolosta jossain ajankohtana. Hyödyllinen asiakirjan eheyden, omistajuuden ja aikaleiman varmistamisessa.

Hajautetut autonomiset organisaatiot (DAO) - organisaatiot, jotka käyttävät blockchain-keinoa päästä yksimielisyyteen organisaation parannusehdotuksista. Esimerkkejä ovat Dashin hallintojärjestelmä, SmartCash-projekti

Hajautettu todennus - Tallenna henkilöllisyytesi ryhmäketjussa, jotta voit käyttää kertakirjautumista (SSO) kaikkialla. Sovrin, kansalainen

Ja monia, paljon enemmän. Hajautettu pääkirjateknologia todella avasi loputtomia mahdollisuuksia. Jotkut keksitään todennäköisesti puhuessamme!

Yhteenveto

Tämän artikkelin lyhyessä vaiheessa onnistuimme määrittelemään, mikä on hajautettu järjestelmä, miksi käytit sellaista ja siirryt jokaisen luokan päälle hieman. Muutamia tärkeitä asioita on muistettava:

  • Hajautetut järjestelmät ovat monimutkaisia
  • Ne valitaan mittakaavan ja hinnan tarpeen perusteella
  • Niiden kanssa on vaikeampaa työskennellä
  • CAP-lause - Johdonmukaisuuden / saatavuuden kompromissi
  • Heillä on 6 luokkaa - tietovarastot, tietojenkäsittely, tiedostojärjestelmät, viestijärjestelmät, luettelot, sovellukset

Rehellisesti sanottuna olemme tuskin koskettaneet hajautettujen järjestelmien pintaa. Minulla ei ollut mahdollisuutta käsitellä ja selittää perusteellisesti sellaisia ​​ydinongelmia kuten konsensus, toisintamisstrategiat, tapahtumien tilaaminen ja aika, vikasietoisuus, viestin lähettäminen verkossa ja muut.

varovaisuus

Annan sinulle jakaa varoituksen:

Sinun on kaukana hajautetuista järjestelmistä niin paljon kuin pystyt. Heidän itsensä kanssa aiheuttama monimutkaisuus ei ole vaivan arvoista, jos pystyt välttämään ongelman joko ratkaisemalla sen eri tavalla tai jollain muulla out-of-the-box-ratkaisulla.

[1]
Kaksinkertaisen kulumisen torjuminen käyttämällä osuuskunta P2P-järjestelmiä, 25. – 27. Kesäkuuta 2007 - ehdotettu ratkaisu, jossa jokainen kolikko voi vanhentua ja joka on nimetty todistajaksi (validoijaksi) käytetylle rahalle.

Bitgold, joulukuu 2005 - Korkean tason kuvaus protokollasta, joka on erittäin samanlainen kuin Bitcoinin. Sanotaan, että tämä on Bitcoinin edeltäjä.

Lisäjakelujärjestelmien lukeminen:

Suunnittelee tietointensiivisiä sovelluksia, Martin Kleppmann - Upea kirja, joka kattaa kaiken hajautettuissa järjestelmissä ja muissa.

Pilvitietotekniikan erikoistuminen, Illinoisin yliopisto, Coursera - Pitkä kurssisarja (6), jotka menevät hajautettujen järjestelmäkonseptien, sovellusten yli

Jepsen - Blogi, joka selittää paljon hajautettua tekniikkaa (ElasticSearch, Redis, MongoDB jne.)

Kiitos aikaa lukea tämä pitkä (~ 5600 sanaa) artikkeli!

Jos sattumalta löysit tämän informatiivisen tai luulit sen tarjoavan sinulle arvoa, varmista, että annat sille niin monta klappia, että uskot sen ansaitsevan, ja harkitse jakamista ystäväsi kanssa, joka voisi käyttää johdantoa tähän upeaan opintokenttään.

~ Stanislav Kozlovski

Päivittää

Työskentelen tällä hetkellä Confluentissa. Confluent on Apache Kafkan perustajien perustama Big Data -yritys! Olen erittäin kiitollinen heille antamasta tilaisuudesta - työskentelen tällä hetkellä itse Kafkassa, mikä on mahtavaa! Me Confluentissa autamme muotoilemaan koko avoimen lähdekoodin Kafka-ekosysteemin, mukaan lukien uuden hallinnoidun Kafka-palveluna -pilvipalvelun.

Palkaamme paljon työpaikkoja (etenkin SRE / Software Engineers) Euroopassa ja Yhdysvalloissa! Jos olet kiinnostunut työskentelemään itse Kafkan parissa, etsimään uusia mahdollisuuksia tai vain uteliaana - muista viesti minulle Twitterissä ja jaan kaikki hienot etuisuudet, jotka syntyvät työskentelemällä lahden alueen yrityksessä.