Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතිය

Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතිය

TL; ඩී: අපගේ අභ්‍යන්තර ජාල වින්‍යාස කළමනාකරණ පද්ධතිය, QControl හි සේවාදායක-සේවාදායක ගෘහ නිර්මාණ ශිල්පය පිළිබඳ විස්තරය. එය අන්ත ලක්ෂ්‍ය අතර විසංයෝජනයකින් තොරව gzip ඇසුරුම් කළ පණිවිඩ සමඟ ක්‍රියා කරන ද්වි-ස්ථර ප්‍රවාහන ප්‍රොටෝකෝලයක් මත පදනම් වේ. බෙදා හරින ලද රවුටර සහ අන්ත ලක්ෂ්‍ය වින්‍යාස යාවත්කාලීන කිරීම් ලබන අතර, ප්‍රොටෝකෝලය විසින්ම ස්ථානගත කරන ලද අතරමැදි රිලේ ස්ථාපනය කිරීමට ඉඩ ලබා දේ. පද්ධතිය මූලධර්මය මත ගොඩනගා ඇත අවකල උපස්ථය (“මෑත-ස්ථායී”, පහත විස්තර කර ඇත) සහ වින්‍යාස ගොනු විදැහුම් කිරීම සඳහා JMESpath විමසුම් භාෂාව සහ Jinja සැකිලි එන්ජිම භාවිතා කරයි.

Qrator Labs ගෝලීය වශයෙන් බෙදා හරින ලද ප්‍රහාර අවම කිරීමේ ජාලයක් ක්‍රියාත්මක කරයි. අපගේ ජාලය ඕනෑම විකාශන මූලධර්මය මත ක්‍රියාත්මක වන අතර උපජාල BGP හරහා ප්‍රචාරණය කෙරේ. පෘථිවියේ ප්‍රදේශ කිහිපයක භෞතිකව පිහිටා ඇති BGP ඕනෑම විකාශන ජාලයක් වන බැවින්, අපට අන්තර්ජාලයේ හරයට සමීප නීති විරෝධී ගමනාගමනය සැකසීමට සහ පෙරීමට හැකිය - Tier-1 ක්‍රියාකරුවන්.

අනෙක් අතට, භූගෝලීය වශයෙන් බෙදා හරින ලද ජාලයක් වීම පහසු නැත. ආරක්ෂක සේවා සපයන්නාට සියලුම ජාල නෝඩ් වල ස්ථාවර වින්‍යාසයක් තිබීම, ඒවා නියමිත වේලාවට යාවත්කාලීන කිරීම සඳහා පවතින ජාල ස්ථාන අතර සන්නිවේදනය ඉතා වැදගත් වේ. එබැවින්, පාරිභෝගිකයාට හැකි ඉහළම මට්ටමේ මූලික සේවාවක් සැපයීම සඳහා, අපට මහාද්වීප හරහා වින්‍යාස දත්ත විශ්වාසදායක ලෙස සමමුහුර්ත කිරීමට ක්‍රමයක් සොයා ගැනීමට අවශ්‍ය විය.

ආරම්භයේදී වචනය විය. එය ඉක්මනින් යාවත්කාලීනයක් අවශ්‍ය සන්නිවේදන ප්‍රොටෝකෝලයක් බවට පත් විය.


