Hoʻolālā a me nā hiki o Tarantool Data Grid

Hoʻolālā a me nā hiki o Tarantool Data Grid

I ka makahiki 2017, ua lanakila mākou i ka hoʻokūkū e hoʻomohala i ka transactional core o Alfa-Bank's investment business a hoʻomaka i ka hana (ma HighLoad++ 2018 me kahi hōʻike e pili ana i ke kumu o ka ʻoihana hoʻopukapuka. hana ʻia ʻO Vladimir Drynkin, ke poʻo o ka transactional core o ka ʻoihana hoʻopukapuka kālā o Alfa Bank). Ua manaʻo ʻia kēia ʻōnaehana e hōʻuluʻulu i nā ʻikepili kālepa mai nā kumu like ʻole i nā ʻano like ʻole, e lawe mai i ka ʻikepili i kahi ʻano hui like, mālama a hāʻawi i ke komo ʻana iā ia.

I ka wā o ka hoʻomohala ʻana, ua ulu ka ʻōnaehana a loaʻa i ka hana, a i kekahi manawa ua ʻike mākou e hoʻoheheʻe ana mākou i kekahi mea ʻoi aku ka nui ma mua o ka polokalamu noiʻi i hana ʻia e hoʻoponopono i kahi ʻano hana i wehewehe ʻia: ua lanakila mākou. ʻōnaehana no ke kūkulu ʻana i nā noi i hoʻolaha ʻia me ka mālama mau. ʻO ka ʻike i loaʻa iā mākou ke kumu o kahi huahana hou - Māhele ʻIkepili Tarantool (TDG).

Makemake wau e kamaʻilio e pili ana i ka hoʻolālā TDG a me nā hoʻonā a mākou i hele mai ai i ka wā o ka hoʻomohala ʻana, e hoʻolauna iā ʻoe i ka hana nui a hōʻike pehea e hiki ai i kā mākou huahana ke lilo i kumu no ke kūkulu ʻana i nā hoʻonā piha.

Ma keʻano hoʻolālā, ua hoʻokaʻawale mākou i ka pūnaewele i kahi kaʻawale kuleana, ke kuleana o kēlā me kēia o ka hoʻoponopono ʻana i kekahi mau pilikia. Hoʻohana ʻia kahi mea hoʻohana i hoʻokahi a ʻoi aku paha nā ʻano hana. Hiki ke loaʻa kekahi mau hana o ka ʻano like i loko o kahi pūʻulu:

Hoʻolālā a me nā hiki o Tarantool Data Grid

hūlili

ʻO ka mea hoʻohui ke kuleana no ke kamaʻilio ʻana me ka honua o waho; ʻO kāna hana, ʻo ia ka ʻae ʻana i ka noi, hoʻokaʻawale iā ia, a inā e kūleʻa kēia, a laila e hoʻouna i ka ʻikepili no ka hana ʻana i ka mea hoʻokomo. Kākoʻo mākou i nā palapala HTTP, SOAP, Kafka, FIX. Hāʻawi ka hale hana iā ʻoe e hoʻohui i ke kākoʻo no nā ʻano hou, me ke kākoʻo no IBM MQ e hiki koke mai ana. Inā ʻaʻole i hoʻopaʻa ʻia ka noi, e hoʻihoʻi ka mea hoʻohui i kahi hewa; inā ʻaʻole, e pane ʻo ia ua hoʻokō maikaʻi ʻia ka noi, ʻoiai inā he hewa i ka wā o kāna hana hou ʻana. Hana ʻia kēia i mea e hana ai me nā ʻōnaehana ʻike ʻole pehea e hana hou ai i nā noi - a i ʻole, e hana hoʻomau. I mea e nalowale ʻole ai ka ʻikepili, hoʻohana ʻia kahi laina hoʻoponopono: komo mua ka mea i loko a ma hope o ka wehe ʻana i ka hana kūleʻa mai ia mea. Hiki i ka luna hoʻomalu ke loaʻa nā mākaʻikaʻi e pili ana i nā mea i koe i ka laina hoʻoponopono, a ma hope o ka hoʻopau ʻana i kahi hewa lako polokalamu a i ʻole nā ​​lako lako, e hoʻāʻo hou.

Mea hoʻokomo

