ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonoho

ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonoho

Aku; DR: ʻO ka wehewehe ʻana i ka hoʻolālā ʻana o ka mea kūʻai aku o kā mākou ʻōnaehana hoʻonohonoho hoʻonohonoho pūnaewele kūloko, QControl. Hoʻokumu ʻia ia ma kahi protocol transport ʻelua-layer e hana pū ana me nā memo i hoʻopiha ʻia me ka gzip me ka ʻole o ka decompression ma waena o nā hopena. Loaʻa i nā mea ala ala a me nā hopena hope nā hoʻonohonoho hoʻonohonoho, a ʻo ka protocol ponoʻī e ʻae i ka hoʻokomo ʻana i nā relay waena waena. Kūkulu ʻia ka ʻōnaehana ma ke kumu kākoʻo ʻokoʻa ("recent-stable", wehewehe ʻia ma lalo) a hoʻohana i ka ʻōlelo hulina JMESpath me ka ʻenekini hoʻohālikelike Jinja e hana i nā faila hoʻonohonoho.

Hoʻohana ʻo Qrator Labs i kahi pūnaewele hōʻemi hoʻouka kaua honua. Hoʻohana ʻia kā mākou pūnaewele ma ke kumu anycast, a hoʻolaha ʻia nā subnets ma o BGP. Ma ke ʻano he BGP anycast pūnaewele i loaʻa i nā wahi he nui o ka Honua, hiki iā mākou ke hana a kānana i nā kaʻa hewa ʻole kokoke i ke kumu o ka Pūnaewele - Tier-1 operators.

Ma ka ʻaoʻao ʻē aʻe, ʻaʻole maʻalahi ka lilo ʻana i ka pūnaewele puni honua. He mea koʻikoʻi ke kamaʻilio ʻana ma waena o nā wahi o ka ʻoihana no ka mea lawelawe palekana i ka hoʻonohonoho ʻana o nā nodes pūnaewele āpau, e hoʻonui iā lākou i ka manawa kūpono. No laila, i mea e hāʻawi ai i ka pae kiʻekiʻe loa o ka lawelawe koʻikoʻi i ka mea kūʻai aku, pono mākou e ʻimi i kahi ala e hoʻonohonoho pono ai i ka ʻikepili hoʻonohonoho ma nā ʻāina.

I kinohi ka Logou. Ua lilo koke ia i protocol kamaʻilio e pono ai kahi mea hou.


ʻO ka pōhaku kihi o ka noho ʻana o QControl, a ma ka manawa like ke kumu nui o ka hoʻolilo ʻana i ka nui o ka manawa a me nā kumuwaiwai no ke kūkulu ʻana i kēia ʻano protocol, ʻo ia ka pono e loaʻa i kahi kumu mana o ka hoʻonohonoho ʻana a, i ka hopena, e hoʻonohonoho i ko mākou mau wahi o ke alo. me ia. ʻO ka waihona ponoʻī kekahi o nā koi i ka wā o ka hoʻomohala ʻana o QControl. Eia hou, pono mākou i ka hoʻohui ʻana me nā lawelawe i loaʻa a i hoʻolālā ʻia ma nā wahi o ke alo (POP), nā ʻano akamai (a maʻamau) o ka hōʻoia ʻikepili, a me ka mana komo. Ma waho aʻe o kēia, makemake mākou e hoʻomalu i kēlā ʻōnaehana me ka hoʻohana ʻana i nā kauoha ma mua o ka hoʻololi ʻana i nā faila. Ma mua o QControl, ua hoʻouna ʻia ka ʻikepili i nā wahi o ke alo me ka lima. Inā ʻaʻole i loaʻa kekahi o nā wahi o ke alo a poina iā mākou e hoʻohou iā ia ma hope, e pau ka hoʻonohonoho ʻana i waho o ka sync a pono mākou e hoʻopau i ka manawa e hoʻihoʻi a holo.

