Arkitektura ug mga kapabilidad sa Tarantool Data Grid

Arkitektura ug mga kapabilidad sa Tarantool Data Grid

Sa 2017, nakadaog kami sa usa ka kompetisyon aron mapalambo ang transactional core sa negosyo sa pamuhunan sa Alfa-Bank ug nagsugod sa pagtrabaho (sa HighLoad++ 2018 nga adunay usa ka taho sa kinauyokan sa negosyo sa pamuhunan gihimo Vladimir Drynkin, pangulo sa transactional core sa negosyo sa pamuhunan sa Alfa Bank). Kini nga sistema kinahanglan nga maghiusa sa mga datos sa transaksyon gikan sa lainlaing mga gigikanan sa lainlaing mga pormat, dad-on ang datos sa usa ka hiniusa nga porma, tipigan kini ug hatagan kini pag-access.

Atol sa proseso sa pag-uswag, ang sistema milambo ug nakakuha og gamit, ug sa usa ka punto nakaamgo kami nga kami nag-kristal sa usa ka butang nga labaw pa sa software sa aplikasyon nga gihimo aron masulbad ang usa ka estrikto nga gihubit nga mga buluhaton: milampos kami sistema alang sa pagtukod sa gipang-apod-apod nga mga aplikasyon nga adunay padayon nga pagtipig. Ang kasinatian nga among naangkon nahimong sukaranan sa usa ka bag-ong produkto - Tarantool Data Grid (TDG).

Gusto nakong hisgutan ang bahin sa arkitektura sa TDG ug ang mga solusyon nga among naabut sa panahon sa proseso sa pag-uswag, gipaila-ila kanimo ang panguna nga gamit ug ipakita kung giunsa ang among produkto mahimo’g sukaranan sa paghimo og kompleto nga mga solusyon.

Sa arkitektura, gibahin namon ang sistema sa lahi mga papel, nga ang matag usa mao ang responsable sa pagsulbad sa usa ka piho nga lainlaing mga problema. Ang usa ka instance nga nagdagan nga aplikasyon nagpatuman usa o daghang mga tipo sa papel. Mahimong adunay daghang mga tahas sa parehas nga tipo sa usa ka cluster:

Arkitektura ug mga kapabilidad sa Tarantool Data Grid

connector

Connector mao ang responsable alang sa komunikasyon uban sa gawas nga kalibutan; ang tahas niini mao ang pagdawat sa hangyo, pag-parse niini, ug kung kini molampos, dayon ipadala ang datos alang sa pagproseso sa input processor. Gisuportahan namon ang mga format sa HTTP, SOAP, Kafka, FIX. Gitugotan ka sa arkitektura nga idugang lamang ang suporta para sa mga bag-ong format, nga adunay suporta alang sa IBM MQ nga moabut sa dili madugay. Kung napakyas ang pag-parse sa hangyo, ang konektor magbalik usa ka sayup; kung dili, kini motubag nga ang hangyo malampuson nga naproseso, bisan kung adunay sayup nga nahitabo sa panahon sa dugang nga pagproseso niini. Gihimo kini nga espesipiko aron magtrabaho sa mga sistema nga wala mahibal-an kung giunsa pag-usab ang mga hangyo - o, sa kasukwahi, buhata kini nga makanunayon. Aron dili mawad-an sa datos, gigamit ang usa ka pila sa pag-ayo: ang butang una nga nakasulod niini ug pagkahuman sa malampuson nga pagproseso makuha gikan niini. Makadawat ang tagdumala og mga alerto bahin sa mga butang nga nahabilin sa pila sa pag-ayo, ug pagkahuman mawagtang ang sayup sa software o pagkapakyas sa hardware, sulayi pag-usab.

Input processor

