Nhazi na ike nke Grid Data Tarantool

Nhazi na ike nke Grid Data Tarantool

Na 2017, anyị meriri asọmpi iji zụlite azụmahịa azụmahịa nke azụmahịa Alfa-Bank ma malite ọrụ (na HighLoad ++ 2018 na akụkọ banyere isi nke azụmahịa ego). rụrụ Vladimir Drynkin, onye isi nke azụmahịa isi nke azụmahịa ego nke Alfa Bank). Usoro a kwesịrị ịchịkọta data azụmahịa sitere na isi mmalite dị iche iche n'ụdị dị iche iche, weta data ahụ n'ụdị dị n'otu, chekwaa ya ma nye ohere ịnweta ya.

N'oge usoro mmepe, usoro ahụ malitere ma nweta ọrụ, na n'oge ụfọdụ, anyị ghọtara na anyị na-emepụta ihe karịrị naanị ngwa ngwa emepụtara iji dozie ọtụtụ ọrụ akọwapụtara nke ọma: anyị nwere ihe ịga nke ọma. usoro maka iwulite ngwa ekesa na nchekwa na-adịgide adịgide. Ahụmahụ anyị nwetara bụ ntọala nke ngwaahịa ọhụrụ - Tarantool Data Grid (TDG).

Achọrọ m ikwu banyere TDG architecture na ihe ngwọta anyị bịara n'oge usoro mmepe, na-ewebata gị na isi ọrụ ma gosi otú ngwaahịa anyị nwere ike isi bụrụ ihe ndabere maka ịmepụta ngwọta zuru oke.

N'usoro ihe owuwu, anyị kewara usoro ahụ n'ime iche ọrụ, nke ọ bụla n'ime ha na-ahụ maka idozi nsogbu ụfọdụ. Otu ihe atụ na-agba ọsọ na-arụ otu ọrụ ma ọ bụ karịa. Enwere ike inwe ọtụtụ ọrụ nke otu ụdị na ụyọkọ:

Nhazi na ike nke Grid Data Tarantool

njikọ

Njikọ na-ahụ maka nkwurịta okwu na ụwa dị n'èzí; Ọrụ ya bụ ịnakwere arịrịọ ahụ, tụgharịa ya, ma ọ bụrụ na nke a ga-aga nke ọma, ziga data maka nhazi na ntinye ntinye. Anyị na-akwado HTTP, SOAP, Kafka, FIX formats. Ihe owuwu ahụ na-enye gị ohere ịgbakwunye nkwado maka usoro ọhụrụ, yana nkwado maka IBM MQ na-abịa n'oge adịghị anya. Ọ bụrụ n'ịtụle arịrịọ ahụ dara, njikọ ahụ ga-eweghachi mperi; ma ọ bụghị ya, ọ ga-aza na a haziri arịrịọ ahụ nke ọma, ọbụlagodi na njehie mere n'oge nhazi ya ọzọ. Emere nke a ka ọ rụọ ọrụ na sistemu ndị na-amaghị ka esi emeghachi arịrịọ - ma ọ bụ, n'ụzọ megidere nke ahụ, mee ya na-adịgide adịgide. Ka ị ghara idafu data, a na-eji eriri nrụzi eme ihe: ihe mbụ na-abanye n'ime ya na naanị mgbe e wepụrụ nhazi nke ọma na ya. Onye nchịkwa nwere ike ịnata ọkwa maka ihe ndị fọdụrụ na kwụ n'ahịrị nrụzi, na mgbe ewepụchara njehie ngwanrọ ma ọ bụ ọdịda ngwaike, nwaa ọzọ.

Ihe nhazi ntinye