ʻO ka hopena, ua loaʻa iā mākou ka papahana aʻe:
ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonoho
ʻO ke kikowaena hoʻonohonoho ke kuleana no ka hōʻoia ʻana a me ka mālama ʻana i ka ʻikepili; he nui nā wahi hopena o ke alalai e loaʻa a hoʻolaha i nā mea hoʻonohonoho hoʻonohonoho mai nā mea kūʻai aku a me nā hui kākoʻo i ke kikowaena, a mai ke kikowaena a i nā wahi o ke alo.

Ua ʻokoʻa ka maikaʻi o ka pili pūnaewele ma ka honua - e hōʻike i kēia ʻano, e nānā kākou i kahi MTR maʻalahi mai Prague, Czech Republic a Singapore a me Hong Kong.

ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonoho
MTR mai Prague a Singapore

ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonoho
Pela no Hong Kong

ʻO ka latency kiʻekiʻe ke ʻano o ka wikiwiki haʻahaʻa. Eia kekahi, aia ka poho packet. ʻAʻole hiki i ka laulā channel ke uku i kēia pilikia, pono e noʻonoʻo mau i ka wā e kūkulu ai i nā ʻōnaehana decentralized.

ʻO ka hoʻonohonoho piha o kahi kikoʻī he nui o ka ʻikepili e pono e hoʻouna ʻia i nā mea loaʻa he nui ma luna o nā pilina hilinaʻi ʻole. ʻO ka mea pōmaikaʻi, ʻoiai ke hoʻololi mau nei ka hoʻonohonoho hoʻonohonoho ʻana, hiki mai ia i nā hoʻonui liʻiliʻi.

Hoʻolālā kūpaʻa hou

Hiki iā mākou ke ʻōlelo ʻo ke kūkulu ʻana i kahi pūnaewele puʻupuʻu e pili ana i ke kumu o ka hoʻonui hou ʻana he hopena kūpono loa. Akā he nui nā pilikia me nā diffs. Pono mākou e mālama i nā ʻokoʻa a pau ma waena o nā helu kuhikuhi, a hiki iā mākou ke hoʻouna hou iā lākou inā ʻaʻole i hala kekahi o ka ʻikepili. Pono kēlā me kēia huakaʻi e hoʻopili iā lākou ma kahi kaʻina kikoʻī. ʻO ka maʻamau, i ka hihia o kekahi mau wahi, hiki ke lōʻihi ka hana o ia hana. Pono e hiki i ka mea hoʻokipa ke noi i nā ʻāpana i nalowale a, ʻoiaʻiʻo, pono e pane pololei ka ʻāpana kikowaena i kēlā noi, e hoʻouna wale ana i ka ʻikepili i nalowale.

ʻO ka hopena, ua hiki mai mākou i kahi hopena hoihoi - hoʻokahi wale nō kā mākou papa kuhikuhi, paʻa, e kapa mākou he paʻa, a hoʻokahi wale nō ʻokoʻa no ia - hou. Hoʻokumu ʻia kēlā me kēia mea hou i ka hale paʻa hope loa a lawa ia e kūkulu hou i ka ʻikepili hoʻonohonoho. I ka hiki ʻana o ka mea hou i kona wahi e hele ai, ʻaʻole pono ka mea kahiko.

ʻO nā mea a pau i koe, ʻo ka hoʻouna ʻana i kahi hoʻonohonoho paʻa hou i kēlā me kēia manawa, no ka laʻana, no ka mea, ua nui loa. ʻO ka mea nui ma ʻaneʻi, ʻo ka hoʻouna ʻana i kēia mau mea hou i ke ʻano hoʻolaha/multicast mode, me ka hopohopo ʻole e pili ana i ka poʻe loaʻa a me ko lākou hiki ke ʻohi i nā ʻāpana ʻikepili. Ke maopopo iā mākou ua loaʻa i kēlā me kēia kanaka ka hale kūʻai kūpono, hoʻouna wale mākou i nā mea hou. He mea pono anei e hoomaopopo i keia hana? Nā hana. Hoʻopili ʻia ʻo Stable ma ka kikowaena hoʻonohonoho a me nā mea loaʻa, hana hou ʻia e like me ka mea e pono ai.

Hoʻolālā o ka lawe ʻana i ʻelua pae

