Arkitettura u kapaċitajiet ta' Tarantool Data Grid

Arkitettura u kapaċitajiet ta' Tarantool Data Grid

Fl-2017, irbaħna kompetizzjoni biex niżviluppaw il-qalba transazzjonali tan-negozju tal-investiment tal-Alfa-Bank u bdejna x-xogħol (f'HighLoad++ 2018 b'rapport dwar il-qalba tan-negozju tal-investiment mwettqa Vladimir Drynkin, kap tal-qalba transazzjonali tan-negozju ta 'investiment ta' Alfa Bank). Din is-sistema kellha tiġbor id-dejta tat-tranżazzjonijiet minn sorsi differenti f'formati varji, iġġib id-dejta f'forma unifikata, taħżenha u tipprovdi aċċess għaliha.

Matul il-proċess ta 'żvilupp, is-sistema evolviet u kisbet funzjonalità, u f'xi punt indunajna li konna qed nikkristallizzaw xi ħaġa ħafna aktar minn sempliċiment softwer ta' applikazzjoni maħluqa biex issolvi firxa strettament definita ta 'kompiti: irnexxielna sistema għall-bini ta 'applikazzjonijiet distribwiti b'ħażna persistenti. L-esperjenza li ksibna ffurmat il-bażi ta 'prodott ġdid - Tarantool Data Grid (TDG).

Irrid nitkellem dwar l-arkitettura TDG u s-soluzzjonijiet li wasalna għalihom matul il-proċess ta 'żvilupp, nintroduċik għall-funzjonalità ewlenija u nuri kif il-prodott tagħna jista' jsir il-bażi għall-bini ta 'soluzzjonijiet kompluti.

Arkitetturalment, qsamna s-sistema f'separati rwoli, li kull wieħed minnhom huwa responsabbli biex isolvi ċertu firxa ta 'problemi. Istanza ta' applikazzjoni waħda li taħdem timplimenta tip ta' rwol wieħed jew aktar. Jista' jkun hemm diversi rwoli tal-istess tip fi cluster:

Arkitettura u kapaċitajiet ta' Tarantool Data Grid

konnettur

Konnettur huwa responsabbli għall-komunikazzjoni mad-dinja ta 'barra; il-kompitu tagħha huwa li taċċetta t-talba, teżaminaha, u jekk dan jirnexxi, imbagħad ibgħat id-dejta għall-ipproċessar lill-proċessur tal-input. Aħna nappoġġjaw formati HTTP, SOAP, Kafka, FIX. L-arkitettura tippermettilek sempliċement iżżid appoġġ għal formati ġodda, bl-appoġġ għal IBM MQ dalwaqt. Jekk l-analiżi tat-talba falliet, il-konnettur jirritorna żball; inkella, se twieġeb li t-talba ġiet ipproċessata b'suċċess, anki jekk seħħ żball matul l-ipproċessar ulterjuri tagħha. Dan sar speċifikament sabiex jaħdmu ma’ sistemi li ma jafux jirrepetu talbiet – jew, għall-kuntrarju, jagħmluh b’mod persistenti wisq. Sabiex ma titlifx id-data, jintuża kju ta 'tiswija: l-oġġett jidħol l-ewwel fih u biss wara li l-ipproċessar b'suċċess jitneħħa minnu. L-amministratur jista 'jirċievi twissijiet dwar oġġetti li jibqgħu fil-kju tat-tiswija, u wara li jelimina żball tas-softwer jew ħsara fil-hardware, erġa' pprova.

Input proċessur