Ihe nhazi ntinye na-ahazi data anatara dịka njirimara ma kpọọ ndị nhazi kwesịrị ekwesị. Ndị na-ahụ maka njikwa bụ koodu Lua na-agba n'ime igbe ájá, yabụ na ha enweghị ike imetụta ọrụ sistemụ. N'oge a, enwere ike belata data ahụ n'ụdị achọrọ, ma, ọ bụrụ na ọ dị mkpa, enwere ike ịmalite ọrụ aka ike nke nwere ike mejuputa echiche dị mkpa. Dịka ọmụmaatụ, na ngwaahịa MDM (Master Data Management) nke e wuru na Tarantool Data Grid, mgbe ị na-agbakwunye onye ọrụ ọhụrụ, ka ọ ghara imebi nhazi nke arịrịọ ahụ, anyị na-amalite ịmepụta ihe ndekọ ọla edo dị ka ọrụ dị iche. Igbe igbe na-akwado arịrịọ maka ịgụ, ịgbanwe na ịgbakwunye data, na-enye gị ohere ịrụ ụfọdụ ọrụ na ọrụ niile nke ụdị nchekwa na nchịkọta nke nsonaazụ (map / belata).

Enwere ike ịkọwa ndị njikwa na faịlụ:

sum.lua

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

Ma mgbe ahụ, ekwuputara na nhazi ahụ:

functions:
  sum: { __file: sum.lua }

Gịnị mere Lua? Lua bụ asụsụ dị mfe. Dabere na ahụmịhe anyị, awa ole na ole ka ha matachara ya, ndị mmadụ na-amalite ide koodu na-edozi nsogbu ha. Ma ndị a abụghị naanị ndị mmepe ọkachamara, mana, dịka ọmụmaatụ, ndị nyocha. Na mgbakwunye, ekele maka jit compiler, Lua na-agba ọsọ ọsọ ọsọ.

nchekwa

Nchekwa na-echekwa data na-adịgide adịgide. Tupu ịchekwaa, a kwadoro data megide atụmatụ data. Iji kọwaa sekit anyị na-eji usoro agbatịkwu Apache Avro. Ihe atụ:

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

Dabere na nkọwa a, a na-emepụta DDL (Asụsụ Definition Data) na-akpaghị aka maka Tarantula DBMS na GraphQL schema maka ịnweta data.

A na-akwado ntugharị data asynchronous (enwere atụmatụ itinye otu synchronous).

Nhazi mmepụta

Mgbe ụfọdụ, ọ dị mkpa ịgwa ndị na-azụ ahịa mpụga banyere mbata nke data ọhụrụ; maka ebumnuche a, enwere ọrụ nrụpụta mmepụta. Mgbe ịchekwa data ahụ, enwere ike ịnyefe ya na onye na-ahụ maka ya (dịka ọmụmaatụ, iji weta ya na ụdị nke onye na-azụ ahịa chọrọ) - wee nyefee ya na njikọ maka izipu. A na-ejikwa kwụ n'ahịrị nrụzi ebe a: ọ bụrụ na ọ nweghị onye nabatara ihe ahụ, onye nchịkwa nwere ike ịnwale ọzọ ma emechaa.

Ịtụle

Njikọ, ihe nrụpụta ntinye, na ọrụ nrụpụta ihe enweghị steeti, na-enye anyị ohere itule sistemu ahụ n'ụzọ kwụ ọtọ site na ịgbakwụnye ngwa ọhụrụ yana ụdị ọrụ achọrọ. A na-eji ebe nchekwa ahụ mee ihe n'ikiri kwụ ọtọ ịbịaru nso iji hazie ụyọkọ na iji bọket mebere. Mgbe agbakwunyere ihe nkesa ọhụrụ, a na-ebugharị ụfọdụ bọket sitere na sava ochie na sava ọhụrụ na ndabere; nke a na-eme n'ụzọ doro anya nye ndị ọrụ ma ọ dịghị emetụta ọrụ nke usoro dum.

Njirimara data

Ihe nwere ike ibu nnukwu ma nwee ihe ndị ọzọ. Anyị na-ahụ na atomity nke ịgbakwunye na imelite data site na ịchekwa ihe na ndabere niile n'otu bọket mebere. Nke a na-egbochi "ịgbasa" ihe ahụ n'ofe ọtụtụ sava anụ ahụ.