No ke aha mākou i kūkulu ai i kā mākou halihali ma nā pae ʻelua? He mea maʻalahi ka pane - makemake mākou e hoʻokaʻawale i ke alahele mai ka loiloi kiʻekiʻe, e lawe ana i ka hoʻoikaika ʻana mai ke kumu hoʻohālike OSI me kāna mau halihali a me nā papa noi. Ua hoʻohana mākou iā Thrift no ke kuleana o ka protocol transport, a me ka format serialization msgpack no ke ʻano kiʻekiʻe o nā memo mana. ʻO ia ke kumu e nānā ʻole ai ke alalai (e hana ana i ka multicast/broadcast/relay) i loko o ka msgpack, ʻaʻole wehe a hoʻopaʻa i nā mea i hope, a hoʻouna wale i ka ʻikepili.

ʻO Thrift (mai ka ʻōlelo Pelekania - "thrift", haʻi ʻia [θrift]) he ʻōlelo wehewehe wehewehe i hoʻohana ʻia e wehewehe a hana i nā lawelawe no nā ʻōlelo papahana like ʻole. He papa hana no nā kelepona kaʻina hana mamao (RPC). Hoʻohui i kahi paipu lako polokalamu me kahi ʻenekini hana code e hoʻomohala i nā lawelawe e hana ʻoi aku ka maikaʻi a i ʻole ka maʻalahi ma waena o nā ʻōlelo.

Ua koho mākou i ka hana ʻo Thrift ma muli o ka RPC a me ke kākoʻo no nā ʻōlelo he nui. E like me ka mea maʻamau, ʻo nā ʻāpana maʻalahi ka mea kūʻai aku a me ke kikowaena. Eia naʻe, ua lilo ka mea alalai i mea paʻakikī e paʻi, ma muli o ka nele o kahi hoʻonā i mākaukau i ka wā o kā mākou kūkulu ʻana.

ʻO Qrator kānana ʻōnaehana hoʻonohonoho hoʻonohonoho hoʻonohonohoAia kekahi mau koho ʻē aʻe, e like me protobuf / gRPC, akā naʻe, i ka wā i hoʻomaka ai kā mākou papahana, he mea hou loa ka gRPC a ʻaʻole mākou i ʻaʻa e lawe iā ia ma luna o ka moku.

ʻOiaʻiʻo, hiki iā mākou (a ʻoiaʻiʻo paha) ke kūkulu i kā mākou kaʻa ponoʻī. ʻOi aku ka maʻalahi o ka hana ʻana i kahi protocol no ka mea e pono ai mākou no ka mea ʻoi aku ka maʻalahi o ka hoʻokō ʻana o ka mea kūʻai aku-server i ka hoʻohālikelike ʻana i ke kūkulu ʻana i kahi alalai ma Thrift. Hoʻokahi ʻaoʻao a i ʻole, aia ka manaʻo kuʻuna i nā protocols kākau ponoʻī a me ka hoʻokō ʻana i nā hale waihona puke kaulana (no ke kumu maikaʻi); ʻo ia hoʻi, i ka wā o nā kūkākūkā ʻana e piʻi mau ana ka nīnau: "Pehea mākou e lawe ai i kēia i nā ʻōlelo ʻē aʻe?" No laila ua kiola koke mākou i ka manaʻo o ke kaʻa.

Ua like ka Msgpack me JSON, akā ʻoi aku ka wikiwiki a me ka liʻiliʻi. He ʻano helu serialization data binary e hiki ai ke hoʻololi i ka ʻikepili ma waena o nā ʻōlelo he nui.

Ma ka pae mua loaʻa iā mākou ʻo Thrift me ka ʻike liʻiliʻi e pono ai no ka mea alalai e hoʻouna i ka leka. Ma ka pae ʻelua, aia nā hale msgpack i hoʻopaʻa ʻia.

