Nā papa kūkulu o nā noi i hoʻolaha ʻia. Kokoke pili

Nā papa kūkulu o nā noi i hoʻolaha ʻia. Kokoke pili

ʻAʻole kū mālie ka honua. Hoʻokumu ka holomua i nā pilikia ʻenehana hou. E like me ka hoʻololi ʻana i nā koi, pono e ulu ka hoʻolālā o nā ʻōnaehana ʻike. I kēia lā e kamaʻilio mākou e pili ana i ka hanana hanana, concurrency, concurrency, asynchrony, a pehea ʻoe e noho maluhia ai me kēia mau mea a pau ma Erlang.

Hōʻike

Ma muli o ka nui o ka ʻōnaehana i hoʻolālā ʻia a me nā koi no ia, mākou, nā mea hoʻomohala, koho i ke ʻano o ka hoʻololi ʻana i ka ʻike i loko o ka ʻōnaehana. I ka hapanui o nā hihia, no ka hoʻonohonoho ʻana i ka pilina o nā lawelawe, hiki i kahi koho hana ke hoʻolālā me kahi mea kūʻai aku, no ka laʻana, e pili ana iā RabbitMQ a i ʻole kafka. Akā i kekahi manawa ke kahe o nā hanana, SLA a me ke kiʻekiʻe o ka mana ma luna o ka ʻōnaehana ʻaʻole kūpono ka leka i mākaukau no mākou. ʻOiaʻiʻo, hiki iā ʻoe ke hoʻopiʻi liʻiliʻi i ka ʻōnaehana ma o ka lawe ʻana i ke kuleana no ka papa lawe kaʻa a me ka hoʻokumu ʻana o ka cluster, no ka laʻana me ka hoʻohana ʻana iā ZeroMQ a i ʻole nanomsg. Akā inā lawa ka throughput o ka ʻōnaehana a me nā mana o kahi hui Erlang maʻamau, a laila pono ka hoʻopuka o ka hoʻokomo ʻana i kahi hui hou i ka noiʻi kikoʻī a me ka hoʻokele waiwai.

He ākea loa ke kumuhana o nā noi hoʻohele ʻia. No ka mālama ʻana i loko o ke ʻano o ka ʻatikala, ʻo ke kumuhana o ke kūkākūkā o kēia lā he mau ʻāina homogeneous wale nō i kūkulu ʻia ma Erlang/Elixir. Hiki iā ʻoe ke hoʻokō i kahi hoʻolālā reactive me ka liʻiliʻi o ka hoʻoikaika. Akā i kēlā me kēia hihia, pono mākou i kahi papa memo.

Kumu manaʻo

Hoʻomaka ka hoʻolālā me ka wehewehe ʻana i nā pahuhopu a me nā kaohi. ʻAʻole ka pahuhopu nui i ka wahi o ka hoʻomohala ʻana no ka hoʻomohala ʻana. Pono mākou e kiʻi i kahi mea paʻa paʻa a hiki ke hoʻonui ʻia ma ke kumu e hiki ai iā mākou ke hana a, ʻo ka mea nui loa, e hoʻomohala i nā noi hou o nā pae like ʻole: e hoʻomaka ana mai nā noi kikowaena hoʻokahi e lawelawe ana i kahi anaina liʻiliʻi, hiki ke hoʻomohala ma hope i mau pūʻulu a hiki i 50 -60 nodes, pau me nā hui hui. No laila,ʻo ka pahuhopu nui ka hoʻonuiʻana i nā waiwai ma ka ho'ēmiʻana i ke kumukūʻai o ka hoʻomohalaʻana a me ke kuleana o ka pūnaewele hope loa.

E hōʻike mākou i nā koi nui 4 no ka ʻōnaehana hope:

  • Сpili i ka hanana.
    Mākaukau mau ka ʻōnaehana e hele i ke kahe o nā hanana a hana i nā hana e pono ai;
  • Мscalability.
    Hiki ke hoʻonui ʻia nā poloka pākahi ma ka ʻaoʻao a me ke ākea. Pono ka ʻōnaehana holoʻokoʻa e hiki i ka ulu ʻana i ka palena palena ʻole;
  • Оhoʻomanawanui hewa.
    Hiki i nā pae āpau a me nā lawelawe āpau ke hoʻōla hou mai nā hemahema;
  • Гmanawa pane paʻa.
    He mea waiwai ka manawa a ʻaʻole pono e kali lōʻihi nā mea hoʻohana.