Hoʻokaʻawale ka mea hana Input i ka ʻikepili i loaʻa e like me nā hiʻohiʻona hiʻohiʻona a kāhea i nā mea hana kūpono. ʻO nā mea lima he code Lua e holo ana i loko o kahi pahu one, no laila ʻaʻole hiki iā lākou ke hoʻololi i ka hana o ka ʻōnaehana. I kēia pae, hiki ke hoʻemi ʻia ka ʻikepili i ke ʻano i koi ʻia, a, inā pono, hiki ke hoʻokuʻu ʻia kahi helu o nā hana i hiki ke hoʻokō i ka loiloi kūpono. No ka laʻana, i ka huahana MDM (Master Data Management) i kūkulu ʻia ma Tarantool Data Grid, i ka wā e hoʻohui ai i kahi mea hoʻohana hou, i ʻole e hoʻolōʻihi i ka hana ʻana o ka noi, hoʻomaka mākou i ka hana ʻana i kahi moʻolelo gula ma ke ʻano he hana kaʻawale. Kākoʻo ka sandbox i nā noi no ka heluhelu ʻana, hoʻololi a hoʻohui ʻana i ka ʻikepili, hiki iā ʻoe ke hana i kekahi hana ma nā kuleana āpau o ke ʻano waihona a me ka hōʻuluʻulu ʻana o ka hopena (palapala palapala / hōʻemi).

Hiki ke wehewehe ʻia nā mea lawelawe ma nā faila:

sum.lua

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

A laila, haʻi ʻia ma ka hoʻonohonoho:

functions:
  sum: { __file: sum.lua }

No ke aha o Lua? He ʻōlelo maʻalahi loa ka lua. Ma muli o kā mākou ʻike, ʻelua mau hola ma hope o ka ʻike ʻana iā ia, hoʻomaka ka poʻe e kākau i nā code e hoʻonā i ko lākou pilikia. A ʻaʻole kēia mau mea hoʻomohala ʻoihana wale nō, akā, no ka laʻana, nā mea loiloi. Eia kekahi, mahalo i ka jit compiler, holo wikiwiki ʻo Lua.

pūnaewele

Mālama ka waihona i ka ʻikepili mau. Ma mua o ka mālama ʻana, hōʻoia ʻia ka ʻikepili e pili ana i ka schema data. No ka wehewehe ʻana i ke kaapuni, hoʻohana mākou i kahi ʻano lōʻihi ʻO Apache Avro... Laʻana:

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

Ma muli o kēia wehewehe ʻana, hana ʻia ʻo DDL (Data Definition Language) no ka Tarantula DBMS a GraphQL papahana no ka loaʻa ʻana o ka ʻikepili.

Kākoʻo ʻia ka replication data Asynchronous (aia nā hoʻolālā e hoʻohui i kahi synchronous).

Mea hoʻopuka puka

I kekahi manawa pono e hoʻomaopopo i nā mea kūʻai aku o waho e pili ana i ka hōʻea ʻana o ka ʻikepili hou; no kēia kumu, aia ka hana Output processor. Ma hope o ka mālama ʻana i ka ʻikepili, hiki ke hāʻawi ʻia i ka mea hoʻokele kūpono (e laʻa, e lawe mai i ke ʻano i koi ʻia e ka mea kūʻai aku) - a laila hāʻawi ʻia i ka mea hoʻohui no ka hoʻouna ʻana. Hoʻohana ʻia ka pila hoʻoponopono ma ʻaneʻi: inā ʻaʻohe mea i ʻae i ka mea, hiki i ka luna hoʻomalu ke hoʻāʻo hou ma hope.

Ka hoʻonui ʻana

ʻAʻole mokuʻāina ka mea hoʻohui, ka mea hoʻopuka hoʻokomo, a me ka mea hana hoʻopukapuka, e ʻae iā mākou e hoʻonui i ka ʻōnaehana ma ke ʻano ākea ma ka hoʻohui ʻana i nā manawa noi hou me ke ʻano hana i makemake ʻia. Hoʻohana ʻia ka waihona no ka hoʻonui ʻana ke k? kokoke i ka hoʻonohonoho ʻana i kahi pūʻulu me ka hoʻohana ʻana i nā bākeke virtual. Ma hope o ka hoʻohui ʻana i kahi kikowaena hou, hoʻoneʻe ʻia kekahi o nā bākeke mai nā kikowaena kahiko i ke kikowaena hou ma hope; hiki mai kēia i nā mea hoʻohana a ʻaʻole pili i ka hana o ka ʻōnaehana holoʻokoʻa.

Nā waiwai ʻikepili

Hiki i nā mea ke nui loa a loaʻa nā mea ʻē aʻe. Hoʻopaʻa mākou i ka atomicity o ka hoʻohui ʻana a me ka hoʻonui ʻana i ka ʻikepili ma ka mālama ʻana i kahi mea me nā hilinaʻi āpau i loko o hoʻokahi bākeke virtual. Mālama kēia i ka mea mai ka "palaha" ma nā kikowaena kino.

