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