E hoʻomanaʻo i ka moʻolelo kahiko e pili ana i "The little engine that could"? I mea e puka maikaʻi ai ka ʻōnaehana i hoʻolālā ʻia i ka pae prototype a holomua, pono ke kumu e hoʻokō i nā koi liʻiliʻi. SMOG.

Hoʻohui ʻia kahi helu hou i ka memo ma ke ʻano he mea hana a me ke kumu no nā lawelawe āpau: maʻalahi o ka hoʻohana ʻana no nā mea polokalamu.

Hana ʻia i ka hanana

No ka ulu ʻana o kahi noi mai kahi kikowaena hoʻokahi a i kahi pūʻulu, pono e kākoʻo kāna hoʻolālā i ka hoʻopili ʻana. Hoʻokō ke kumu hoʻohālike asynchronous i kēia koi. I loko o ia mea, mālama ka mea hoʻouna a me ka mea loaʻa i ka ukana ʻike o ka memo a mai hopohopo e pili ana i ka hoʻouna ʻana a me ke ala ʻana i loko o ka ʻōnaehana.

Scalability

ʻO ka scalability a me ka ʻōnaehana pono e pili ana kekahi i kekahi. Pono nā ʻāpana noi e hoʻohana i nā kumuwaiwai āpau i loaʻa. ʻO ka ʻoi aku ka maikaʻi o ka hiki ke hoʻohana i ka hiki a me ka ʻoi aku ka maikaʻi o kā mākou hana hana, ʻoi aku ka liʻiliʻi o ke kālā a mākou e hoʻolilo ai i nā mea hana.

I loko o ka mīkini hoʻokahi, hana ʻo Erlang i kahi ʻano hoʻokūkū kiʻekiʻe. Hiki ke hoʻonohonoho ʻia ke kaulike ma waena o ka concurrency a me ka parallelism ma ke koho ʻana i ka helu o nā pae ʻōnaehana hana i loaʻa i ka Erlang VM a me ka helu o nā mea hoʻonohonoho e hoʻohana i kēia mau kaula.
ʻAʻole kaʻana like nā kaʻina hana Erlang i ka mokuʻāina a hana i ke ʻano non-blocking. Hāʻawi kēia i ka latency haʻahaʻa haʻahaʻa a ʻoi aku ka kiʻekiʻe ma mua o nā noi kuʻuna blocking-based. ʻO ka mea hoʻonohonoho o Erlang e hōʻoia i ka hoʻokaʻawale kūpono o CPU a me IO, a ʻo ka nele o ka pale ʻana e hiki ai i ka noi ke pane ʻoiai i ka wā o nā haʻahaʻa kiʻekiʻe a i ʻole nā ​​​​haʻule.

Ma ka pae cluster, aia nō ka pilikia me ka hoʻolei ʻana. He mea nui ka hoʻouka ʻia ʻana o nā mīkini a pau i loko o ka pūpū a ʻaʻole i hoʻonui ʻia ka pūnaewele. E noʻonoʻo kākou i kahi kūlana: ʻāina kaʻa o nā mea hoʻohana ma nā mea kaulike e hiki mai ana (haproxy, nginx, etc.), hāʻawi lākou i nā noi hoʻoponopono e like me ka hiki ma waena o ka hoʻonohonoho o nā backends i loaʻa. I loko o ka ʻōnaehana noi, ʻo ka lawelawe e hoʻokō nei i ka interface i koi ʻia ʻo ia wale nō ka mile hope a pono e noi i kekahi mau lawelawe ʻē aʻe e pane i ka noi mua. Pono nā noi kūloko i ke ala ala a me ke kaulike.
No ka hoʻokele maikaʻi ʻana i nā kahe ʻikepili, pono e hāʻawi ka memo i nā mea hoʻomohala me kahi interface e hoʻokele ai i ka hoʻokele a me ka hoʻokau kaulike. Mahalo i kēia, hiki i nā mea hoʻomohala ke hoʻohana i nā ʻano microservice (aggregator, proxy, chain, branch, etc.), e hoʻoponopono i nā pilikia maʻamau a me nā mea i kū ʻole.