Ang Input processor nagklasipikar sa nadawat nga datos sumala sa mga kinaiya nga bahin ug nagtawag sa angay nga mga processor. Ang mga handler kay Lua code nga nagdagan sa sandbox, mao nga dili kini makaapekto sa paggana sa sistema. Niini nga yugto, ang datos mahimong mapakunhod ngadto sa gikinahanglan nga porma, ug, kung gikinahanglan, ang usa ka arbitraryong gidaghanon sa mga buluhaton mahimong ilunsad nga makapatuman sa gikinahanglan nga lohika. Pananglitan, sa produkto sa MDM (Master Data Management) nga gitukod sa Tarantool Data Grid, kung nagdugang usa ka bag-ong tiggamit, aron dili mapahinay ang pagproseso sa hangyo, gilunsad namon ang paghimo sa usa ka bulawan nga rekord ingon usa ka lahi nga buluhaton. Gisuportahan sa sandbox ang mga hangyo alang sa pagbasa, pagbag-o ug pagdugang sa datos, nagtugot kanimo sa paghimo sa pipila nga mga gimbuhaton sa tanan nga mga tahas sa tipo sa pagtipig ug pagtipon sa resulta (mapa / pagkunhod).

Ang mga tigdumala mahimong mahulagway sa mga file:

sum.lua

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

Ug unya, gipahayag sa pagsumpo:

functions:
  sum: { __file: sum.lua }

Ngano si Lua? Ang Lua usa ka yano kaayo nga pinulongan. Base sa among kasinatian, pipila ka oras human makaila niini, ang mga tawo nagsugod sa pagsulat og code nga makasulbad sa ilang problema. Ug kini dili lamang mga propesyonal nga developer, apan, pananglitan, mga analista. Dugang pa, salamat sa jit compiler, si Lua midagan kaayo.

Pagtipig

Ang pagtipig nagtipig kanunay nga datos. Sa dili pa i-save, ang data gi-validate batok sa data schema. Aron ihulagway ang sirkito naggamit kami ug pinalawig nga format Apache Avro. Usa ka pananglitan:

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

Base sa kini nga paghulagway, ang DDL (Data Definition Language) awtomatik nga namugna alang sa Tarantula DBMS ug GraphQL schema alang sa data access.

Gisuportahan ang asynchronous data replication (adunay mga plano nga idugang ang kadungan).

Output processor

Usahay gikinahanglan nga ipahibalo ang mga eksternal nga konsumedor bahin sa pag-abot sa bag-ong datos; alang niini nga katuyoan, adunay papel nga Output processor. Pagkahuman sa pagtipig sa datos, mahimo kini ipasa sa angay nga handler (pananglitan, aron madala kini sa porma nga gikinahanglan sa konsumedor) - ug dayon ipasa sa konektor alang sa pagpadala. Gigamit usab dinhi ang pila sa pag-ayo: kung walay midawat sa butang, ang tigdumala mahimong mosulay pag-usab sa ulahi.

Pag-scale

Ang mga tahas sa connector, input processor, ug output processor walay estado, nga nagtugot kanamo sa pag-scale sa sistema sa horizontally pinaagi lamang sa pagdugang sa bag-ong mga instance sa aplikasyon uban sa gusto nga role type nga gipagana. Ang storage kay gigamit para sa horizontal scaling ang pamaagi sa pag-organisar sa usa ka cluster gamit ang virtual nga mga balde. Human makadugang ug bag-ong server, ang pipila sa mga balde gikan sa karaang mga server ibalhin ngadto sa bag-ong server sa luyo; kini klaro nga mahitabo sa mga tiggamit ug dili makaapekto sa operasyon sa tibuok nga sistema.

Data Properties

Ang mga butang mahimong dako kaayo ug adunay ubang mga butang. Among gisiguro ang atomicity sa pagdugang ug pag-update sa datos pinaagi sa pagtipig sa usa ka butang nga adunay tanang dependency sa usa ka virtual nga balde. Gipugngan niini ang butang nga "pagkatag" sa daghang mga pisikal nga server.