Il-proċessur tal-Input jikklassifika d-dejta riċevuta skont il-karatteristiċi karatteristiċi u jsejjaħ proċessuri xierqa. Handlers huma kodiċi Lua li jimxi f'sandbox, u għalhekk ma jistgħux jaffettwaw il-funzjonament tas-sistema. F'dan l-istadju, id-dejta tista 'titnaqqas għall-forma meħtieġa, u, jekk meħtieġ, jista' jitnieda numru arbitrarju ta 'kompiti li jistgħu jimplimentaw il-loġika meħtieġa. Pereżempju, fil-prodott MDM (Master Data Management) mibni fuq Tarantool Data Grid, meta żżid utent ġdid, sabiex ma jonqosx l-ipproċessar tat-talba, inniedu l-ħolqien ta 'rekord tad-deheb bħala kompitu separat. Is-sandbox jappoġġja talbiet għall-qari, il-bidla u ż-żieda tad-dejta, jippermettilek li twettaq xi funzjoni fuq ir-rwoli kollha tat-tip ta 'ħażna u l-aggregazzjoni tar-riżultat (mappa/naqqas).

Handlers jistgħu jiġu deskritti f'fajls:

sum.lua

local x, y = unpack(...)
return x + y

U mbagħad, iddikjarat fil-konfigurazzjoni:

functions:
  sum: { __file: sum.lua }

Għaliex Lua? Lua hija lingwa sempliċi ħafna. Ibbażat fuq l-esperjenza tagħna, ftit sigħat wara li jsiru jafu, in-nies jibdew jiktbu kodiċi li jsolvi l-problema tagħhom. U dawn mhumiex biss żviluppaturi professjonali, iżda, pereżempju, analisti. Barra minn hekk, grazzi għall-kompilatur jit, Lua jaħdem malajr ħafna.

Ħażna

Ħażna taħżen data persistenti. Qabel ma tissejvja, id-dejta tiġi vvalidata kontra l-iskema tad-dejta. Biex niddeskrivu ċ-ċirkwit nużaw format estiż Apache Avro. Eżempju:

{
    "name": "User",
    "type": "record",
    "logicalType": "Aggregate",
    "fields": [ 
        { "name": "id", "type": "string"}, 
        {"name": "first_name", "type": "string"}, 
        {"name": "last_name", "type": "string"} 
    ], 
    "indexes": ["id"] 
}

Ibbażat fuq din id-deskrizzjoni, DDL (Data Definition Language) hija ġġenerata awtomatikament għat-Tarantula DBMS u GraphQL schema għall-aċċess tad-dejta.

Replikazzjoni asinkronika tad-dejta hija appoġġjata (hemm pjanijiet biex tiżdied waħda sinkronika).

Proċessur tal-ħruġ

Xi drabi huwa meħtieġ li l-konsumaturi esterni jiġu nnotifikati dwar il-wasla ta 'dejta ġdida; għal dan il-għan, hemm ir-rwol tal-proċessur tal-Output. Wara li tissejvja d-dejta, tista 'tiġi mgħoddija lill-handler korrispondenti (per eżempju, biex tinġieb fil-formola meħtieġa mill-konsumatur) - u mbagħad mgħoddija lill-konnettur biex tintbagħat. Hawnhekk jintuża wkoll kju ta' tiswija: jekk ħadd ma aċċetta l-oġġett, l-amministratur jista' jerġa' jipprova aktar tard.

Skalar

Ir-rwoli tal-konnettur, tal-proċessur tad-dħul u tal-proċessur tal-ħruġ huma mingħajr stat, u jippermettulna nskala s-sistema orizzontalment billi sempliċement inżidu istanzi ġodda ta 'applikazzjoni bit-tip ta' rwol mixtieq attivat. Il-ħażna tintuża għal skalar orizzontali approċċ biex torganizza cluster bl-użu ta' bramel virtwali. Wara li żżid server ġdid, xi wħud mill-bramel mis-servers qodma jiġu mċaqalqa għas-server il-ġdid fl-isfond; dan jiġri b'mod trasparenti lill-utenti u ma jaffettwax l-operat tas-sistema kollha.

Proprjetajiet tad-Data

L-oġġetti jistgħu jkunu kbar ħafna u jkun fihom oġġetti oħra. Aħna niżguraw l-atomiċità taż-żieda u l-aġġornament tad-dejta billi naħżnu oġġett bid-dipendenzi kollha f'barmil virtwali wieħed. Dan jipprevjeni li l-oġġett ikun "imxerred" fuq diversi servers fiżiċi.

