Gine-gine da iyawar Tarantool Data Grid

Gine-gine da iyawar Tarantool Data Grid

A cikin 2017, mun lashe gasar don haɓaka ainihin ma'amala na kasuwancin hannun jari na Alfa-Bank kuma mun fara aiki (a HighLoad ++ 2018 tare da rahoto kan ainihin kasuwancin saka hannun jari. yayi magana Vladimir Drynkin, shugaban cibiyar hada-hadar hannun jari na Bankin Alfa). Ya kamata wannan tsarin ya tattara bayanan ciniki daga mabambanta daban-daban ta nau'i-nau'i daban-daban, ya kawo bayanan cikin tsari guda ɗaya, adana su da kuma samar da damar yin amfani da su.

A lokacin aiwatar da ci gaba, tsarin ya samo asali kuma ya sami aiki, kuma a wani lokaci mun fahimci cewa muna yin wani abu fiye da kawai software na aikace-aikacen da aka ƙirƙira don warware ƙayyadaddun ayyuka masu mahimmanci: mun yi nasara. tsarin don gina aikace-aikacen da aka rarraba tare da ajiya mai tsayi. Kwarewar da muka samu ta kafa tushen sabon samfur - Tarantool Data Grid (TDG).

Ina so in yi magana game da gine-ginen TDG da kuma hanyoyin da muka zo a yayin aiwatar da ci gaba, gabatar da ku ga babban aiki da kuma nuna yadda samfurinmu zai iya zama tushen gina cikakkun mafita.

A tsarin gine-gine, mun raba tsarin zuwa daban matsayin, kowanne daga cikinsu yana da alhakin warware wasu kewayon matsaloli. Misalin aikace-aikacen da ke gudana guda ɗaya yana aiwatar da nau'ikan rawar ɗaya ko fiye. Ana iya samun ayyuka da yawa iri ɗaya a cikin tari:

Gine-gine da iyawar Tarantool Data Grid

haši

Connector ne ke da alhakin sadarwa tare da duniyar waje; aikinsa shi ne karban buqatar, tantance shi, idan kuma hakan ya yi nasara, sai a aika da bayanan don sarrafa shi zuwa na’urar sarrafa bayanai. Muna tallafawa tsarin HTTP, SOAP, Kafka, FIX. Gine-ginen yana ba ku damar ƙara tallafi don sabbin tsari, tare da goyan bayan IBM MQ na zuwa nan ba da jimawa ba. Idan ƙaddamar da buƙatar ta gaza, mai haɗin zai dawo da kuskure; in ba haka ba, za ta amsa cewa an yi nasarar aiwatar da buƙatar, koda kuwa kuskure ya faru yayin da ake ci gaba da sarrafa shi. Anyi wannan musamman don yin aiki tare da tsarin da ba su san yadda ake maimaita buƙatun ba - ko, akasin haka, yi shi da tsayin daka. Don kada a rasa bayanai, ana amfani da layin gyarawa: abu na farko ya shiga ciki kuma bayan an cire shi daga aiki mai nasara. Mai gudanarwa na iya karɓar faɗakarwa game da abubuwan da suka rage a layin gyara, kuma bayan kawar da kuskuren software ko gazawar hardware, sake gwadawa.

Mai sarrafa shigarwa

Mai sarrafa Input yana rarraba bayanan da aka karɓa bisa ga fasalulluka kuma yana kiran masu sarrafawa masu dacewa. Masu kulawa sune lambar Lua da ke aiki a cikin akwatin yashi, don haka ba za su iya shafar aikin tsarin ba. A wannan mataki, za a iya rage bayanan zuwa nau'in da ake bukata, kuma, idan ya cancanta, za a iya ƙaddamar da adadin ayyuka na sabani wanda zai iya aiwatar da mahimmancin mahimmanci. Alal misali, a cikin samfurin MDM (Master Data Management) wanda aka gina akan Tarantool Data Grid, lokacin da aka ƙara sabon mai amfani, don kada ya rage aiki na buƙatun, mun ƙaddamar da ƙirƙirar rikodin zinare a matsayin aiki daban. Sandbox yana goyan bayan buƙatun don karantawa, canzawa da ƙara bayanai, yana ba ku damar yin wasu ayyuka akan duk ayyukan nau'in ajiya da tara sakamakon (taswira/rage).

Ana iya bayyana masu kulawa a cikin fayiloli:

sum.lua

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

Sannan, an bayyana a cikin tsarin:

functions:
  sum: { __file: sum.lua }

Me yasa Lua? Lua harshe ne mai sauqi qwarai. Dangane da kwarewarmu, sa'o'i biyu bayan saninsa, mutane sun fara rubuta lambar da ke magance matsalarsu. Kuma waɗannan ba ƙwararrun masu haɓaka ba ne kawai, amma, alal misali, manazarta. Bugu da kari, godiya ga jit compiler, Lua yana gudu da sauri.

