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
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 -
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:
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
{
"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
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
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:
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 sum
nga 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:
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 (
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:
- 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.
- 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.
- 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
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