QControl හි පැවැත්මේ මූලික ගල වන අතර, ඒ සමඟම මෙවැනි ප්‍රොටෝකෝලයක් ගොඩනැගීම සඳහා සැලකිය යුතු කාලයක් හා සම්පත් වැය කිරීමට ප්‍රධාන හේතුව වන්නේ, තනි බලයලත් වින්‍යාස ප්‍රභවයක් ලබා ගැනීමේ අවශ්‍යතාවය සහ අවසානයේ අපගේ පැමිණීමේ ස්ථාන සමමුහුර්ත කිරීමයි. එය සමඟ. QControl සංවර්ධනය කිරීමේදී ගබඩාව අවශ්‍යතා කිහිපයෙන් එකක් පමණි. ඊට අමතරව, අපට සිටින ස්ථාන (POP), ස්මාර්ට් (සහ අභිරුචිකරණය කළ හැකි) දත්ත වලංගු කිරීමේ ක්‍රම මෙන්ම ප්‍රවේශ පාලන ක්‍රමවල පවතින සහ සැලසුම් කළ සේවාවන් සමඟ ඒකාබද්ධ කිරීම් අවශ්‍ය විය. මීට අමතරව, අපට අවශ්‍ය වූයේ ලිපිගොනු වෙනස් කිරීමට වඩා විධාන භාවිතයෙන් එවැනි පද්ධතියක් පාලනය කිරීමට ය. QControl ට පෙර, දත්ත පවතින ස්ථාන වෙත පාහේ අතින් යවන ලදී. පෙනී සිටීමේ එක් කරුණක් නොමැති නම් සහ එය පසුව යාවත්කාලීන කිරීමට අපට අමතක වූවා නම්, වින්‍යාසය සමමුහුර්ත වීමෙන් අවසන් වන අතර එය නැවත ක්‍රියාත්මක කිරීමට සහ ක්‍රියාත්මක කිරීමට අපට කාලය නාස්ති කිරීමට සිදුවනු ඇත.

එහි ප්රතිඵලයක් වශයෙන්, අපි පහත යෝජනා ක්රමය ඉදිරිපත් කළෙමු:
Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතිය
වින්‍යාස සේවාදායකය දත්ත වලංගු කිරීම සහ ගබඩා කිරීම සඳහා වගකිව යුතුය; රවුටරයට සේවාදායකයින් සහ සහායක කණ්ඩායම් වෙතින් සේවාදායකයට සහ සේවාදායකයේ සිට සිටින ස්ථාන දක්වා වින්‍යාස යාවත්කාලීන කිරීම් ලබා ගන්නා සහ විකාශනය කරන අන්ත ලක්ෂ්‍ය කිහිපයක් ඇත.

අන්තර්ජාල සම්බන්ධතා ගුණාත්මකභාවය තවමත් ලොව පුරා පුළුල් ලෙස වෙනස් වේ - මෙම කරුණ නිදර්ශනය කිරීම සඳහා, ප්රාග්, චෙක් ජනරජයේ සිට සිංගප්පූරුව සහ හොංකොං දක්වා සරල MTR දෙස බලමු.

Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතිය
ප්රාග් සිට සිංගප්පූරුව දක්වා MTR

Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතිය
හොංකොං වලටත් ඒකම තමයි

ඉහළ ප්‍රමාදය යනු අඩු වේගයයි. ඊට අමතරව, පැකට් පාඩුව ඇත. නාලිකා පළල මෙම ගැටළුව සඳහා වන්දි ලබා නොදේ, විමධ්යගත පද්ධති තැනීමේදී සෑම විටම සැලකිල්ලට ගත යුතුය.

පවතින ලක්ෂ්‍යයක සම්පූර්ණ වින්‍යාසය යනු විශ්වාස කළ නොහැකි සම්බන්ධතා හරහා බොහෝ ලබන්නන් වෙත යැවිය යුතු සැලකිය යුතු දත්ත ප්‍රමාණයකි. වාසනාවකට මෙන්, වින්යාසය නිරන්තරයෙන් වෙනස් වුවද, එය කුඩා වර්ධක වලින් සිදු වේ.

මෑත ස්ථාවර නිර්මාණය

වර්ධක යාවත්කාලීන කිරීමේ මූලධර්මය මත බෙදා හරින ලද ජාලයක් ගොඩනැගීම තරමක් පැහැදිලි විසඳුමක් බව අපට පැවසිය හැකිය. නමුත් වෙනස්කම් සමඟ ගැටලු රාශියක් ඇත. අපට යොමු ලක්ෂ්‍ය අතර ඇති සියලුම වෙනස්කම් සුරැකීමට අවශ්‍ය වන අතර, යම් අයෙකුට දත්තවල කොටසක් මග හැරී ගියහොත් ඒවා නැවත යැවීමටද හැකි වේ. සෑම ගමනාන්තයක්ම ඒවා දැඩි ලෙස නිශ්චිත අනුපිළිවෙලකට යෙදිය යුතුය. සාමාන්යයෙන්, ගමනාන්ත කිහිපයක දී, එවැනි මෙහෙයුමක් දිගු කාලයක් ගත විය හැකිය. ග්‍රාහකයාට අතුරුදහන් වූ කොටස් ඉල්ලා සිටීමට හැකි විය යුතු අතර, ඇත්ත වශයෙන්ම, මධ්‍යම කොටස එවැනි ඉල්ලීමකට නිවැරදිව ප්‍රතිචාර දැක්විය යුතුය, නැතිවූ දත්ත පමණක් යැවීම.

ප්රතිඵලයක් වශයෙන්, අපි තරමක් රසවත් විසඳුමකට පැමිණියෙමු - අපට ඇත්තේ එක් යොමු ස්ථරයක් පමණි, ස්ථාවර, අපි එය ස්ථාවර ලෙස හඳුන්වමු, සහ ඒ සඳහා එකම වෙනස - මෑත. සෑම මෑතකම අවසන් වරට උත්පාදනය කරන ලද ස්ථාවරය මත පදනම් වන අතර වින්‍යාස දත්ත නැවත ගොඩනැගීමට ප්‍රමාණවත් වේ. නැවුම් මෑත කාලීන ගමනාන්තය කරා ළඟා වූ වහාම පැරණි එක තවදුරටත් අවශ්ය නොවේ.

ඉතිරිව ඇත්තේ කලින් කලට නැවුම් ස්ථාවර වින්‍යාසයක් යැවීමයි, උදාහරණයක් ලෙස මෑත කාලීනව විශාල වී ඇති නිසා. මෙහිදී වැදගත් වන්නේ, අපි මෙම සියලු යාවත්කාලීනයන් විකාශන/බහු විකාශන ආකාරයෙන් යැවීම, තනි ලබන්නන් සහ ඔවුන්ගේ දත්ත කැබලි එකට එකතු කිරීමේ හැකියාව ගැන කරදර නොවීමයි. සෑම කෙනෙකුටම නිවැරදි ස්ථාවර බව සහතික වූ පසු, අපි යවන්නේ අලුත් මෑත ඒවා පමණි. මෙය ක්‍රියාත්මක වන බව පැහැදිලි කිරීම වටී ද? කටයුතු. ස්ථායීතාවය වින්‍යාස සේවාදායකයේ සහ ලබන්නන් මත හැඹිලිගත කර ඇත, අවශ්‍ය පරිදි මෑතදී නිර්මාණය කර ඇත.

ද්වි-මට්ටමේ ප්රවාහනයේ ගෘහ නිර්මාණ ශිල්පය

ඇයි අපි අපේ ප්‍රවාහනය මට්ටම් දෙකකින් හැදුවේ? පිළිතුර ඉතා සරලයි - අපට අවශ්‍ය වූයේ OSI ආකෘතිය එහි ප්‍රවාහන සහ යෙදුම් ස්ථරවලින් ආශ්වාදයක් ලබා ගනිමින් ඉහළ මට්ටමේ තර්කනයකින් මාර්ගගත කිරීම විසංයෝජනය කිරීමටයි. අපි ප්‍රවාහන ප්‍රොටෝකෝලයේ භූමිකාව සඳහා සකසුරුවම් භාවිතා කළෙමු, සහ පාලන පණිවිඩවල ඉහළ මට්ටමේ ආකෘතිය සඳහා msgpack අනුක්‍රමික ආකෘතිය භාවිතා කළෙමු. රවුටරය (මල්ටිකාස්ට්/බ්‍රෝඩ්කාස්ට්/රිලේ ක්‍රියාත්මක කිරීම) msgpack එක ඇතුලට නොබලන්නේද, අන්තර්ගතය නැවත අසුරන්නේ හෝ ඇසුරුම් නොකරයිද, දත්ත පමණක් යොමු කරන්නේද මේ නිසාය.

සකසුරුවම (ඉංග්‍රීසියෙන් - “සකසුරුවම”, උච්චාරණය [θrift]) යනු විවිධ ක්‍රමලේඛන භාෂා සඳහා සේවා නිර්වචනය කිරීමට සහ නිර්මාණය කිරීමට භාවිතා කරන අතුරු මුහුණත් විස්තර භාෂාවකි. එය දුරස්ථ ක්‍රියා පටිපාටි ඇමතුම් (RPC) සඳහා රාමුවකි. භාෂා අතර වැඩි හෝ අඩු කාර්යක්ෂමව සහ පහසුවෙන් වැඩ කරන සේවා සංවර්ධනය කිරීම සඳහා කේත උත්පාදන එන්ජිමක් සමඟ මෘදුකාංග නල මාර්ගයක් ඒකාබද්ධ කරයි.

අපි සකසුරුවම් රාමුව තෝරා ගත්තේ RPC සහ බොහෝ භාෂා සඳහා සහය නිසාය. සුපුරුදු පරිදි, පහසු කොටස් වූයේ සේවාදායකයා සහ සේවාදායකයයි. කෙසේ වෙතත්, රවුටරය ඉරිතැලීමට දැඩි ගෙඩියක් බවට පත් විය, අර්ධ වශයෙන් අපගේ සංවර්ධනය අතරතුර සූදානම් කළ විසඳුමක් නොමැතිකම හේතුවෙන්.

Qrator පෙරහන ජාල වින්‍යාස කළමනාකරණ පද්ධතියprotobuf / gRPC වැනි වෙනත් විකල්ප තිබේ, කෙසේ වෙතත්, අපි අපගේ ව්‍යාපෘතිය ආරම්භ කරන විට, gRPC තරමක් අලුත් වූ අතර අපි එය ගොඩට ගැනීමට එඩිතර වූයේ නැත.

ඇත්ත වශයෙන්ම, අපට අපේම බයිසිකලයක් සෑදිය හැකිය (සහ ඇත්ත වශයෙන්ම තිබිය යුතුය). සකසුරුවම් මත රවුටරයක් ​​තැනීම හා සසඳන විට සේවාලාභියා-සේවාදායක ගෘහ නිර්මාණ ශිල්පය ක්‍රියාත්මක කිරීම සාපේක්ෂව සරල බැවින් අපට අවශ්‍ය දේ සඳහා ප්‍රොටෝකෝලයක් නිර්මාණය කිරීම පහසු වනු ඇත. එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින්, ස්වයං-ලිඛිත ප්‍රොටෝකෝල සහ ජනප්‍රිය පුස්තකාල ක්‍රියාත්මක කිරීම කෙරෙහි සාම්ප්‍රදායික නැඹුරුවක් ඇත (හොඳ හේතුවක් ඇතුව); ඊට අමතරව, සාකච්ඡා අතරතුර සෑම විටම ප්‍රශ්නය පැන නගී: “අපි මෙය වෙනත් භාෂාවලට ගෙනයන්නේ කෙසේද?” ඒ නිසා අපි වහාම බයිසිකලයක් පිළිබඳ අදහස ඉවතට විසි කළා.

Msgpack JSON හා සමාන නමුත් වේගවත් හා කුඩා වේ. එය බහු භාෂා අතර දත්ත හුවමාරු කිරීමට ඉඩ සලසන ද්විමය දත්ත අනුක්‍රමික ආකෘතියකි.

පළමු මට්ටමේදී අපි රවුටරයට පණිවිඩය යැවීමට අවශ්‍ය අවම තොරතුරු සහිත සකසුරුවම් ඇත. දෙවන මට්ටමේ ඇසුරුම් කළ msgpack ව්‍යුහයන් ඇත.

අපි msgpack තෝරා ගත්තේ එය JSON හා සසඳන විට එය වේගවත් සහ වඩා සංයුක්ත බැවිනි. නමුත් වඩා වැදගත් දෙය නම්, එය අභිරුචි දත්ත වර්ග වලට සහය වන අතර, අපගේ "මෑත-ස්ථායී" යෝජනා ක්‍රමයට වැදගත් වූ, දත්ත නොමැති බව පෙන්වන අමු ද්වීන හෝ විශේෂ වස්තු පසු කිරීම වැනි සිසිල් විශේෂාංග භාවිතා කිරීමට අපට ඉඩ සලසයි.

JMESPath
JMESPath යනු JSON විමසුම් භාෂාවකි.
නිල JMESPath ලේඛනයෙන් අපට ලැබෙන විස්තරය හරියටම මෙයයි, නමුත් ඇත්ත වශයෙන්ම, එය ඊට වඩා බොහෝ දේ කරයි. JMESPath ඔබට අත්තනෝමතික ගස් ව්‍යුහයක් තුළ උප ගස් සෙවීමට සහ පෙරීමට සහ පියාසර කරන විට දත්තවලට වෙනස්කම් යෙදීමට ඉඩ සලසයි. විශේෂ පෙරහන් සහ දත්ත පරිවර්තන ක්‍රියා පටිපාටි එකතු කිරීමට ද එය ඔබට ඉඩ සලසයි. ඇත්ත වශයෙන්ම, එය තේරුම් ගැනීමට මොළයේ උත්සාහයක් අවශ්ය වුවද.

ජිංජා
සමහර පාරිභෝගිකයින් සඳහා, අපි වින්‍යාසය ගොනුවක් බවට පත් කළ යුතුය - එබැවින් අපි අච්චු එන්ජිමක් භාවිතා කරන අතර ජින්ජා පැහැදිලි තේරීම වේ. එහි ආධාරයෙන්, අපි ගමනාන්තයේ ලැබුණු සැකිල්ල සහ දත්ත වලින් වින්‍යාස ගොනුවක් ජනනය කරමු.

වින්‍යාස ගොනුවක් උත්පාදනය කිරීමට, අපට JMESPath ඉල්ලීමක්, FS හි ගොනු පිහිටීම සඳහා අච්චුවක් සහ වින්‍යාසය සඳහාම අච්චුවක් අවශ්‍ය වේ. ගොනු අවසරයන් පැහැදිලි කිරීම මෙම අදියරේදී හොඳ අදහසකි. මේ සියල්ල එක් ගොනුවක් තුළ සාර්ථකව ඒකාබද්ධ කර ඇත - වින්‍යාස අච්චුව ආරම්භ කිරීමට පෙර, අපි ඉතිරිය විස්තර කරන YAML ආකෘතියෙන් ශීර්ෂයක් තැබුවෙමු.

උදාහරණ වශයෙන්:

---
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) }}

නව සේවාවක් සඳහා වින්‍යාස ගොනුවක් සෑදීම සඳහා, අපි නව සැකිලි ගොනුවක් පමණක් එක් කරන්නෙමු. පැමිණ සිටින ස්ථාන පිළිබඳ මූලාශ්‍ර කේතයට හෝ මෘදුකාංගයට කිසිදු වෙනසක් අවශ්‍ය නොවේ.

QControl සජීවී වූ දා සිට වෙනස් වී ඇත්තේ කුමක්ද? පළමු හා වඩාත්ම වැදගත් දෙය වන්නේ ජාලයේ සියලුම නෝඩ් වෙත වින්‍යාස යාවත්කාලීනයන් ස්ථාවර සහ විශ්වාසදායක ලෙස බෙදා හැරීමයි. දෙවැන්න අපගේ සහායක කණ්ඩායම විසින් මෙන්ම සේවා පාරිභෝගිකයන් විසින් වින්‍යාසය පරීක්ෂා කිරීම සහ එහි වෙනස්කම් සිදු කිරීම සඳහා ප්‍රබල මෙවලමක් ලබා ගැනීමයි.

වින්‍යාස සේවාදායකය සහ වින්‍යාස ලබන්නන් අතර සන්නිවේදනය සරල කිරීම සඳහා මෑත කාලීන-ස්ථායී යාවත්කාලීන ක්‍රමය භාවිතයෙන් අපට මේ සියල්ල කිරීමට හැකි විය. දත්ත මාර්ගගත කිරීමේ අන්තර්ගත-ස්වාධීන ක්‍රමයක් සඳහා සහය දැක්වීම සඳහා ද්වි-ස්ථර ප්‍රොටෝකෝලයක් භාවිතා කිරීම. ජිංජා මත පදනම් වූ වින්‍යාස උත්පාදන එන්ජිමක් බෙදා හරින ලද පෙරහන ජාලයකට සාර්ථකව ඒකාබද්ධ කරන ලදී. මෙම පද්ධතිය අපගේ බෙදා හරින ලද සහ විෂමජාතීය පර්යන්ත සඳහා පුළුල් පරාසයක වින්‍යාස කිරීමේ ක්‍රම සඳහා සහය දක්වයි.

ද්‍රව්‍ය ලිවීමට ඔබගේ උදව්වට ස්තූතියි. VolanDamrod, සෙරන්හයිට්, නොවන.

ඉංග්‍රීසි අනුවාදය තැපැල්.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න