Architecture sy ny fahaizan'ny Tarantool Data Grid

Architecture sy ny fahaizan'ny Tarantool Data Grid

Tamin'ny taona 2017, nandresy tamin'ny fifaninanana hamolavola ny fototry ny fifampiraharahana amin'ny orinasa fampiasam-bolan'ny Alfa-Bank izahay ary nanomboka niasa (tamin'ny HighLoad++ 2018 miaraka amin'ny tatitra momba ny fototry ny orinasa fampiasam-bola. nanao Vladimir Drynkin, lehiben'ny ivon'ny transactional ny orinasa fampiasam-bola ao amin'ny Alfa Bank). Ity rafitra ity dia tokony hanangona angon-drakitra momba ny varotra avy amin'ny loharano samihafa amin'ny endrika isan-karazany, hitondra ny angon-drakitra ho amin'ny endrika tokana, hitahiry azy ary hanome fidirana amin'izany.

Nandritra ny dingan'ny fampandrosoana dia nivoatra ny rafitra ary nahazo fiasa, ary tamin'ny fotoana iray dia nahatsapa izahay fa nanao kristaly zavatra mihoatra noho ny rindrambaiko fampiharana noforonina mba hamahana asa maromaro voafaritra tsara: nahomby izahay. rafitra fananganana fampiharana zaraina miaraka amin'ny fitahirizana maharitra. Ny traikefa azonay no fototry ny vokatra vaovao - Tarantool Data Grid (TDG).

Te-hiresaka momba ny maritrano TDG sy ny vahaolana azonay nandritra ny dingan'ny fampandrosoana aho, mampahafantatra anao ny fiasa fototra ary mampiseho ny fomba ahafahan'ny vokatray ho lasa fototry ny fananganana vahaolana feno.

Araka ny Architecturally, nozarainay misaraka ny rafitra andraikitra, izay samy tompon'andraikitra amin'ny famahana olana isan-karazany. Mampihatra karazana anjara iray na maromaro ny ohatra fampiharana iray mandeha. Mety misy andraikitra maromaro mitovy karazana ao anaty cluster:

Architecture sy ny fahaizan'ny Tarantool Data Grid

Connector

Connector dia tompon'andraikitra amin'ny fifandraisana amin'ny tontolo ivelany; Ny anjarany dia ny manaiky ny fangatahana, manara-maso azy, ary raha mahomby izany, dia alefaso any amin'ny processeur input ny angon-drakitra ho an'ny fanodinana. Manohana endrika HTTP, SOAP, Kafka, FIX izahay. Ny maritrano dia ahafahanao manampy fanohanana endrika vaovao, miaraka amin'ny fanohanana IBM MQ ho avy tsy ho ela. Raha tsy nahomby ny famakafakana ny fangatahana, dia hamerina fahadisoana ny mpampitohy; raha tsy izany, dia hamaly izy fa vita soa aman-tsara ny fangatahana, na dia nisy hadisoana nitranga nandritra ny fanodinana azy. Natao manokana izany mba hiasa miaraka amin'ireo rafitra tsy mahay mamerina ny fangatahana - na, mifanohitra amin'izany, manao izany tsy tapaka. Mba tsy ho very angon-drakitra dia ampiasaina ny filaharana fanamboarana: ny zavatra voalohany dia miditra ao ary rehefa vita ny fanodinana mahomby dia nesorina taminy. Ny mpitantana dia afaka mahazo fampandrenesana momba ireo zavatra tavela ao amin'ny filaharana fanamboarana, ary aorian'ny fanesorana ny hadisoana amin'ny rindrambaiko na ny tsy fahombiazan'ny fitaovana dia andramo indray.

Input processeur

Ny processeur Input dia manasokajy ny angona voaray araka ny endri-javatra mampiavaka azy ary miantso ireo processeur mety. Ny mpandrindra dia kaody Lua izay mandeha ao anaty boaty fasika, ka tsy misy fiantraikany amin'ny fiasan'ny rafitra. Amin'ity dingana ity, ny angon-drakitra dia azo ahena amin'ny endrika takiana, ary, raha ilaina, dia azo atomboka ny asa tsy misy dikany izay afaka mampihatra ny lojika ilaina. Ohatra, ao amin'ny vokatra MDM (Master Data Management) natsangana tamin'ny Tarantool Data Grid, rehefa manampy mpampiasa vaovao, mba tsy hampiadana ny fikarakarana ny fangatahana, dia manomboka ny famoronana rakitsoratra volamena ho asa manokana. Ny sandbox dia manohana ny fangatahana famakiana, fanovana ary fampidirana angon-drakitra, ahafahanao manatanteraka asa sasantsasany amin'ny anjara asa rehetra amin'ny karazana fitahirizana sy ny fanangonana ny valiny (sarintany / ahena).

Ny mpitantana dia azo faritana amin'ny rakitra:

sum.lua

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

Ary avy eo, nambara tao amin'ny configuration:

functions:
  sum: { __file: sum.lua }

Nahoana i Lua? Teny tena tsotra ny Lua. Mifototra amin'ny traikefanay, ora roa taorian'ny nahafantarana azy, nanomboka nanoratra kaody hamahana ny olany ny olona. Ary ireo dia tsy vitan'ny developer matihanina, fa, ohatra, mpandinika. Ankoatra izany, noho ny jit compiler, dia mihazakazaka haingana i Lua.

Storage

Ny fitahirizana dia mitahiry angona maharitra. Alohan'ny fitahirizana, ny angona dia voamarina amin'ny schema data. Mba hamaritana ny fizaran-tany dia mampiasa endrika miitatra isika Apache Avro... ohatra:

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

Mifototra amin'ity famaritana ity, ny DDL (Data Definition Language) dia navoaka ho azy ho an'ny Tarantula DBMS sy GraphQL schema ho an'ny fidirana angona.

Ny famerenan'ny angon-drakitra asynchronous dia tohanana (misy drafitra hanampiana ny synchronous).

Output processeur

Indraindray dia ilaina ny mampahafantatra ny mpanjifa ivelany momba ny fahatongavan'ny angon-drakitra vaovao, ho an'ity tanjona ity dia misy ny anjara asan'ny Output processor. Aorian'ny fitehirizana ny angon-drakitra dia azo ampitaina amin'ny mpandrindra mifanaraka amin'izany (ohatra, hitondra azy amin'ny endrika takian'ny mpanjifa) - ary avy eo dia alefa any amin'ny mpampitohy ho an'ny fandefasana. Filaharana fanamboarana ihany koa no ampiasaina eto: raha tsy nisy nanaiky ilay zavatra, dia afaka manandrana indray ny mpitantana any aoriana.

Scaling

Ny andraikitry ny mpampitohy, ny processeur, ary ny processeur output dia tsy misy fanjakana, ahafahantsika manenjana ny rafitra mitsivalana amin'ny alalan'ny fampidirana fotsiny ireo ohatra fampiharana vaovao miaraka amin'ny karazana anjara tiana avela. Ny fitehirizana dia ampiasaina amin'ny fanamafisam-peo marindrano fomba amin'ny fikarakarana cluster mampiasa siny virtoaly. Aorian'ny fampidirana mpizara vaovao, ny sasany amin'ireo siny avy amin'ireo mpizara taloha dia afindra any amin'ny mpizara vaovao ao ambadika; mitranga mangarahara amin'ny mpampiasa izany ary tsy misy fiantraikany amin'ny fiasan'ny rafitra manontolo.

Data Properties

Mety ho lehibe be ny zavatra ary misy zavatra hafa. Izahay dia miantoka ny atomicity amin'ny fampidirana sy fanavaozana angona amin'ny alΓ lan'ny fitehirizana zavatra iray miaraka amin'ny fiankinana rehetra ao anaty siny virtoaly iray. Izany dia manakana ny zavatra tsy "hiparitaka" amin'ny lohamilina ara-batana maro.

Tohanana ny famoahana: ny fanavaozana ny zavatra iray dia mamorona kinova vaovao, ary afaka maka fotoana kely foana isika ary mijery ny endriky ny tontolo tamin'izany fotoana izany. Ho an'ny angona tsy mila tantara lava dia afaka mametra ny isan'ny dikan-teny isika na mitahiry iray ihany - ilay farany indrindra - izany hoe, manafoana ny dikan-teny ho an'ny karazana iray. Azonao atao koa ny mametra ny tantara amin'ny fotoana: ohatra, fafao ny zavatra rehetra amin'ny karazana iray efa mihoatra ny 1 taona. Tohanana ihany koa ny fitahirizana: afaka mamoaka zavatra efa ela kokoa noho ny fotoana voatondro isika, manafaka toerana ao amin'ny cluster.

asa

Anisan'ireo endri-javatra mahaliana, tsara ny manamarika ny fahafahana manomboka asa amin'ny fandaharam-potoana, amin'ny fangatahan'ny mpampiasa, na amin'ny programa avy amin'ny sandbox:

Architecture sy ny fahaizan'ny Tarantool Data Grid

Eto isika dia mahita andraikitra hafa - mpihazakazaka. Tsy misy fanjakana io andraikitra io, ary azo ampidirina ao amin'ny cluster ny ohatra fampiharana fanampiny miaraka amin'io andraikitra io raha ilaina. Ny andraikitry ny mpihazakazaka dia ny mamita ny asa. Araka ny voalaza dia azo atao ny mamorona asa vaovao avy amin'ny boaty fasika; voatahiry ao anaty filaharana eo amin'ny fitahirizana izy ireo ary avy eo dia vonoina amin'ny mpihazakazaka. Io karazana asa io dia antsoina hoe Joba. Manana karazana asa antsoina hoe Task koa izahay - ireo dia asa voafaritry ny mpampiasa izay mandeha amin'ny fandaharam-potoana (mampiasa cron syntax) na amin'ny fangatahana. Mba hanombohana sy hanaraha-maso ireo asa toy izany dia manana mpitantana asa mora izahay. Mba hahatongavana amin'ity fampiasa ity dia tsy maintsy avelanao ny anjara asan'ny mpandrindra; io andraikitra io dia manana fanjakana, ka tsy mizana, izay, na izany aza, dia tsy ilaina; miaraka amin'izay koa, toy ny andraikitra hafa rehetra, dia afaka manana kopia izay manomboka miasa raha mandΓ  tampoka ny tompony.

mpanapaka ala

Andraikitra iray hafa dia antsoina hoe logger. Manangona logs avy amin'ny mpikambana rehetra ao amin'ny cluster izy io ary manome interface tsara hampidirana sy hijerena azy ireo amin'ny alΓ lan'ny interface web.

Services

Tsara ny manamarika fa ny rafitra dia manamora ny famoronana serivisy. Ao amin'ny fisie fanamafisana, azonao atao ny mamaritra hoe iza avy ny fangatahana alefa amin'ny mpandrindra nosoratan'ny mpampiasa izay mandeha ao amin'ny boaty fasika. Amin'ity mpitantana ity, azonao atao, ohatra, ny manao karazana fangatahana famakafakana ary mamerina ny valiny.

Ny serivisy dia voalaza ao amin'ny rakitra fanamafisana:

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

Ny GraphQL API dia novokarina ho azy ary ny serivisy dia azo antsoina hoe:

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

Izany dia hiantso ny mpitantana sumizay hamerina ny vokatra:

3

Fanontaniana momba ny mombamomba sy ny metrika

Mba hahatakarana ny fiasan'ny rafitra sy ny fangatahana profiling dia nampihatra fanohanana ny protocol OpenTracing izahay. Ny rafitra dia afaka mandefa fampahalalana momba ny fangatahana amin'ny fitaovana manohana ity protocol ity, toy ny Zipkin, izay ahafahanao mahafantatra ny fomba nanaovana ny fangatahana:

Architecture sy ny fahaizan'ny Tarantool Data Grid

Mazava ho azy, ny rafitra dia manome metrika anatiny izay azo angonina amin'ny fampiasana Prometheus ary aseho amin'ny fampiasana Grafana.

miisa

Tarantool Data Grid dia azo apetraka amin'ny fonosana RPM na arisiva, amin'ny fampiasana fitaovana avy amin'ny fizarana na Ansible, misy koa ny fanohanana an'i Kubernetes (Tarantool Kubernetes Operator).

Ny fampiharana izay mampihatra ny lojikan'ny fandraharahana (fandrindrana, mpitantana) dia ampidirina ao amin'ny kluster Tarantool Data Grid napetraka amin'ny endrika arsiva amin'ny alΓ lan'ny UI na mampiasa script amin'ny alΓ lan'ny API nomenay.

Fampiharana santionany

Inona no fampiharana azo noforonina amin'ny alΓ lan'ny Tarantool Data Grid? Raha ny marina, ny ankamaroan'ny asa fandraharahana dia mifandraika amin'ny fanodinana, fitehirizana ary fidirana amin'ny fikorianan'ny data. Noho izany, raha manana angon-drakitra be dia be ianao izay mila tehirizina sy idirana tsara, dia afaka mamonjy fotoana fampandrosoana be dia be ny vokatray ary mifantoka amin'ny lojikan'ny orinasanao.

Ohatra, te hanangona vaovao momba ny tsenan'ny trano izahay, ka amin'ny ho avy, ohatra, dia hanana fampahalalana momba ny tolotra tsara indrindra. Amin'ity tranga ity dia hanasongadina ireto asa manaraka ireto isika:

  1. Robots izay manangona vaovao avy amin'ny loharanom-baovao misokatra no ho loharano angonay. Azonao atao ny mamaha ity olana ity amin'ny fampiasana vahaolana efa vita na fanoratana code amin'ny fiteny rehetra.
  2. Manaraka, ny Tarantool Data Grid dia hanaiky sy hamonjy ny angon-drakitra. Raha tsy mitovy ny endrika angona avy amin'ny loharano samihafa, dia azonao atao ny manoratra kaody amin'ny Lua izay hanao ny fiovam-po ho endrika tokana. Ao amin'ny dingana mialoha ny fanodinana, dia ho afaka ihany koa, ohatra, hanivana tolotra dika mitovy na fanavaozam-baovao fanampiny momba ny mpiasa miasa eo amin'ny tsena ao amin'ny tahiry.
  3. Ankehitriny ianao dia efa manana vahaolana azo tsapain-tanana ao anaty cluster izay azo fenoina amin'ny angon-drakitra ary manao fifantenana angon-drakitra. Avy eo dia azonao atao ny mampihatra fiasa vaovao, ohatra, manoratra serivisy izay hangataka angon-drakitra ary manome ny tolotra mahasoa indrindra isan'andro - izany dia mitaky andalana vitsivitsy ao amin'ny rakitra fikirakirana ary code Lua kely.

Inona ny manaraka?

Laharam-pahamehanay ny fanatsarana ny fanamorana ny fampiasana ny fampandrosoana Tarantool Data Grid. Ohatra, ity dia IDE miaraka amin'ny fanohanan'ny mpitantana ny mombamomba sy ny debugging mihazakazaka ao anaty boaty fasika.

Mandinika tsara ny olana momba ny fiarovana ihany koa izahay. Amin'izao fotoana izao dia mandalo fanamarinana avy amin'ny FSTEC ao Rosia izahay mba hanamafisana ny fiarovana avo lenta ary mahafeno ny fepetra takiana amin'ny fanamarinana ny vokatra rindrambaiko ampiasaina amin'ny rafitra fampahalalana momba ny angon-drakitra manokana sy ny rafitra fampahalalana momba ny governemanta.

Source: www.habr.com

Add a comment