Mai kahi ʻoihana ʻoihana, ʻo ka scalability kekahi o nā mea hana hoʻokele pilikia. ʻO ka mea nui e hoʻokō i nā noi o nā mea kūʻai aku ma o ka hoʻohana maikaʻi ʻana i nā mea hana:

  • Ke piʻi ka mana o nā mea hana ma muli o ka holomua. ʻAʻole ia e hoʻopololei ma muli o ka lako polokalamu kūpono ʻole. ʻIke maikaʻi ʻo Erlang a hiki iā ia ke hoʻohana i nā cores CPU āpau a me ka hoʻomanaʻo i loaʻa;
  • I loko o nā ao ao, hiki iā mākou ke hoʻokele i ka nui o nā mea hana e pili ana i ka ukana o kēia manawa a i wānana ʻia a hōʻoia i ka SLA.

hoʻomanawanui hewa

E noʻonoʻo kākou i ʻelua axioms: "ʻAʻole ʻae ʻia nā hemahema" a "E mau ana nā hemahema." No kahi ʻoihana, ʻo ka hemahema o ka polokalamu ke ʻano o ka lilo o ke kālā, a ʻo ka mea ʻoi aku ka maikaʻi, nalowale ka inoa. ʻO ke kaulike ma waena o nā poho a me ke kumukūʻai o ka hoʻomohala ʻana i nā polokalamu hoʻomanawanui hewa, hiki ke ʻike pinepine ʻia kahi kuʻikahi.

I ka wā pōkole, ʻo kahi hoʻolālā e hoʻopili ai i ka hoʻomanawanui hewa e mālama i ke kālā ma ke kūʻai ʻana i nā ʻōnaehana clustering off-the-shelf. He pipiʻi lākou a loaʻa iā lākou nā pōpoki.
I ka wā lōʻihi, e uku pinepine ʻia kahi hale hana hoʻomanawanui hewa iā ia iho i nā manawa āpau o ka hoʻomohala ʻana.
ʻO ka hoʻouna ʻana i loko o ka waihona code e hiki ai iā ʻoe ke hana i nā kikoʻī i ka pilina o nā ʻāpana i loko o ka ʻōnaehana i ka pae hoʻomohala. Hoʻomaʻamaʻa kēia i ka hana o ka pane ʻana a me ka hoʻokele ʻana i nā hemahema, ʻoiai ʻo nā mea koʻikoʻi āpau e mālama i nā hemahema, a ʻike ka ʻōnaehana hopena pehea e hoʻi hou ai i ka maʻamau ma hope o ka hoʻolālā ʻana.

Ka pane ʻana

Ma waho o nā hemahema, pono e pane ka noi i nā noi a hālāwai me ka SLA. ʻO ka ʻoiaʻiʻo ʻaʻole makemake ka poʻe e kali, no laila pono nā ʻoihana e hoʻololi e like me ia. Manaʻo ʻia e ʻoi aku ka nui o nā noi e pane nui.
Hoʻohana ʻia nā noi pane ma kahi kokoke i ka manawa maoli. Hana ʻo Erlang VM ma ke ʻano haʻahaʻa manawa maoli. No kekahi mau wahi, e like me ke kālepa kūʻai, ka lāʻau lapaʻau, a me ka hoʻomalu ʻana i nā lako hana, he mea nui ke ʻano paʻakikī maoli.
Hoʻonui nā ʻōnaehana pane i ka UX a pōmaikaʻi i ka ʻoihana.

Hōʻuluʻulu manaʻo mua

I ka hoʻolālā ʻana i kēia ʻatikala, makemake wau e kaʻana like i koʻu ʻike no ka hoʻokumu ʻana i kahi mea hoʻolaha leka uila a kūkulu i nā ʻōnaehana paʻakikī e pili ana iā ia. Akā ʻo ka ʻāpana theoretical a me ka hoʻoikaika ʻana i lilo i mea nui loa.
Ma ka ʻāpana ʻelua o ka ʻatikala, e kamaʻilio wau e pili ana i nā nuances o ka hoʻokō ʻana i nā helu hoʻololi, nā ʻano memo a me kā lākou noi.
Ma ka ʻaoʻao ʻekolu e noʻonoʻo mākou i nā pilikia maʻamau o ka hoʻonohonoho ʻana i nā lawelawe, ke alahele a me ke kaulike. E kamaʻilio e pili ana i ka ʻaoʻao kūpono o ka scalability a me ka hoʻomanawanui hewa o nā ʻōnaehana.

Ka hope o ka hapa mua.

Photo @lucabravo.

Source: www.habr.com

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