Verżjoni hija appoġġjata: kull aġġornament ta 'oġġett joħloq verżjoni ġdida, u aħna dejjem nistgħu nieħdu porzjon ta' ħin u naraw kif id-dinja dehret dak iż-żmien. Għal data li m'għandhiex bżonn storja twila, nistgħu nillimitaw in-numru ta 'verżjonijiet jew saħansitra naħżnu waħda biss - l-aħħar waħda - jiġifieri, essenzjalment tiddiżattiva l-verżjoni għal ċertu tip. Tista 'wkoll tillimita l-istorja biż-żmien: pereżempju, ħassar l-oġġetti kollha ta' ċertu tip ta 'aktar minn sena. L-arkivjar huwa appoġġjat ukoll: nistgħu nħottu oġġetti eqdem miż-żmien speċifikat, u nħallu spazju fil-cluster.

kompiti

Fost il-karatteristiċi interessanti, ta 'min jinnota l-abbiltà li tniedi kompiti fuq skeda, fuq talba tal-utent, jew b'mod programmatiku mis-sandbox:

Arkitettura u kapaċitajiet ta' Tarantool Data Grid

Hawnhekk naraw rwol ieħor - runner. Dan ir-rwol huwa mingħajr stat, u istanzi ta' applikazzjoni addizzjonali b'dan ir-rwol jistgħu jiġu miżjuda mal-cluster kif meħtieġ. Ir-responsabbiltà tar-runner hija li jlesti l-kompiti. Kif imsemmi, huwa possibbli li jiġu ġġenerati kompiti ġodda mis-sandbox; huma ffrankati fi kju fuq il-ħażna u mbagħad eżegwiti fuq ir-runner. Dan it-tip ta’ xogħol jissejjaħ Ġob. Għandna wkoll tip ta 'kompitu msejjaħ Task - dawn huma kompiti definiti mill-utent li jimxu fuq skeda (bl-użu tas-sintassi cron) jew fuq talba. Biex tniedi u ssegwi kompiti bħal dawn, għandna maniġer tal-kompiti konvenjenti. Sabiex din il-funzjonalità tkun disponibbli, trid tattiva r-rwol tal-iskedar; dan ir-rwol għandu stat, għalhekk ma jiskalax, li, madankollu, mhuwiex meħtieġ; fl-istess ħin, bħall-irwoli l-oħra kollha, jista 'jkollu replika li tibda taħdem jekk il-kaptan jirrifjuta f'daqqa.

logger

Rwol ieħor huwa msejjaħ logger. Jiġbor zkuk mill-membri kollha tal-cluster u jipprovdi interface għat-tlugħ u l-wiri tagħhom permezz tal-interface tal-web.

Servizzi

Ta’ min isemmi li s-sistema tagħmilha faċli biex jinħolqu servizzi. Fil-fajl tal-konfigurazzjoni, tista 'tispeċifika liema talbiet jintbagħtu lil handler miktub mill-utent li jaħdem fis-sandbox. F'dan il-handler, tista', pereżempju, tmexxi xi tip ta' mistoqsija analitika u tirritorna r-riżultat.

Is-servizz huwa deskritt fil-fajl tal-konfigurazzjoni:

services:
   sum:
      doc: "adds two numbers"
      function: sum
      return_type: int
      args:
         x: int
         y: int

L-API GraphQL hija ġġenerata awtomatikament u s-servizz isir disponibbli biex iċempel:

query {
   sum(x: 1, y: 2) 
}

Dan se jsejjaħ lill-handler sumli se jirritorna r-riżultat:

3

Mistoqsija Profiling u Metriċi

Biex nifhmu t-tħaddim tas-sistema u t-talbiet tal-profiling, implimentajna appoġġ għall-protokoll OpenTracing. Is-sistema tista’ tibgħat informazzjoni fuq talba lil għodod li jappoġġjaw dan il-protokoll, bħal Zipkin, li jippermettilek tifhem kif it-talba ġiet eżegwita:

Arkitettura u kapaċitajiet ta' Tarantool Data Grid

Naturalment, is-sistema tipprovdi metriċi interni li jistgħu jinġabru bl-użu ta 'Prometheus u jiġu viżwalizzati bl-użu ta' Grafana.

Skjerament

Tarantool Data Grid jista 'jiġi skjerat minn pakketti RPM jew arkivju, bl-użu ta' utilità mid-distribuzzjoni jew Ansible, hemm ukoll appoġġ għal Kubernetes (Operatur ta' Tarantool Kubernetes).

L-applikazzjoni li timplimenta l-loġika tan-negozju (konfigurazzjoni, handlers) titgħabba fil-cluster tal-Grid tad-Data ta’ Tarantool skjerata fil-forma ta’ arkivju permezz tal-UI jew bl-użu ta’ skript permezz tal-API pprovduta minna.

Kampjuni ta' Applikazzjonijiet

Liema applikazzjonijiet jistgħu jinħolqu bl-użu ta' Tarantool Data Grid? Fil-fatt, il-biċċa l-kbira tal-kompiti tan-negozju huma b'xi mod relatati mal-ipproċessar, il-ħażna u l-aċċess għall-fluss tad-dejta. Għalhekk, jekk għandek flussi kbar ta 'dejta li jeħtieġ li tkun maħżuna u aċċessata b'mod sigur, allura l-prodott tagħna jista' jiffranka ħafna ħin ta 'żvilupp u jiffoka fuq il-loġika tan-negozju tiegħek.

Pereżempju, irridu niġbru informazzjoni dwar is-suq tal-proprjetà, sabiex fil-futur, pereżempju, ikollna informazzjoni dwar l-aħjar offerti. F'dan il-każ, aħna se nenfasizzaw il-kompiti li ġejjin:

  1. Robots li jiġbru informazzjoni minn sorsi miftuħa se jkunu s-sorsi tad-dejta tagħna. Tista' ssolvi din il-problema billi tuża soluzzjonijiet lesti jew tikteb kodiċi fi kwalunkwe lingwa.
  2. Sussegwentement, Tarantool Data Grid se taċċetta u tissejvja d-data. Jekk il-format tad-dejta minn sorsi differenti huwa differenti, allura tista 'tikteb kodiċi f'Lua li se twettaq il-konverżjoni għal format wieħed. Fl-istadju ta 'qabel l-ipproċessar, int tkun tista' wkoll, pereżempju, tiffiltra offerti duplikati jew taġġorna addizzjonalment informazzjoni dwar aġenti li jaħdmu fis-suq fid-database.
  3. Issa diġà għandek soluzzjoni skalabbli fi raggruppament li jista 'jimtela b'dejta u jagħmel selezzjonijiet ta' dejta. Imbagħad tista 'timplimenta funzjonalità ġdida, pereżempju, tikteb servizz li se tagħmel talba għad-dejta u tagħti l-aktar offerta vantaġġuża kuljum - dan ikun jeħtieġ ftit linji fil-fajl tal-konfigurazzjoni u ftit kodiċi Lua.

Xi jmiss?

Il-prijorità tagħna hija li ntejbu l-faċilità ta 'żvilupp bl-użu Tarantool Data Grid. Pereżempju, dan huwa IDE b'appoġġ għal handlers ta' profiling u debugging li jaħdmu f'sandbox.

Aħna wkoll nagħtu attenzjoni kbira lill-kwistjonijiet ta 'sikurezza. Bħalissa għaddejjin minn ċertifikazzjoni minn FSTEC tar-Russja biex nikkonfermaw il-livell għoli ta 'sigurtà u nissodisfaw ir-rekwiżiti għaċ-ċertifikazzjoni ta' prodotti ta 'softwer użati f'sistemi ta' informazzjoni ta 'dejta personali u sistemi ta' informazzjoni tal-gvern.

Sors: www.habr.com

Żid kumment