Storage

Ma'aji yana adana bayanan dagewa. Kafin ajiyewa, an tabbatar da bayanai akan tsarin bayanan. Don bayyana kewaye muna amfani da tsari mai tsawo Apache Avro... Misali:

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

Dangane da wannan bayanin, DDL (Harshen Ma'anar Bayanai) ana ƙirƙira ta atomatik don Tarantula DBMS da GraphQL makirci don samun damar bayanai.

Ana goyan bayan kwafin bayanan asynchronous (akwai shirye-shiryen ƙara mai aiki tare).

Mai sarrafa kayan sarrafawa

Wani lokaci ya zama dole a sanar da masu amfani da waje game da zuwan sabbin bayanai, don wannan dalili, akwai rawar da ke sarrafa kayan sarrafawa. Bayan adana bayanan, za a iya mika shi ga mai kulawa da ya dace (misali, don kawo su ga fom ɗin da mabukaci ke buƙata) - sannan a wuce zuwa mai haɗin don aikawa. Hakanan ana amfani da layin gyara anan: idan babu wanda ya karɓi abun, mai gudanarwa na iya sake gwadawa daga baya.

Sikeli

Mai haɗin haɗin, na'ura mai sarrafa shigarwa, da ayyukan sarrafawar fitarwa ba su da ƙasa, yana ba mu damar daidaita tsarin a kwance ta hanyar ƙara sabbin abubuwan aikace-aikacen tare da kunna nau'in rawar da ake so. Ana amfani da ma'ajiya don sikelin kwance da m don tsara tari ta amfani da bokiti na kama-da-wane. Bayan ƙara sabon uwar garken, wasu guga daga tsoffin sabobin ana tura su zuwa sabon uwar garken a bango; wannan yana faruwa a bayyane ga masu amfani kuma baya shafar aikin gabaɗayan tsarin.

Bayanan Bayani

Abubuwa na iya zama manya da yawa kuma sun ƙunshi wasu abubuwa. Muna tabbatar da atomity na ƙara da sabunta bayanai ta hanyar adana abu tare da duk abin dogaro a cikin guga mai kama-da-wane. Wannan yana hana abu daga zama ''watsawa'' a cikin sabobin jiki da yawa.

Ana goyan bayan sigar: kowane sabuntawa na abu yana ƙirƙirar sabon sigar, kuma koyaushe muna iya ɗaukar ɗan lokaci mu ga yadda duniya ta kasance a lokacin. Don bayanan da ba ya buƙatar dogon tarihi, zamu iya iyakance adadin sigogin ko ma adana ɗaya - sabon abu - wannan shine, da gaske kashe sigar don wani nau'in. Hakanan zaka iya iyakance tarihin da lokaci: alal misali, share duk wani nau'i na wani nau'i wanda ya girmi shekara 1. Ana kuma goyan bayan adana kayan tarihi: za mu iya sauke abubuwan da suka girme fiye da ƙayyadaddun lokacin, yana ba da sarari a cikin gungu.

ayyuka

Daga cikin fasalulluka masu ban sha'awa, yana da kyau a lura da ikon ƙaddamar da ayyuka akan jadawali, a buƙatun mai amfani, ko ta hanyar shirye-shirye daga akwatin yashi:

Gine-gine da iyawar Tarantool Data Grid

A nan mun ga wani rawar - mai gudu. Wannan rawar ba ta da ƙasa, kuma ana iya ƙara ƙarin misalan aikace-aikacen tare da wannan rawar zuwa gungu kamar yadda ake buƙata. Alhakin mai gudu shine kammala ayyuka. Kamar yadda aka ambata, yana yiwuwa a samar da sababbin ayyuka daga sandbox; Ana ajiye su a cikin layi akan ajiya sannan a kashe su akan mai gudu. Irin wannan aiki shi ake kira Ayuba. Hakanan muna da nau'in ɗawainiya da ake kira Task - waɗannan ayyuka ne da aka ayyana mai amfani waɗanda ke gudana akan jadawalin (ta amfani da cron syntax) ko akan buƙata. Don ƙaddamar da waƙa da irin waɗannan ayyuka, muna da mai sarrafa ɗawainiya mai dacewa. Domin samun wannan aikin, dole ne ku kunna aikin mai tsarawa; wannan rawar tana da yanayi, don haka ba ta da ma'auni, wanda, duk da haka, ba a buƙata ba; a lokaci guda, kamar duk sauran ayyuka, yana iya samun kwafi wanda zai fara aiki idan maigidan ya ƙi ba zato ba tsammani.

Mai rajista

Wani aikin kuma ana kiransa logger. Yana tattara rajistan ayyukan daga duk membobin gungun kuma yana ba da hanyar dubawa don lodawa da duba su ta hanyar haɗin yanar gizo.

Ayyuka

Ya kamata a ambata cewa tsarin yana sauƙaƙe ƙirƙirar ayyuka. A cikin fayil ɗin daidaitawa, zaku iya ƙididdige waɗanne buƙatun da aka aika zuwa mai kula da rubutun mai amfani wanda ke gudana a cikin akwatin yashi. A cikin wannan mai sarrafa, zaku iya, alal misali, gudanar da wani nau'in tambayar bincike kuma ku dawo da sakamakon.

An bayyana sabis ɗin a cikin fayil ɗin daidaitawa:

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

API ɗin GraphQL ana ƙirƙira ta atomatik kuma sabis ɗin yana samuwa don kira:

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

Wannan zai kira mai kulawa sumwanda zai mayar da sakamakon:

3

Bayanan Bayanin Tambaya da Ma'auni

Don fahimtar aikin tsarin da buƙatun bayanin martaba, mun aiwatar da tallafi don ƙa'idar OpenTracing. Tsarin zai iya aika bayanai kan buƙata zuwa kayan aikin da ke goyan bayan wannan yarjejeniya, kamar Zipkin, wanda zai ba ku damar fahimtar yadda aka aiwatar da buƙatar:

Gine-gine da iyawar Tarantool Data Grid

A dabi'a, tsarin yana ba da ma'auni na ciki wanda za'a iya tattarawa ta amfani da Prometheus da kuma gani ta amfani da Grafana.

tura

Ana iya tura Tarantool Data Grid daga fakitin RPM ko rumbun adana bayanai, ta amfani da kayan aiki daga rarrabawa ko Mai yiwuwa, akwai kuma tallafi ga Kubernetes (Tarantool Kubernetes Operator).

Ana ɗora aikace-aikacen da ke aiwatar da dabarun kasuwanci (daidaitawa, masu sarrafa) a cikin gungu na Tarantool Data Grid da aka tura a cikin hanyar adana ta hanyar UI ko ta amfani da rubutun ta API ɗin da mu ke bayarwa.

Samfurin Aikace-aikace

Wadanne aikace-aikace za a iya ƙirƙira ta amfani da Tarantool Data Grid? A gaskiya ma, yawancin ayyukan kasuwanci suna da alaƙa da sarrafawa, adanawa da samun damar kwararar bayanai. Don haka, idan kuna da manyan rafukan bayanan da ke buƙatar adanawa da samun dama ga su, to samfurinmu zai iya adana ku lokaci mai yawa na ci gaba da mai da hankali kan dabarun kasuwancin ku.

Alal misali, muna so mu tattara bayanai game da kasuwar gidaje, ta yadda a nan gaba, alal misali, za mu sami bayani game da mafi kyawun tayi. A wannan yanayin, za mu haskaka ayyuka masu zuwa:

  1. Robots da ke tattara bayanai daga buɗaɗɗen tushe za su zama tushen bayanan mu. Kuna iya magance wannan matsalar ta amfani da shirye-shiryen mafita ko rubuta lambar a kowane harshe.
  2. Na gaba, Tarantool Data Grid zai karɓa kuma ya adana bayanan. Idan tsarin bayanai daga tushe daban-daban ya bambanta, to, zaku iya rubuta lamba a cikin Lua wanda zai yi jujjuyawar zuwa tsari ɗaya. A mataki na gaba-gaba, zaku kuma iya, alal misali, don tace tayin kwafin ko kuma sabunta bayanai game da wakilai masu aiki a kasuwa a cikin bayanan.
  3. Yanzu kun riga kun sami mafita mai daidaitawa a cikin gungu wanda za'a iya cika da bayanai kuma kuyi zaɓin bayanai. Sannan zaku iya aiwatar da sabbin ayyuka, alal misali, rubuta sabis ɗin da zai ba da buƙatun bayanai kuma ya ba da mafi kyawun tayin kowace rana - wannan zai buƙaci ƴan layi a cikin fayil ɗin sanyi da ƙaramin lambar Lua.

Abin da ke gaba?

Mu fifiko shine inganta sauƙin ci gaba ta amfani da Tarantool Data Grid. Misali, wannan IDE ne tare da goyan bayan bayanan martaba da masu sarrafa gyara da ke gudana a cikin akwatin yashi.

Muna kuma ba da kulawa sosai ga al'amuran tsaro. A yanzu muna fuskantar takaddun shaida ta FSTEC na Rasha don tabbatar da babban matakin tsaro da kuma biyan buƙatun takaddun samfuran software da ake amfani da su a cikin tsarin bayanan sirri da tsarin bayanan gwamnati.

source: www.habr.com

Add a comment