Achitekti ak kapasite Tarantool Data Grid

Achitekti ak kapasite Tarantool Data Grid

Nan 2017, nou te genyen yon konpetisyon pou devlope nwayo tranzaksyon biznis envestisman Alfa-Bank la epi nou te kòmanse travay (nan HighLoad++ 2018 ak yon rapò sou nwayo biznis envestisman an. Vladimir Drynkin, ki an tèt nwayo tranzaksyon nan biznis envestisman Alfa Bank). Sistèm sa a te sipoze rasanble done tranzaksyon ki soti nan diferan sous nan divès fòma, pote done yo nan yon fòm inifye, estoke li epi bay aksè a li.

Pandan pwosesis devlopman an, sistèm nan evolye ak akeri fonksyonalite, ak nan kèk pwen nou reyalize ke nou te kristalize yon bagay ki pi plis pase jis lojisyèl aplikasyon ki te kreye pou rezoud yon seri travay ki byen defini: nou te reyisi. sistèm pou bati aplikasyon distribiye ak depo ki pèsistan. Eksperyans nou te genyen te fòme baz yon nouvo pwodwi - Tarantool Done Gri (TDG).

Mwen vle pale sou achitekti TDG a ak solisyon yo nou te vin jwenn pandan pwosesis devlopman an, prezante w nan fonksyonalite prensipal la epi montre ki jan pwodwi nou an ka vin baz pou bati solisyon konplè.

Achitekti, nou divize sistèm nan an separe wòl, chak nan yo ki responsab pou rezoud yon seri pwoblèm. Yon sèl egzanp aplikasyon kouri aplike youn oswa plizyè kalite wòl. Kapab genyen plizyè wòl menm kalite nan yon gwoup:

Achitekti ak kapasite Tarantool Data Grid

Connector

Connector responsab pou kominikasyon ak mond lan deyò; travay li se aksepte demann lan, analize li, epi si sa a reyisi, Lè sa a, voye done yo pou trete nan processeur a opinyon. Nou sipòte fòma HTTP, SOAP, Kafka, FIX. Achitekti a pèmèt ou tou senpleman ajoute sipò pou nouvo fòma, ak sipò pou IBM MQ vini byento. Si analiz demann lan echwe, konektè a ap retounen yon erè; otreman, li pral reponn ke demann lan te trete avèk siksè, menm si yon erè te fèt pandan plis pwosesis li yo. Sa a te fè espesyalman nan lòd yo travay ak sistèm ki pa konnen ki jan yo repete demann - oswa, okontrè, fè li twò pèsistans. Yo nan lòd yo pa pèdi done yo, yo itilize yon keu reparasyon: objè a premye antre nan li epi sèlman apre yo fin retire pwosesis siksè nan li. Administratè a ka resevwa alèt sou objè ki rete nan keu reparasyon an, epi apre li fin elimine yon erè lojisyèl oswa echèk pyès ki nan konpitè, eseye ankò.

Antre processeur

Pwosesè a Antre klase done yo resevwa selon karakteristik karakteristik epi li rele processeurs ki apwopriye yo. Handlers yo se kòd Lua ki kouri nan yon bwat sab, kidonk yo pa kapab afekte fonksyone sistèm lan. Nan etap sa a, done yo ka redwi nan fòm ki nesesè yo, epi, si sa nesesè, yo ka lanse yon kantite abitrè nan travay ki ka aplike lojik ki nesesè yo. Pou egzanp, nan pwodwi MDM (Master Data Management) bati sou Tarantool Data Grid, lè ajoute yon nouvo itilizatè, yo nan lòd yo pa ralanti pwosesis la nan demann lan, nou lanse kreyasyon an nan yon dosye an lò kòm yon travay separe. Sandbox la sipòte demann pou lekti, chanje ak ajoute done, pèmèt ou fè kèk fonksyon sou tout wòl nan kalite depo ak agrégation nan rezilta a (kat / redwi).

Moun kap okipe yo ka dekri nan dosye:

sum.lua

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

Lè sa a, te deklare nan konfigirasyon an:

functions:
  sum: { __file: sum.lua }

Poukisa Lua? Lua se yon lang trè senp. Dapre eksperyans nou an, yon koup de èdtan apre yo fin vin konnen li, moun kòmanse ekri kòd ki rezoud pwoblèm yo. Ak sa yo se pa sèlman devlopè pwofesyonèl, men, pou egzanp, analis yo. Anplis de sa, gras a du a jit, Lua kouri trè vit.

