Faaji ati awọn agbara ti Tarantool Data Grid

Faaji ati awọn agbara ti Tarantool Data Grid

Ni 2017, a ṣẹgun idije kan lati ṣe agbekalẹ ipilẹ iṣowo ti iṣowo idoko-owo Alfa-Bank ati bẹrẹ iṣẹ (ni HighLoad ++ 2018 pẹlu ijabọ kan lori ipilẹ ti iṣowo idoko-owo ṣe Vladimir Drynkin, ori ti iṣowo iṣowo ti iṣowo idoko-owo ti Alfa Bank). Eto yii yẹ lati ṣajọpọ data idunadura lati awọn orisun oriṣiriṣi ni awọn ọna kika pupọ, mu data naa wa sinu fọọmu iṣọkan, tọju rẹ ati pese iraye si.

Lakoko ilana idagbasoke, eto naa wa ati gba iṣẹ ṣiṣe, ati pe ni aaye kan a rii pe a n ṣe ohunkan diẹ sii ju sọfitiwia ohun elo kan ti a ṣẹda lati yanju awọn iṣẹ ṣiṣe asọye to muna: a ṣaṣeyọri. eto fun ile pin awọn ohun elo pẹlu jubẹẹlo ipamọ. Iriri ti a gba ni ipilẹ ti ọja tuntun - Tarantool Data akoj (TDG).

Mo fẹ lati sọrọ nipa faaji TDG ati awọn solusan ti a wa si lakoko ilana idagbasoke, ṣafihan ọ si iṣẹ ṣiṣe akọkọ ati ṣafihan bii ọja wa ṣe le di ipilẹ fun kikọ awọn solusan pipe.

Architecturally, a pin awọn eto si lọtọ ipa, kọọkan ti o jẹ lodidi fun lohun kan awọn ibiti o ti isoro. Apeere ohun elo nṣiṣẹ ẹyọkan n ṣe awọn iru ipa kan tabi diẹ sii. Awọn ipa pupọ le jẹ ti iru kanna ninu iṣupọ kan:

Faaji ati awọn agbara ti Tarantool Data Grid

Asopọ

Asopọmọra jẹ iduro fun ibaraẹnisọrọ pẹlu aye ita; Iṣẹ-ṣiṣe rẹ ni lati gba ibeere naa, sọ di mimọ, ati pe ti eyi ba ṣaṣeyọri, lẹhinna firanṣẹ data naa fun sisẹ si ero isise titẹ sii. A ṣe atilẹyin HTTP, SOAP, Kafka, awọn ọna kika FIX. Awọn faaji gba ọ laaye lati ṣafikun atilẹyin nirọrun fun awọn ọna kika tuntun, pẹlu atilẹyin fun IBM MQ n bọ laipẹ. Ti sisọ ibeere naa ba kuna, asopo naa yoo da aṣiṣe pada; bibẹẹkọ, yoo dahun pe a ṣe ilana ibeere naa ni aṣeyọri, paapaa ti aṣiṣe kan ba waye lakoko sisẹ siwaju rẹ. Eyi ni a ṣe ni pataki lati le ṣiṣẹ pẹlu awọn eto ti ko mọ bi a ṣe le tun awọn ibeere tun ṣe - tabi, ni ilodi si, ṣe o jubẹẹlọ. Ni ibere ki o má ba padanu data, a lo isinyi atunṣe: ohun naa kọkọ wọle sinu rẹ ati lẹhin igbasilẹ aṣeyọri ti yọ kuro lati inu rẹ. Alakoso le gba awọn itaniji nipa awọn nkan ti o ku ni isinyi atunṣe, ati lẹhin imukuro aṣiṣe sọfitiwia tabi ikuna ohun elo, gbiyanju lẹẹkansi.

isise igbewọle