Gisuportahan ang pag-bersyon: ang matag pag-update sa usa ka butang nagmugna og bag-ong bersyon, ug kanunay namong mogahin ug panahon ug tan-awon kung unsa ang hitsura sa kalibutan kaniadto. Para sa mga datos nga wala magkinahanglan og taas nga kasaysayan, mahimo natong limitahan ang gidaghanon sa mga bersyon o bisan usa lang ang tipigan - ang pinakabag-o - nga mao, ang esensya nga pag-disable sa bersyon sa usa ka matang. Mahimo usab nimo limitahan ang kasaysayan sa oras: pananglitan, tangtangon ang tanan nga mga butang sa usa ka piho nga tipo nga mas tigulang kaysa 1 ka tuig. Gisuportahan usab ang pag-archive: mahimo namon nga idiskarga ang mga butang nga mas tigulang kaysa sa gitakda nga oras, nga magpagawas sa wanang sa cluster.

buluhaton

Lakip sa mga makapaikag nga bahin, angay nga matikdan ang abilidad sa paglansad sa mga buluhaton sa usa ka iskedyul, sa hangyo sa tiggamit, o sa programa gikan sa sandbox:

Arkitektura ug mga kapabilidad sa Tarantool Data Grid

Dinhi atong makita ang laing papel - runner. Kini nga tahas walay estado, ug ang dugang nga mga kaso sa aplikasyon nga adunay kini nga tahas mahimong idugang sa cluster kung gikinahanglan. Ang responsibilidad sa runner mao ang pagkompleto sa mga buluhaton. Sama sa gihisgutan, posible nga makamugna og bag-ong mga buluhaton gikan sa sandbox; gitipigan sila sa usa ka pila sa pagtipig ug dayon gipatuman sa runner. Kini nga matang sa buluhaton gitawag ug Job. Adunay usab kami usa ka klase sa buluhaton nga gitawag nga Task - kini ang mga buluhaton nga gitakda sa gumagamit nga nagdagan sa usa ka iskedyul (gamit ang cron syntax) o kung gipangayo. Aron malansad ug masubay ang ingon nga mga buluhaton, kami adunay usa ka kombenyente nga task manager. Aron magamit kini nga gamit, kinahanglan nimo nga mahimo ang papel sa scheduler; kini nga papel adunay usa ka estado, mao nga kini dili sukdanan, nga, bisan pa niana, wala gikinahanglan; sa samang higayon, sama sa tanan nga uban nga mga papel, kini mahimong adunay usa ka kopya nga magsugod sa pagtrabaho kon ang agalon kalit nga mobalibad.

Magtroso

Ang laing tahas gitawag nga logger. Nagkolekta kini og mga troso gikan sa tanang miyembro sa cluster ug naghatag og interface alang sa pag-upload ug pagtan-aw niini pinaagi sa web interface.

Mga Serbisyo

Angayan nga hisgutan nga ang sistema nagpadali sa paghimo og mga serbisyo. Sa configuration file, mahimo nimong ipiho kung unsang mga hangyo ang ipadala sa usa ka handler nga gisulat sa user nga nagdagan sa sandbox. Niini nga handler, mahimo nimo, pananglitan, magpadagan sa usa ka matang sa analytical nga pangutana ug ibalik ang resulta.

Ang serbisyo gihulagway sa configuration file:

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

Ang GraphQL API awtomatik nga namugna ug ang serbisyo mahimong magamit alang sa pagtawag:

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

Kini motawag sa handler sumnga ibalik ang resulta:

3

Pangutana Profiling ug Sukatan

Aron masabtan ang operasyon sa sistema ug mga hangyo sa profiling, gipatuman namo ang suporta para sa OpenTracing protocol. Mahimong ipadala sa sistema ang kasayuran kung gipangayo sa mga himan nga nagsuporta niini nga protocol, sama sa Zipkin, nga magtugot kanimo nga masabtan kung giunsa gipatuman ang hangyo:

Arkitektura ug mga kapabilidad sa Tarantool Data Grid

Natural, ang sistema naghatag mga internal nga sukatan nga mahimong kolektahon gamit ang Prometheus ug makita gamit ang Grafana.

Ipakaylap

Ang Tarantool Data Grid mahimong ma-deploy gikan sa RPM packages o usa ka archive, gamit ang utility gikan sa distribution o Ansible, adunay suporta usab para sa Kubernetes (Operator sa Tarantool Kubernetes).

Ang aplikasyon nga nagpatuman sa lohika sa negosyo (konfigurasyon, mga tigdumala) gikarga sa gi-deploy nga Tarantool Data Grid cluster sa porma sa archive pinaagi sa UI o gamit ang script pinaagi sa API nga gihatag kanamo.

Sampol nga mga Aplikasyon

Unsa nga mga aplikasyon ang mahimo gamit ang Tarantool Data Grid? Sa tinuud, kadaghanan sa mga buluhaton sa negosyo adunay kalabotan sa pagproseso, pagtipig ug pag-access sa dagan sa datos. Busa, kung ikaw adunay daghang mga sapa sa datos nga kinahanglan nga luwas nga gitipigan ug ma-access, nan ang among produkto makaluwas kanimo daghang oras sa pag-uswag ug mag-focus sa imong lohika sa negosyo.

Pananglitan, gusto namon nga mangolekta og kasayuran bahin sa merkado sa real estate, aron sa umaabot, pananglitan, adunay kami kasayuran bahin sa labing kaayo nga mga tanyag. Niini nga kaso, atong ipasiugda ang mosunod nga mga buluhaton:

  1. Ang mga robot nga nagkolekta og impormasyon gikan sa bukas nga mga tinubdan mao ang atong mga tinubdan sa datos. Mahimo nimong sulbaron kini nga problema gamit ang andam nga mga solusyon o pagsulat sa code sa bisan unsang pinulongan.
  2. Sunod, ang Tarantool Data Grid modawat ug magtipig sa datos. Kung lahi ang format sa datos gikan sa lainlaing mga gigikanan, mahimo nimong isulat ang code sa Lua nga magbuhat sa pagkakabig sa usa ka format. Sa yugto sa pre-processing, mahimo usab nimo, pananglitan, ang pagsala sa mga doble nga tanyag o dugang nga pag-update sa kasayuran bahin sa mga ahente nga nagtrabaho sa merkado sa database.
  3. Karon aduna ka nay usa ka scalable nga solusyon sa usa ka cluster nga mahimong mapuno sa datos ug maghimo sa mga pagpili sa datos. Unya mahimo nimong ipatuman ang bag-ong pag-andar, pananglitan, pagsulat usa ka serbisyo nga maghimo usa ka hangyo alang sa datos ug hatagan ang labing mapuslanon nga tanyag matag adlaw - magkinahanglan kini pipila ka mga linya sa file sa pag-configure ug gamay nga code sa Lua.

Unsay sunod?

Ang atong prayoridad mao ang pagpalambo sa kasayon ​​sa kalamboan sa paggamit Tarantool Data Grid. Pananglitan, kini usa ka IDE nga adunay suporta alang sa pag-profile ug pag-debug sa mga tigdumala nga nagdagan sa usa ka sandbox.

Gihatagan usab namo og dakong pagtagad ang mga isyu sa kaluwasan. Sa pagkakaron nagpailalom kami sa sertipikasyon sa FSTEC sa Russia aron makumpirma ang taas nga lebel sa seguridad ug matuman ang mga kinahanglanon alang sa sertipikasyon sa mga produkto sa software nga gigamit sa mga sistema sa impormasyon sa personal nga datos ug mga sistema sa impormasyon sa gobyerno.

Source: www.habr.com

Idugang sa usa ka comment