depo

Depo estoke done ki pèsistan. Anvan sove, done yo valide kont chema done a. Pou dekri kous la nou itilize yon fòma pwolonje Apache Avro... Egzanp:

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

Dapre deskripsyon sa a, DDL (Data Definition Language) otomatikman pwodwi pou Tarantula DBMS ak GraphQL chema pou aksè done.

Replikasyon done asynchrone sipòte (gen plan yo ajoute yon sèl synchrone).

Pwosesis pwodiksyon

Pafwa li nesesè pou notifye konsomatè ekstèn sou arive nouvo done; pou objektif sa a, gen wòl nan processeur Sòti. Apre yo fin sove done yo, li ka pase bay moun kap okipe a korespondan (pa egzanp, pote li nan fòm nan mande pou konsomatè a) - ak Lè sa a, pase nan konektè a pou voye. Yon keu reparasyon yo itilize tou isit la: si pa gen moun ki aksepte objè a, administratè a ka eseye ankò pita.

Eskalad

Konektè, wòl processeur antre, ak wòl processeur pwodiksyon yo apatrid, sa ki pèmèt nou echèl sistèm nan orizontal lè nou tou senpleman ajoute nouvo aplikasyon ak kalite wòl ou vle aktive. Depo yo itilize pou dekale orizontal apwòch la pou òganize yon gwoup lè l sèvi avèk bokit vityèl. Apre yo fin ajoute yon nouvo sèvè, kèk nan bokit ki soti nan ansyen sèvè yo deplase nan nouvo sèvè a nan background nan; sa rive transparan itilizatè yo epi li pa afekte operasyon an nan tout sistèm nan.

Pwopriyete Done yo

Objè yo ka gwo anpil epi yo gen lòt objè yo. Nou asire atomite nan ajoute ak mete ajou done pa estoke yon objè ak tout depandans nan yon sèl bokit vityèl. Sa a anpeche objè a "gaye" atravè plizyè serveurs fizik.

Versioning sipòte: chak aktyalizasyon nan yon objè kreye yon nouvo vèsyon, epi nou ka toujou pran yon tranch tan ak wè ki jan mond lan gade lè sa a. Pou done ki pa bezwen yon istwa long, nou ka limite kantite vèsyon oswa menm sere yon sèl - dènye a - sa vle di, esansyèlman enfim vèsyon pou yon sèten kalite. Ou kapab tou limite istwa a pa tan: pou egzanp, efase tout objè nan yon sèten kalite ki gen plis pase 1 ane. Achiv yo sipòte tou: nou ka dechaje objè ki pi gran pase tan espesifye a, libere espas nan gwoup la.

travay

Pami karakteristik enteresan yo, li vo sonje kapasite nan lanse travay sou yon orè, sou demann itilizatè a, oswa pwogramasyon soti nan sandbox la:

Achitekti ak kapasite Tarantool Data Grid

Isit la nou wè yon lòt wòl - kourè. Wòl sa a se apatrid, epi aplikasyon anplis ki gen wòl sa a ka ajoute nan gwoup la jan sa nesesè. Responsablite kourè a se ranpli travay yo. Kòm mansyone, li posib jenere nouvo travay nan bwat sab la; yo sove nan yon keu sou depo ak Lè sa a, egzekite sou kourè a. Kalite travay sa a rele Jòb. Nou gen tou yon kalite travay ki rele Objektif Travay la - sa yo se travay defini itilizatè ki kouri sou yon orè (itilize sentaks cron) oswa sou demann. Pou lanse ak swiv travay sa yo, nou gen yon manadjè travay pratik. Pou fonksyonalite sa a disponib, ou dwe aktive wòl pwogramè a; wòl sa a gen yon eta, kidonk li pa echèl, ki pa obligatwa; an menm tan, tankou tout lòt wòl, li ka gen yon kopi ki kòmanse travay si mèt la toudenkou refize.

Anrejistrè

Yon lòt wòl yo rele logger. Li kolekte mòso bwa ki soti nan tout manm gwoup la epi li bay yon koòdone pou telechaje ak gade yo atravè koòdone entènèt la.

Sèvis