Awọn ero isise Input ṣe ipinlẹ data ti o gba ni ibamu si awọn ẹya abuda ati awọn ipe ti o yẹ. Awọn olutọju jẹ koodu Lua ti o nṣiṣẹ ninu apoti iyanrin, nitorina wọn ko le ni ipa lori iṣẹ ṣiṣe ti eto naa. Ni ipele yii, data le dinku si fọọmu ti o nilo, ati pe, ti o ba jẹ dandan, nọmba lainidii ti awọn iṣẹ ṣiṣe le ṣe ifilọlẹ ti o le ṣe imuse ọgbọn pataki. Fun apẹẹrẹ, ninu ọja MDM (Titunto Data Management) ti a ṣe lori Tarantool Data Grid, nigba fifi olumulo titun kan kun, ki o má ba fa fifalẹ sisẹ ti ibeere naa, a ṣe ifilọlẹ ẹda ti igbasilẹ goolu kan gẹgẹbi iṣẹ-ṣiṣe ọtọtọ. Apoti iyanrin ṣe atilẹyin awọn ibeere fun kika, iyipada ati fifi data kun, ngbanilaaye lati ṣe diẹ ninu awọn iṣẹ lori gbogbo awọn ipa ti iru ibi ipamọ ati akojọpọ abajade (maapu / dinku).

Awọn olutọju le ṣe apejuwe ninu awọn faili:

sum.lua

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

Ati lẹhinna, ti ṣalaye ninu iṣeto:

functions:
  sum: { __file: sum.lua }

Kí nìdí Lua? Lua jẹ ede ti o rọrun pupọ. Da lori iriri wa, awọn wakati meji lẹhin ti o mọ ọ, eniyan bẹrẹ kikọ koodu ti o yanju iṣoro wọn. Ati pe iwọnyi kii ṣe awọn olupilẹṣẹ ọjọgbọn nikan, ṣugbọn, fun apẹẹrẹ, awọn atunnkanka. Ni afikun, ọpẹ si oniṣiro jit, Lua nṣiṣẹ ni kiakia.

Ibi

Ibi ipamọ tọjú jubẹẹlo data. Ṣaaju fifipamọ, data jẹ ifọwọsi lodi si ero data naa. Lati ṣe apejuwe Circuit a lo ọna kika ti o gbooro sii Apache Avro... Apẹẹrẹ:

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

Da lori apejuwe yii, DDL (Ede Itumọ data) jẹ ipilẹṣẹ laifọwọyi fun Tarantula DBMS ati Àwòrán QL eto fun wiwọle data.

Atunse data asynchronous jẹ atilẹyin (awọn ero wa lati ṣafikun ọkan amuṣiṣẹpọ).

O wu isise

Nigba miiran o jẹ dandan lati sọ fun awọn alabara ita nipa dide ti data tuntun; fun idi eyi, ipa ero isise Ijade wa. Lẹhin fifipamọ data naa, o le kọja si olutọju ti o yẹ (fun apẹẹrẹ, lati mu wa si fọọmu ti alabara nilo) - ati lẹhinna kọja si asopo fun fifiranṣẹ. Ti isinyi atunṣe tun lo nibi: ti ko ba si ẹnikan ti o gba nkan naa, alabojuto le gbiyanju lẹẹkansi nigbamii.

Igbelosoke

Asopọmọra, ero isise titẹ sii, ati awọn ipa ero isise iṣelọpọ jẹ alaini orilẹ-ede, gbigba wa laaye lati ṣe iwọn eto naa ni petele nipa fifi awọn iṣẹlẹ ohun elo tuntun kun pẹlu iru ipa ti o fẹ ṣiṣẹ. Ibi ipamọ ti wa ni lilo fun petele igbelosoke ohun ona lati ṣeto iṣupọ nipa lilo awọn buckets foju. Lẹhin fifi olupin tuntun kun, diẹ ninu awọn buckets lati awọn olupin atijọ ti gbe lọ si olupin tuntun ni abẹlẹ; eyi ṣẹlẹ ni gbangba si awọn olumulo ati pe ko ni ipa lori iṣẹ ti gbogbo eto.

Data Properties

Awọn nkan le tobi pupọ ati pe o ni awọn nkan miiran ninu. A ṣe idaniloju atomity ti fifi kun ati imudojuiwọn data nipa titoju ohun kan pẹlu gbogbo awọn igbẹkẹle ninu garawa foju kan. Eyi ṣe idiwọ ohun naa lati “tan kaakiri” kọja awọn olupin ti ara pupọ.