Ua koho mākou i ka msgpack no ka mea ʻoi aku ka wikiwiki a ʻoi aku ka paʻakikī i hoʻohālikelike ʻia me JSON. Akā ʻo ka mea nui, kākoʻo ia i nā ʻano ʻikepili maʻamau, e ʻae iā mākou e hoʻohana i nā hiʻohiʻona maikaʻi e like me ka hele ʻana i nā binaries raw a i ʻole nā ​​​​mea kūikawā e hōʻike ana i ka nele o ka ʻikepili, he mea nui ia no kā mākou papahana "hou-stable".

JMESPath
He ʻōlelo nīnau JSON ʻo JMESPath.
ʻO kēia ke ʻano o ka wehewehe ʻana i loaʻa iā mākou mai ka palapala JMESPath mana, akā ʻoiaʻiʻo, ʻoi aku ia ma mua o kēlā. ʻAe ʻo JMESPath iā ʻoe e ʻimi a kānana i nā kumulāʻau i loko o kahi ʻano kumulāʻau ʻokoʻa, a hoʻopili i nā loli i ka ʻikepili ma ka lele. Hiki iā ʻoe ke hoʻohui i nā kānana kūikawā a me nā kaʻina hana hoʻololi ʻikepili. ʻOiai, ʻoiaʻiʻo, pono ka lolo e hoʻomaopopo.

Jinja
No kekahi mau mea kūʻai, pono mākou e hoʻololi i ka hoʻonohonoho i kahi faila - no laila hoʻohana mākou i kahi mīkini template a ʻo Jinja ke koho maopopo. Me kāna kōkua, hoʻopuka mākou i kahi faila hoʻonohonoho mai ka template a me ka ʻikepili i loaʻa ma kahi e hele ai.

No ka hoʻokumu ʻana i kahi faila hoʻonohonoho, pono mākou i kahi noi JMESPath, kahi laʻana no ka wahi o ka faila ma ka FS, a me kahi hiʻohiʻona no ka config ponoʻī. He manaʻo maikaʻi nō hoʻi i kēia manawa e wehewehe i nā ʻae faila. Ua hoʻohui maikaʻi ʻia kēia mau mea a pau i hoʻokahi faila - ma mua o ka hoʻomaka ʻana o ka hoʻonohonoho hoʻonohonoho, kau mākou i kahi poʻomanaʻo ma ka format YAML e wehewehe ana i ke koena.

Eia kekahi laʻana:

---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft] ...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}

No ka hana ʻana i kahi faila hoʻonohonoho no kahi lawelawe hou, hoʻohui mākou i kahi faila maʻamau hou. ʻAʻole pono e hoʻololi i ke code kumu a i ʻole ka lako polokalamu ma nā wahi o ke alo.

He aha ka mea i hoʻololi ʻia mai ka hele ʻana o QControl? ʻO ka mea mua a me ka mea nui loa, ʻo ia ka hāʻawi ʻana i nā hoʻoponopono hoʻonohonoho i nā nodes a pau o ka pūnaewele. ʻO ka lua ka loaʻa ʻana o kahi mea hana ikaika no ka nānā ʻana i ka hoʻonohonoho ʻana a me ka hoʻololi ʻana iā ia e kā mākou hui kākoʻo, a me nā mea kūʻai aku o ka lawelawe.

Ua hiki iā mākou ke hana i kēia me ka hoʻohana ʻana i ka hoʻolālā hou-stable update e hoʻomaʻamaʻa i ka kamaʻilio ma waena o ka kikowaena hoʻonohonoho a me nā mea hoʻonohonoho hoʻonohonoho. Ke hoʻohana nei i kahi protocol ʻelua-layer e kākoʻo i kahi ala kūʻokoʻa ʻokoʻa o ka hoʻokele ʻikepili. Ua hoʻohui maikaʻi ʻia kahi ʻenekini hana hoʻonohonoho hoʻonohonoho hoʻonohonoho Jinja i loko o kahi pūnaewele kānana puʻupuʻu. Kākoʻo kēia ʻōnaehana i kahi ākea o nā ʻano hoʻonohonoho hoʻonohonoho no kā mākou peripherals puʻunaue a heterogeneous.

Mahalo no kou kōkua ʻana i ke kākau ʻana i ka mea. VolanDamrod, ʻoluʻolu, NoN.

Mana Pelekania pou.

Source: www.habr.com

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