Li se vo mansyone ke sistèm nan fè li fasil yo kreye sèvis. Nan fichye konfigirasyon an, ou ka presize ki demann yo voye bay yon moun kap okipe yon itilizatè ekri ki kouri nan sandbox la. Nan okipe sa a, ou ka, pou egzanp, kouri kèk kalite rechèch analyse epi retounen rezilta a.

Sèvis la dekri nan dosye konfigirasyon an:

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

GraphQL API a pwodwi otomatikman epi sèvis la vin disponib pou rele:

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

Sa a pral rele moun kap okipe a sumki pral retounen rezilta a:

3

Rechèch Profiling ak metrik

Pou konprann operasyon sistèm lan ak demann profilage, nou aplike sipò pou pwotokòl OpenTracing la. Sistèm nan ka voye enfòmasyon sou demann nan zouti ki sipòte pwotokòl sa a, tankou Zipkin, ki pral pèmèt ou konprann ki jan demann lan te egzekite:

Achitekti ak kapasite Tarantool Data Grid

Natirèlman, sistèm nan bay mezi entèn ki ka kolekte lè l sèvi avèk Prometheus ak visualized lè l sèvi avèk Grafana.

Deplwaye

Tarantool Data Grid ka deplwaye nan pakè RPM oswa yon achiv, lè l sèvi avèk yon sèvis piblik ki soti nan distribisyon an oswa Ansible, gen sipò tou pou Kubernetes (Tarantool Kubernetes Operatè).

Aplikasyon an ki aplike lojik biznis la (konfigirasyon, moun k ap okipe) chaje nan gwoup Tarantool Data Grid ki deplwaye sou fòm yon achiv atravè UI oswa lè l sèvi avèk yon script atravè API nou bay la.

Egzanp Aplikasyon

Ki aplikasyon yo ka kreye lè l sèvi avèk Tarantool Data Grid? An reyalite, pifò travay biznis yo yon jan kanmenm ki gen rapò ak pwosesis, estoke ak aksè nan koule done. Se poutèt sa, si ou gen gwo kouran done ki bezwen yo dwe byen estoke ak aksè, Lè sa a, pwodwi nou an ka sove ou anpil tan devlopman epi konsantre sou lojik biznis ou.

Pou egzanp, nou vle kolekte enfòmasyon sou mache a byen imobilye, pou ke nan lavni an, pou egzanp, nou pral gen enfòmasyon sou pi bon òf yo. Nan ka sa a, nou pral mete aksan sou travay sa yo:

  1. Robo ki kolekte enfòmasyon ki soti nan sous louvri yo pral sous done nou yo. Ou ka rezoud pwoblèm sa a lè l sèvi avèk solisyon ki pare oswa ekri kòd nan nenpòt lang.
  2. Apre sa, Tarantool Data Grid pral aksepte epi sove done yo. Si fòma done ki soti nan diferan sous diferan, Lè sa a, ou ka ekri kòd nan Lua ki pral fè konvèsyon an nan yon fòma sèl. Nan etap pre-pwosesis la, ou pral kapab tou, pou egzanp, filtre òf kopi oswa anplis mete ajou enfòmasyon sou ajan k ap travay nan mache a nan baz done a.
  3. Koulye a, ou deja gen yon solisyon évolutive nan yon gwoup ki ka ranpli ak done epi fè seleksyon done. Lè sa a, ou ka aplike nouvo fonksyonalite, pou egzanp, ekri yon sèvis ki pral fè yon demann pou done epi bay òf ki pi avantaje chak jou - sa a pral mande pou kèk liy nan dosye a konfigirasyon ak yon ti kòd Lua.

Ki sa ki nan pwochen?

Priyorite nou an se amelyore fasilite nan devlopman lè l sèvi avèk Tarantool Done Gri. Pou egzanp, sa a se yon IDE ak sipò pou pwofil ak debogaj moun k ap okipe yo kouri nan yon bwat sab.

Nou menm tou nou peye anpil atansyon sou pwoblèm sekirite. Kounye a nou ap sibi sètifikasyon pa FSTEC nan Larisi konfime nivo segondè nan sekirite ak satisfè kondisyon yo pou sètifikasyon nan pwodwi lojisyèl yo itilize nan sistèm enfòmasyon pèsonèl done ak sistèm enfòmasyon gouvènman an.

Sous: www.habr.com

Add nouvo kòmantè