Ti ikede jẹ atilẹyin: imudojuiwọn kọọkan ti ohun kan ṣẹda ẹya tuntun, ati pe a le nigbagbogbo gba bibẹ pẹlẹbẹ akoko kan ki o wo bii agbaye ṣe rii lẹhinna. Fun data ti ko nilo itan-akọọlẹ gigun, a le ṣe idinwo nọmba awọn ẹya tabi paapaa tọju ẹyọkan kan - tuntun tuntun - iyẹn ni, ni pataki mu ẹya ṣiṣẹ fun iru kan. O tun le fi opin si itan nipasẹ akoko: fun apẹẹrẹ, paarẹ gbogbo awọn nkan ti iru kan ti o dagba ju ọdun kan lọ. Ṣiṣafipamọ tun ni atilẹyin: a le gbe awọn nkan silẹ ti o dagba ju akoko ti a ti sọ tẹlẹ lọ, ni idasilẹ aaye ninu iṣupọ naa.

Awọn iṣẹ-ṣiṣe

Lara awọn ẹya ti o nifẹ si, o tọ lati ṣe akiyesi agbara lati ṣe ifilọlẹ awọn iṣẹ ṣiṣe lori iṣeto kan, ni ibeere olumulo, tabi ni eto lati inu apoti iyanrin:

Faaji ati awọn agbara ti Tarantool Data Grid

Nibi a rii ipa miiran - olusare. Ipa yii ko ni ipinlẹ, ati awọn apẹẹrẹ ohun elo afikun pẹlu ipa yii le ṣe afikun si iṣupọ bi o ṣe nilo. Ojuse olusare ni lati pari awọn iṣẹ-ṣiṣe. Gẹgẹbi a ti sọ, o ṣee ṣe lati ṣe awọn iṣẹ-ṣiṣe titun lati inu apoti iyanrin; ti won ti wa ni fipamọ ni a isinyi lori ibi ipamọ ati ki o si pa lori olusare. Iru iṣẹ-ṣiṣe yii ni a npe ni Job. A tun ni iru iṣẹ kan ti a pe ni Iṣẹ-ṣiṣe - iwọnyi jẹ awọn iṣẹ ṣiṣe asọye olumulo ti o nṣiṣẹ lori iṣeto (lilo sintasi cron) tabi lori ibeere. Lati ṣe ifilọlẹ ati tọpa iru awọn iṣẹ ṣiṣe, a ni oluṣakoso iṣẹ ṣiṣe ti o rọrun. Ni ibere fun iṣẹ yii lati wa, o gbọdọ jẹ ki ipa oluṣeto ṣiṣẹ; ipa yii ni ipo kan, nitorina ko ṣe iwọn, eyiti, sibẹsibẹ, ko nilo; ni akoko kanna, gẹgẹbi gbogbo awọn ipa miiran, o le ni ẹda ti o bẹrẹ ṣiṣẹ ti oluwa ba kọ lojiji.

awako

Ipa miiran ni a npe ni logger. O n gba awọn akọọlẹ lati ọdọ gbogbo awọn ọmọ ẹgbẹ ti iṣupọ ati pese wiwo fun ikojọpọ ati wiwo wọn nipasẹ wiwo wẹẹbu.

awọn iṣẹ

O tọ lati darukọ pe eto naa jẹ ki o rọrun lati ṣẹda awọn iṣẹ. Ninu faili iṣeto ni, o le pato iru awọn ibeere ti a fi ranṣẹ si oluṣakoso kikọ ti olumulo ti nṣiṣẹ ninu apoti iyanrin. Ninu oluṣakoso yii, o le, fun apẹẹrẹ, ṣiṣe diẹ ninu iru ibeere itupalẹ ki o da abajade pada.

Iṣẹ naa jẹ apejuwe ninu faili iṣeto:

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

API GraphQL jẹ ipilẹṣẹ laifọwọyi ati pe iṣẹ naa wa fun pipe:

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

Eyi yoo pe olutọju naa sumeyi ti yoo da abajade pada:

3

Profaili ibeere ati Awọn Metiriki

Lati loye iṣẹ ti eto ati awọn ibeere profaili, a ṣe atilẹyin atilẹyin fun Ilana OpenTracing. Eto naa le fi alaye ranṣẹ lori ibeere si awọn irinṣẹ ti o ṣe atilẹyin ilana yii, bii Zipkin, eyiti yoo gba ọ laaye lati loye bi o ṣe ṣe ibeere naa:

Faaji ati awọn agbara ti Tarantool Data Grid

Nipa ti, eto naa n pese awọn metiriki inu ti o le gba ni lilo Prometheus ati wiwo ni lilo Grafana.

Ranṣẹ

Tarantool Data Grid le ṣe ran lọ lati awọn idii RPM tabi ile ifi nkan pamosi, ni lilo ohun elo lati pinpin tabi O ṣeeṣe, atilẹyin tun wa fun Kubernetes (Tarantool Kubernetes oniṣẹ).

Ohun elo ti o ṣe imuse ọgbọn-ọrọ iṣowo (iṣeto, awọn oluṣakoso) ti kojọpọ sinu akopọ Tarantool Data Grid ti a fi ranṣẹ ni irisi ile-ipamọ nipasẹ UI tabi lilo iwe afọwọkọ nipasẹ API ti a pese nipasẹ wa.

Awọn ohun elo Apeere

Awọn ohun elo wo ni o le ṣẹda nipa lilo Tarantool Data Grid? Ni otitọ, ọpọlọpọ awọn iṣẹ-ṣiṣe iṣowo ni o ni ibatan si sisẹ, titoju ati iwọle si sisan data. Nitorinaa, ti o ba ni awọn ṣiṣan nla ti data ti o nilo lati wa ni ipamọ ni aabo ati iwọle, lẹhinna ọja wa le ṣafipamọ ọpọlọpọ akoko idagbasoke ati idojukọ lori ọgbọn iṣowo rẹ.

Fun apẹẹrẹ, a fẹ lati gba alaye nipa ọja ohun-ini gidi, ki ni ojo iwaju, fun apẹẹrẹ, a yoo ni alaye nipa awọn ipese ti o dara julọ. Ni idi eyi, a yoo ṣe afihan awọn iṣẹ-ṣiṣe wọnyi:

  1. Awọn roboti ti o gba alaye lati awọn orisun ṣiṣi yoo jẹ awọn orisun data wa. O le yanju iṣoro yii nipa lilo awọn solusan ti a ti ṣetan tabi koodu kikọ ni eyikeyi ede.
  2. Nigbamii ti, Tarantool Data Grid yoo gba ati fi data naa pamọ. Ti ọna kika data lati oriṣiriṣi awọn orisun yatọ, lẹhinna o le kọ koodu ni Lua ti yoo ṣe iyipada si ọna kika kan. Ni ipele iṣaju-iṣaaju, iwọ yoo tun ni anfani, fun apẹẹrẹ, lati ṣe àlẹmọ awọn ipese ẹda-iwe tabi ni afikun alaye imudojuiwọn nipa awọn aṣoju ti n ṣiṣẹ ni ọja ni ibi ipamọ data.
  3. Bayi o ti ni ojutu ti iwọn ni iṣupọ kan ti o le kun fun data ati ṣe awọn yiyan data. Lẹhinna o le ṣe iṣẹ ṣiṣe tuntun, fun apẹẹrẹ, kọ iṣẹ kan ti yoo ṣe ibeere fun data ati fifun ni anfani julọ fun ọjọ kan - eyi yoo nilo awọn laini diẹ ninu faili iṣeto ni ati koodu Lua kekere kan.

Ohun ti ni tókàn?

Pataki wa ni lati mu irọrun ti idagbasoke ni lilo Tarantool Data akoj. Fún àpẹrẹ, èyí jẹ IDE pẹ̀lú àtìlẹ́yìn fún ìṣàfilọ́lẹ̀ àti àtúnṣe àwọn aṣàmúlò tí ń ṣiṣẹ́ nínú àpótí yanrìn.

A tun san ifojusi nla si awọn ọran ailewu. Ni bayi a n gba iwe-ẹri nipasẹ FSTEC ti Russia lati jẹrisi ipele aabo giga ati pade awọn ibeere fun iwe-ẹri ti awọn ọja sọfitiwia ti a lo ninu awọn eto alaye data ti ara ẹni ati awọn eto alaye ijọba.

orisun: www.habr.com

Fi ọrọìwòye kun