Odnoklassniki je najväčším používateľom Apache Cassandra na RuNet a jedným z najväčších na svete. Cassandru sme začali používať v roku 2010 na ukladanie hodnotení fotografií a teraz Cassandra spravuje petabajty údajov na tisíckach uzlov, v skutočnosti sme dokonca vyvinuli vlastné
12. septembra v našej kancelárii v Petrohrade budeme konať
V predvečer stretnutia sme sa s Olegom rozprávali o odolnosti distribuovaných systémov s Cassandrou, opýtali sme sa, o čom bude na stretnutí hovoriť a prečo sa oplatí zúčastniť sa tohto podujatia.
Oleg začal svoju programátorskú kariéru už v roku 1995. Vyvinul softvér v bankovníctve, telekomunikáciách a doprave. Od roku 2007 pracuje ako vedúci vývojár v Odnoklassniki v tíme platformy. Medzi jeho zodpovednosti patrí vývoj architektúr a riešení pre systémy s vysokou záťažou, veľké dátové sklady a riešenie problémov výkonu a spoľahlivosti portálu. V rámci spoločnosti školí aj vývojárov.
- Oleg, ahoj! V máji sa uskutočnilo
Vývojári s rôznym zázemím z rôznych spoločností prišli s vlastnou bolesťou, nečakanými riešeniami problémov a úžasnými príbehmi. Väčšinu stretnutia sa nám podarilo uskutočniť v diskusnom formáte, no diskusií bolo toľko, že sme sa mohli dotknúť len tretiny plánovaných tém. Veľkú pozornosť sme venovali tomu, ako a čo sledujeme na príklade našich reálnych produkčných služieb.
Zaujalo ma to a veľmi sa mi to páčilo.
- Súdiac podľa oznámenia,
Cassandra je typický zaneprázdnený distribuovaný systém s obrovským množstvom funkcií nad rámec priameho vybavovania požiadaviek používateľov: klebety, detekcia zlyhania, šírenie zmien schémy, rozširovanie/zmenšovanie klastra, antientropia, zálohovanie a obnova atď. Ako v každom distribuovanom systéme, so zvyšujúcim sa množstvom hardvéru sa zvyšuje pravdepodobnosť zlyhania, takže prevádzka produkčných klastrov Cassandra si vyžaduje hlboké pochopenie jeho štruktúry, aby bolo možné predvídať správanie v prípade porúch a činnosti operátora. Po mnohých rokoch používania Cassandry sme
— Keď príde reč na Cassandru, čo máte na mysli pod pojmom tolerancia chýb?
V prvom rade, samozrejme, schopnosť systému prežiť typické zlyhania hardvéru: stratu strojov, diskov alebo sieťového pripojenia s uzlami/dátovými centrami. Samotná téma je však oveľa širšia a zahŕňa najmä obnovu po zlyhaniach, vrátane porúch, na ktoré sú ľudia málokedy pripravení, napríklad chyby operátora.
— Môžete uviesť príklad najviac zaťaženého a najväčšieho dátového klastra?
Jedným z našich najväčších klastrov je darčekový klaster: viac ako 200 uzlov a stovky TB údajov. Nie je však najviac zaťažený, pretože je pokrytý distribuovanou vyrovnávacou pamäťou. Naše najvyťaženejšie klastre zvládajú desaťtisíce RPS pre zápis a tisíce RPS pre čítanie.
- Wow! Ako často sa niečo zlomí?
— Ako riešite takéto odmietnutia?
Od samého začiatku fungovania Cassandry a prvých incidentov sme pracovali na mechanizmoch zálohovania a obnovy z nich, budovali postupy nasadenia, ktoré zohľadňujú stav klastrov Cassandra a napríklad neumožňujú reštart uzlov. ak je možná strata údajov. O tom všetkom sa plánujeme porozprávať na stretnutí.
— Ako ste povedali, neexistujú absolútne spoľahlivé systémy. Na aké zlyhania sa pripravujete a dokážete prežiť?
Ak hovoríme o našich inštaláciách klastrov Cassandra, používatelia si nič nevšimnú, ak stratíme niekoľko strojov v jednom DC alebo jeden celý DC (toto sa stalo). S nárastom počtu DC uvažujeme o tom, že začneme zabezpečovať prevádzkyschopnosť v prípade výpadku dvoch DC.
— Čo si myslíte, že Cassandre chýba z hľadiska odolnosti voči chybám?
Cassandra, rovnako ako mnoho iných skorých NoSQL obchodov, vyžaduje hlboké pochopenie svojej vnútornej štruktúry a prebiehajúcich dynamických procesov. Povedal by som, že jej chýba jednoduchosť, predvídateľnosť a pozerateľnosť. Bude však zaujímavé vypočuť si názory ostatných účastníkov stretnutia!
Oleg, veľmi pekne ďakujem, že si si našiel čas na zodpovedanie otázok!
Všetkých, ktorí chcú komunikovať s odborníkmi v oblasti prevádzky Apache Cassandra, čakáme na meetupe 12. septembra v našej petrohradskej kancelárii.
Príďte, bude to zaujímavé!