A na-akwado nsụgharị: mmelite ọ bụla nke ihe na-emepụta ụdị ọhụrụ, anyị nwere ike iwepụta oge mgbe niile wee hụ ka ụwa siri dị mgbe ahụ. Maka data nke na-achọghị ogologo akụkọ ihe mere eme, anyị nwere ike belata ọnụ ọgụgụ nke nsụgharị ma ọ bụ ọbụna chekwaa naanị otu - nke kachasị ọhụrụ - ya bụ, gbanyụọ nsụgharị maka ụdị ụfọdụ. Ị nwekwara ike belata akụkọ ihe mere eme site na oge: dịka ọmụmaatụ, hichapụ ihe niile nke ụdị ụfọdụ tọrọ afọ 1. A na-akwadokwa nchekwa nchekwa: anyị nwere ike ibutu ihe ndị toro ogologo oge a kapịrị ọnụ, na-ahapụ ohere na ụyọkọ ahụ.

ihe aga-eme

N'ime njirimara ndị na-adọrọ mmasị, ọ dị mma ịmara ikike ịmalite ọrụ na nhazi oge, na arịrịọ onye ọrụ, ma ọ bụ mmemme site na igbe ájá:

Nhazi na ike nke Grid Data Tarantool

N'ebe a, anyị na-ahụ ọrụ ọzọ - onye na-agba ọsọ. Ọrụ a enweghị steeti, yana enwere ike ịgbakwunye ngwa ngwa ndị nwere ọrụ a na ụyọkọ dị ka ọ dị mkpa. Ọrụ nke onye na-agba ọsọ bụ ịrụcha ọrụ. Dị ka e kwuru, ọ ga-ekwe omume ịmepụta ọrụ ọhụrụ site na igbe ájá; A na-echekwa ha na kwụ n'ahịrị na nchekwa wee gbuo ya na onye na-agba ọsọ. A na-akpọ ụdị ọrụ a Job. Anyị nwekwara ụdị ọrụ a na-akpọ Task - ndị a bụ ọrụ akọwapụtara nke onye ọrụ na-arụ ọrụ na nhazi oge (iji cron syntax) ma ọ bụ na-achọ. Iji malite na soro ọrụ ndị dị otú ahụ, anyị nwere njikwa ọrụ dị mma. Ka ọrụ a wee dị, ị ga-emerịrị ọrụ nhazi; ọrụ a nwere steeti, ya mere ọ naghị abawanye, nke, Otú ọ dị, a chọghị; n'otu oge ahụ, dị ka ọrụ ndị ọzọ niile, ọ nwere ike ịnwe oyiri nke na-amalite ịrụ ọrụ ma ọ bụrụ na nna ukwu jụrụ na mberede.

Ndekọ

A na-akpọ ọrụ ọzọ logger. Ọ na-anakọta ndekọ n'aka ndị niile so na ụyọkọ ahụ ma na-enye interface maka ibugo na ịlele ha site na interface weebụ.

Services

Ọ bara uru ịkọwa na usoro ahụ na-eme ka ọ dị mfe ịmepụta ọrụ. N'ime faịlụ nhazi, ị nwere ike ịkọwa arịrịọ ndị ezigara na onye njikwa ejiri dee nke na-agba ọsọ na igbe ájá. N'ime onye njikwa a, ị nwere ike, dịka ọmụmaatụ, mee ụdị ajụjụ nyocha wee weghachi nsonaazụ ya.

A kọwara ọrụ a na faịlụ nhazi:

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

A na-emepụta API GraphQL na-akpaghị aka ma ọrụ ahụ dị maka ịkpọ:

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

Nke a ga-akpọ onye njikwa sumnke ga-eweghachi nsonaazụ:

3

Profaịlụ ajụjụ na metrik

Iji ghọta ọrụ nke sistemu na arịrịọ profaịlụ, anyị mere nkwado maka usoro OpenTracing. Usoro ahụ nwere ike izipu ozi gbasara ọchịchọ na ngwaọrụ ndị na-akwado ụkpụrụ a, dị ka Zipkin, nke ga-enye gị ohere ịghọta ka esi emezu arịrịọ ahụ:

Nhazi na ike nke Grid Data Tarantool

Dị ka o kwesịrị ịdị, sistemụ ahụ na-enye metrics dị n'ime nke enwere ike ịnakọta site na iji Prometheus wee hụ ya site na iji Grafana.

Nyefee

Enwere ike ibuga Tarantool Data Grid site na ngwugwu RPM ma ọ bụ ebe nchekwa, na-eji akụrụngwa sitere na nkesa ma ọ bụ nke enwere ike, enwerekwa nkwado maka Kubernetes (Tarantool Kubernetes Onye ọrụ).

A na-etinye ngwa nke na-arụ ọrụ mgbagha azụmahịa (nhazi, ndị na-ahụ maka njikwa) n'ime ụyọkọ Tarantool Data Grid n'ụdị ebe nchekwa site na UI ma ọ bụ jiri edemede site na API nke anyị nyere.

Ngwa nlele

Kedu ngwa enwere ike ịmepụta site na iji Tarantool Data Grid? N'ezie, ọtụtụ ọrụ azụmahịa nwere n'ụzọ ụfọdụ metụtara nhazi, ịchekwa na ịnweta usoro data. Ya mere, ọ bụrụ na ị nwere nnukwu iyi nke data kwesịrị ka echekwa ma nweta ya, mgbe ahụ, ngwaahịa anyị nwere ike ịzọpụta gị ọtụtụ oge mmepe ma lekwasị anya na mgbagha azụmahịa gị.

Dịka ọmụmaatụ, anyị chọrọ ịnakọta ozi gbasara ahịa ụlọ ahịa, nke mere na n'ọdịnihu, dịka ọmụmaatụ, anyị ga-enweta ozi gbasara onyinye kacha mma. N'okwu a, anyị ga-egosipụta ọrụ ndị a:

  1. Robots na-anakọta ozi sitere na ebe mepere emepe ga-abụ isi mmalite data anyị. Ị nwere ike dozie nsogbu a site na iji ngwọta emebere ma ọ bụ koodu ederede n'asụsụ ọ bụla.
  2. Na-esote, Tarantool Data Grid ga-anabata ma chekwaa data ahụ. Ọ bụrụ na usoro data sitere na ebe dị iche iche dị iche, mgbe ahụ ị nwere ike ide koodu na Lua nke ga-eme ntụgharị gaa na otu usoro. N'oge nhazi nhazi, ị ga-enwekwa ike, dịka ọmụmaatụ, nyochaa onyinye oyiri ma ọ bụ tinyekwuo ozi gbasara ndị ọrụ na-arụ ọrụ n'ahịa na nchekwa data.
  3. Ugbu a, ị nweelarị ihe ngwọta na-agbanwe agbanwe na ụyọkọ nke nwere ike jupụta na data ma mee nhọrọ data. Mgbe ahụ ị nwere ike mejuputa ọrụ ọhụrụ, dịka ọmụmaatụ, dee ọrụ nke ga-eme arịrịọ maka data ma nye onyinye kachasị mma kwa ụbọchị - nke a ga-achọ ahịrị ole na ole na faịlụ nhazi na obere koodu Lua.

Kedu ihe ọzọ?

Ihe kacha anyị mkpa bụ iji melite mfe mmepe iji Tarantool Data Grid. Dịka ọmụmaatụ, nke a bụ IDE nwere nkwado maka ịkọwapụta na ndị na-ahụ maka nbipu na-agba ọsọ na igbe ájá.

Anyị na-etinyekwa uche dị ukwuu na nsogbu nchekwa. Ugbu a, anyị na-enweta asambodo site na FSTEC nke Russia iji kwado ọkwa nchekwa dị elu ma mezuo ihe achọrọ maka asambodo ngwaahịa ngwanrọ eji na sistemụ ozi data nkeonwe yana sistemụ ozi gọọmentị.

isi: www.habr.com

Tinye a comment