Kākoʻo ʻia ka hoʻololi ʻana: hana kēlā me kēia mea hou i kahi mana hou, a hiki iā mākou ke lawe i kahi ʻāpana manawa a ʻike i ke ʻano o ka honua ia manawa. No ka ʻikepili ʻaʻole pono i ka mōʻaukala lōʻihi, hiki iā mākou ke kaupalena i ka helu o nā mana a i ʻole mālama i hoʻokahi wale nō - ʻo ka mea hou loa - ʻo ia hoʻi, hoʻopau maoli i ka hoʻololi ʻana no kekahi ʻano. Hiki iā ʻoe ke kaupalena i ka mōʻaukala ma ka manawa: no ka laʻana, holoi i nā mea āpau o kekahi ʻano ʻoi aku ma mua o 1 makahiki. Kākoʻo ʻia ka mālama ʻana: hiki iā mākou ke wehe i nā mea i ʻoi aku ma mua o ka manawa i ʻōlelo ʻia, e hoʻokuʻu ana i kahi i loko o ka pūpū.

hana

Ma waena o nā hiʻohiʻona hoihoi, pono ia e ʻike i ka hiki ke hoʻomaka i nā hana ma kahi papa manawa, ma ke noi a ka mea hoʻohana, a i ʻole programmatically mai ka sandbox:

Hoʻolālā a me nā hiki o Tarantool Data Grid

Eia mākou e ʻike ai i kahi hana ʻē aʻe - ka holo. He mokuʻāina ʻole kēia kuleana, a hiki ke hoʻohui ʻia nā hiʻohiʻona noi hou me kēia kuleana i ka pūʻulu inā pono. ʻO ke kuleana o ka mea kukini ke hoʻopau i nā hana. E like me ka mea i ʻōlelo ʻia, hiki ke hana i nā hana hou mai ka pahu one; mālama ʻia lākou i loko o kahi pila ma ka waiho ʻana a laila hoʻokō ʻia ma luna o ka mea kukini. Kapa ʻia kēia ʻano hana ʻo Ioba. Loaʻa iā mākou kahi ʻano hana i kapa ʻia ʻo Task - ʻo ia nā hana i wehewehe ʻia e ka mea hoʻohana e holo ana ma kahi papa manawa (hoʻohana i ka cron syntax) a i ʻole ke koi. No ka hoʻomaka ʻana a me ka hahai ʻana i ia mau hana, loaʻa iā mākou kahi luna hana maʻalahi. I mea e loaʻa ai kēia hana, pono ʻoe e ʻae i ka hana hoʻonohonoho; He mokuʻāina kēia kuleana, no laila, ʻaʻole ia e paona, ʻaʻole naʻe i koi ʻia; i ka manawa like, e like me nā kuleana ʻē aʻe, hiki ke loaʻa i kahi kope e hoʻomaka ana e hana inā hōʻole koke ka haku.

Kākau

ʻO kekahi kuleana i kapa ʻia he logger. ʻOhi ia i nā lāʻau mai nā lālā a pau o ka hui a hāʻawi i kahi kikowaena no ka hoʻouka ʻana a me ka nānā ʻana iā lākou ma o ka pūnaewele pūnaewele.

Nā lawelawe

He mea pono e haʻi aku i ka ʻōnaehana maʻalahi i ka hana ʻana i nā lawelawe. Ma ka waihona hoʻonohonoho, hiki iā ʻoe ke kuhikuhi i nā noi i hoʻouna ʻia i kahi mea hoʻohana i kākau ʻia e holo ana i ka pahu one. Ma kēia mea lawelawe, hiki iā ʻoe, no ka laʻana, ke holo i kekahi ʻano nīnau noiʻi a hoʻihoʻi i ka hopena.

Ua wehewehe ʻia ka lawelawe ma ka faila hoʻonohonoho:

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

Hana ʻia ka GraphQL API a loaʻa ka lawelawe no ke kelepona ʻana:

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

E kāhea kēia i ka mea lawelawe sume hoʻihoʻi i ka hopena:

3

Huli Huli a me nā ana

No ka hoʻomaopopo ʻana i ka hana o ka ʻōnaehana a me nā noi profiling, ua hoʻokō mākou i ke kākoʻo no ka protocol OpenTracing. Hiki i ka ʻōnaehana ke hoʻouna i ka ʻike e pili ana i ke koi i nā mea hana e kākoʻo ana i kēia protocol, e like me Zipkin, e ʻae iā ʻoe e hoʻomaopopo i ke ʻano o ka hoʻokō ʻia ʻana o ka noi:

Hoʻolālā a me nā hiki o Tarantool Data Grid

Ma keʻano maoli, hāʻawi ka ʻōnaehana i nā metric kūloko e hiki ke hōʻiliʻili ʻia me ka hoʻohana ʻana iā Prometheus a nānā ʻia me ka hoʻohana ʻana iā Grafana.

Hoʻopili

Hiki ke hoʻokuʻu ʻia ʻo Tarantool Data Grid mai nā pūʻulu RPM a i ʻole kahi waihona, me ka hoʻohana ʻana i kahi pono mai ka hāʻawi ʻana a i ʻole Ansible, aia pū kekahi kākoʻo no Kubernetes (Mea hoʻohana ʻo Tarantool Kubernetes).

Hoʻokomo ʻia ka noi e hoʻokō i ka loiloi ʻoihana (hoʻonohonoho, nā mea lawelawe) i loko o ka pūʻulu Tarantool Data Grid i hoʻonohonoho ʻia ma ke ʻano o kahi waihona ma o ka UI a i ʻole ka hoʻohana ʻana i kahi palapala ma o ka API i hāʻawi ʻia e mākou.

Laʻana Noi

He aha nā noi e hiki ke hana me ka hoʻohana ʻana i ka Tarantool Data Grid? ʻO kaʻoiaʻiʻo, ʻo ka hapa nui o nā hana ʻoihana e pili ana i ka hoʻoili ʻana, mālama ʻana a me ke komo ʻana i ka kahe ʻikepili. No laila, inā loaʻa iā ʻoe nā kahawai nui o ka ʻikepili e pono e mālama pono ʻia a loaʻa, a laila hiki i kā mākou huahana ke mālama iā ʻoe i ka manawa hoʻomohala nui a nānā i kāu loiloi ʻoihana.

No ka laʻana, makemake mākou e hōʻiliʻili i ka ʻike e pili ana i ka mākeke waiwai, no laila i ka wā e hiki mai ana, no ka laʻana, e loaʻa iā mākou ka ʻike e pili ana i nā makana maikaʻi loa. I kēia hihia, e hōʻike mākou i kēia mau hana:

  1. ʻO nā lopako e hōʻiliʻili i ka ʻike mai nā kumu wehe e lilo i kā mākou kumu ʻikepili. Hiki iā ʻoe ke hoʻoponopono i kēia pilikia me ka hoʻohana ʻana i nā hoʻonā i hana ʻia a kākau paha i nā code ma kekahi ʻōlelo.
  2. A laila, e ʻae a mālama ʻo Tarantool Data Grid i ka ʻikepili. Inā ʻokoʻa ka hōpili ʻikepili mai nā kumu like ʻole, a laila hiki iā ʻoe ke kākau i ke code ma Lua e hana ai i ka hoʻololi ʻana i hoʻokahi ʻano. Ma ke kaʻina hana mua, hiki iā ʻoe, no ka laʻana, ke kānana i nā makana ʻelua a i ʻole e hoʻonui hou i ka ʻike e pili ana i nā ʻelele e hana ana ma ka mākeke ma ka waihona.
  3. I kēia manawa ua loaʻa iā ʻoe kahi hopena scalable i loko o kahi pūpū hiki ke hoʻopiha ʻia me ka ʻikepili a hana i nā koho ʻikepili. A laila hiki iā ʻoe ke hoʻokō i nā hana hou, no ka laʻana, e kākau i kahi lawelawe e hana i kahi noi no ka ʻikepili a hāʻawi i ka makana maikaʻi loa i kēlā me kēia lā - pono kēia i kekahi mau laina i ka faila hoʻonohonoho a me kahi code Lua liʻiliʻi.

He aha ka mea e hiki mai ana?

ʻO kā mākou mea nui e hoʻomaikaʻi i ka maʻalahi o ka hoʻohana ʻana Māhele ʻIkepili Tarantool. No ka laʻana, he IDE kēia me ke kākoʻo no ka hoʻopili ʻana a me ka hoʻopau ʻana i nā mea lima e holo ana i loko o kahi pahu one.

Ke nānā nui nei mākou i nā pilikia palekana. I kēia manawa ke hele nei mākou i ka palapala hōʻoia e FSTEC o Rūsia e hōʻoia i ka pae kiʻekiʻe o ka palekana a hoʻokō i nā koi no ka hōʻoia ʻana i nā huahana polokalamu i hoʻohana ʻia i nā ʻōnaehana ʻike pilikino a me nā ʻōnaehana ʻike aupuni.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka