සේවාදායකයක් විනාශ කිරීම පිළිබඳ හැකර් ක්‍රීඩාවක පසුබිම නිර්මාණය වූ ආකාරය

සේවාදායකයක් විනාශ කිරීම පිළිබඳ හැකර් ක්‍රීඩාවක පසුබිම නිර්මාණය වූ ආකාරය
සේවාදායකයේ විනාශය සමඟ අපගේ ලේසර් ගවේෂණය සකස් කළ ආකාරය අපි ඔබට දිගටම කියමු. පෙර සිට ආරම්භ කරන්න ගවේෂණය විසඳීම පිළිබඳ ලිපිය.

සමස්තයක් වශයෙන්, ක්‍රීඩාවේ පසුබිමෙහි වාස්තුවිද්‍යාත්මක ඒකක 6 ක් තිබුණි, එය අපි මෙම ලිපියෙන් විශ්ලේෂණය කරමු:

  1. ක්‍රීඩා යාන්ත්‍රණ සඳහා වගකිව යුතු ක්‍රීඩා ආයතනවල පසුබිම
  2. VPS මත පසුබිම් සහ අඩවි දත්ත හුවමාරු බස්
  3. පසුපෙළ ඉල්ලීම් (ක්‍රීඩා අංග) සිට Arduino වෙත පරිවර්තකය සහ අඩවියේ දෘඩාංග
  4. රිලේ පාලනය කිරීමේ වගකීම දැරූ Arduino, පරිවර්තකයාගෙන් විධාන ලබාගෙන සැබෑ කාර්යය කළේය.
  5. සැබෑ උපාංග: විදුලි පංකා, මල්මාලා, බිම් ලාම්පු, ආදිය.
  6. Frontend - Falcon වෙබ් අඩවියම, ක්‍රීඩකයින් උපාංග පාලනය කරන ලදී

අපි ඒ එක් එක් හරහා යමු.

ක්‍රීඩා ආයතනවල පසුබිම

පසුපෙළ වසන්ත ඇරඹුම් යෙදුමක් ලෙස ක්‍රියාත්මක කරන ලදී: එයට විවේක පාලක කිහිපයක්, වෙබ්සොකට් අන්ත ලක්ෂ්‍යයක් සහ ක්‍රීඩා තර්කනය සහිත සේවාවන් තිබුණි.

පාලකයන් තිදෙනෙකු පමණක් විය:

  • මෙගාට්‍රෝන්. වත්මන් Megatron පිටුව GET ඉල්ලීම් හරහා යවා ඇත: බලය සක්‍රිය කිරීමට පෙර සහ පසු. POST ඉල්ලීම හරහා ලේසර් විකාශනය විය.
  • ටිල්ඩ් පිටු සිතියම්ගත කිරීම එවිට ඒවා පිටු නාමයෙන් සපයනු ලැබේ. Tilde අපනයනය සඳහා පිටු නිෂ්පාදනය කරන්නේ මුල් නම්වලින් නොව, අභ්‍යන්තර හැඳුනුම්පත සහ අනුකූලතා තොරතුරු සමඟිනි.
  • ව්‍යාජ-අධි-බර සේවාදායක කැප්චා සේවය කිරීමට කැප්චා පාලකය.

ගැජට් පාලනය කිරීම සඳහා Websocket endpoint භාවිතා කරන ලදී: ලාම්පු, මල්මාලා සහ අකුරු. උපාංගයේ වත්මන් තත්ත්වය සමමුහුර්තව සියලුම ක්‍රීඩකයින්ට පෙන්වීමට එය තෝරාගෙන ඇත: එය සක්‍රිය හෝ අක්‍රිය, සක්‍රිය හෝ නැත, දැනට බිත්තියේ දැල්වී ඇති අකුරේ වර්ණය කුමක්ද. ලේසර් ඔන් කරන වැඩේ ටිකක් අමාරු කරන්න, අපි ලොගින් එකයි, පාස්වර්ඩ් එකයි ඇඩ්මින්/ඇඩ්මින් එක්ක මල්මාලයට සහ ලේසර් එකට අවසරය එකතු කළා.

ක්‍රීඩකයන්ට මල්මාලය සක්‍රිය කිරීමෙන් එය පරීක්‍ෂා කළ හැකි අතර ලේසර් සමඟ එයම නැවත කළ හැකිය.

අනවශ්‍ය තේරීම් වලින් ක්‍රීඩකයින්ට වද නොදීම සඳහා අපි එවැනි සුළු පිවිසුම්-මුරපද යුගලයක් තෝරා ගත්තෙමු.

කාර්යය ටිකක් රසවත් කිරීමට, කාමරයේ උපාංග හඳුනාගැනීම් ලෙස mongodb වෙතින් වස්තු ID භාවිතා කරන ලදී.

ObjectId හි වේලා මුද්දරයක් අඩංගු වේ: අහඹු අගයන් දෙකක්, ඉන් එකක් උපාංග හඳුනාගැනීම මත පදනම්ව ගනු ලැබේ, දෙවැන්න එය උත්පාදනය කරන ක්‍රියාවලියේ pid සහ ප්‍රති අගය මත පදනම් වේ. ලේසර් උපාංග හඳුනාගැනීමේ තේරීම වඩාත් සිත්ගන්නාසුළු වන පරිදි, සාමාන්‍ය කවුන්ටරයක් ​​සමඟින්, නමුත් සාමාන්‍ය කවුන්ටරයක් ​​සමඟින් නියමිත කාල පරතරයන්හිදී සහ විවිධ pid ක්‍රියාවලීන් සමඟින් හැඳුනුම්පත් ජනනය කිරීමට මට අවශ්‍ය විය. කෙසේ වෙතත්, අවසානයේ දී, සෑම කෙනෙකුම කවුන්ටර අගයෙන් පමණක් වෙනස් වූ හඳුනාගැනීම් වලින් ආරම්භ විය. මෙය පියවර ඉතා සරල කර ඇති අතර objectId ව්‍යුහය විශ්ලේෂණය කිරීම අවශ්‍ය නොවේ.

පසුපෙළ ඉල්ලීම් වලින් පරිවර්තකය

පයිතන් පිටපත, ටයිමර් මත වැඩ කළ සහ ඒවා ක්‍රීඩා සාරාංශ වලින් භෞතික ආකෘතියකට පරිවර්තනය කළ. උදාහරණයක් ලෙස, "බිම් ලාම්පුව සක්රිය කරන්න" → "රිලේ N2 සක්රිය කරන්න."

ස්ක්‍රිප්ට් එක RabbitMQ පෝලිමට සම්බන්ධ කර ඇති අතර පෝලිමේ සිට Arduino වෙත ඉල්ලීම් මාරු කරන ලදී. එය සමාන්තර ආලෝකය මාරු කිරීමේ තර්කනය ද ක්‍රියාත්මක කළේය: සමහර උපාංග සමඟ, ඒවා මත ආලෝකය සක්‍රීය කරන ලදී, නිදසුනක් ලෙස, මෙගාට්‍රොන් වෙත මුලින් බලය සැපයූ විට, එය වේදිකා ආලෝකයෙන් ආලෝකමත් විය. සමස්ත දර්ශනයේ සිනමාකරණය සඳහා ආලෝක නිර්මාණය අපගේ ව්‍යාපෘති සම-නිෂ්පාදක සහ නිෂ්පාදන නිර්මාණකරු ඉල්යා සෙරොව්ගේ විශිෂ්ට කාර්යය පිළිබඳ වෙනම කතාවක් වන අතර අපි ඒ ගැන වෙනම පෝස්ට් එකකින් කියන්නෙමු.

ටයිමරයක් භාවිතයෙන් ඉරීම දියත් කිරීම සහ රූපය රූපවාහිනියට සම්ප්‍රේෂණය කිරීමේ තර්කනය සඳහා පරිවර්තකයා ද වගකිව යුතුය: ෂ්‍රෙඩරය දියත් කිරීමේ ටයිමරය, කෑගසන කැපිබරා, ක්‍රීඩාව අවසානයේ වෙළඳ දැන්වීම්.

Megatron ටෝකනය ජනනය කිරීමේ තර්කය ව්‍යුහගත වූ ආකාරය

ටෙස්ට් වෙඩි

සෑම තත්පර 25කට වරක්ම නව ටෝකනයක් උත්පාදනය කරන ලද අතර තත්පර 10/10 බලයෙන් තත්පර 255ක් ලේසර් ක්‍රියාත්මක කිරීමට භාවිතා කළ හැක. වෙත සබැඳිය megatron කේතය සමඟ github.

පසුව ලේසර් විනාඩි 1 ක් සිසිල් විය - මෙම කාලය තුළ එය ලබා ගත නොහැකි වූ අතර නව වෙඩි තැබීම් ඉල්ලීම් පිළිගත්තේ නැත.

මෙම බලය කඹය හරහා පුළුස්සා දැමීමට ප්රමාණවත් නොවීය, නමුත් ඕනෑම ක්රීඩකයෙකුට Megatron වෙඩි තබා ලේසර් කදම්භයේ ක්රියාකාරිත්වය දැක ගත හැකිය.

ටෝකනය ජනනය කිරීමට MD5 හැෂිං ඇල්ගොරිතම භාවිතා කරන ලදී. සහ යෝජනා ක්රමය ක්රියාත්මක විය MD5 + කවුන්ටරයෙන් + රහස සටන් සංකේතයක් සඳහා සහ පරීක්ෂණ සංකේතයක් සඳහා රහසක් නොමැතිව.

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

සටන් වෙඩි තැබීම

Megatron හි සටන් මාදිලිය වොට් 100 ක ලේසර් බලය 3% කි. බර දරා සිටි කඹය හරහා පුළුස්සා දැමීමට, මින්මැදුර බිඳ දැමීමට සහ සේවාදායකය ජලයෙන් පිරී යාමට මෙය මිනිත්තු 2 ක් ප්රමාණවත්ය.

අපි ව්‍යාපෘතියේ Github හි ඉඟි කිහිපයක් තැබුවෙමු: එනම්, ටෝකන් උත්පාදන කේතය, පරීක්ෂණ සහ සටන් ටෝකන එකම කවුන්ටර දර්ශකයක් මත පදනම්ව ජනනය වන බව කෙනෙකුට තේරුම් ගත හැකිය. සටන් ටෝකනයකදී, කවුන්ටර අගයට අමතරව, අවසාන අක්ෂර දෙක හැරුණු විට, මෙම සාරාංශයේ වෙනස් කිරීමේ ඉතිහාසය තුළ සම්පූර්ණයෙන්ම පාහේ ඉතිරි වන ලුණු ද භාවිතා වේ.

මෙම දත්ත දැන ගැනීමෙන්, ලුණු වල අවසාන සංකේත 2 හරහා වර්ග කිරීමට හැකි වූ අතර ඇත්ත වශයෙන්ම ලොස්ට් සිට ෂඩාස්රාකාර පද්ධතියට පරිවර්තනය කරන ලද සංඛ්යා භාවිතා කර ඇති බව සොයා ගැනීමට හැකි විය.

එවිට ක්‍රීඩකයින්ට ප්‍රති අගය අල්ලා ගැනීමට සිදු විය (පරීක්ෂණ ටෝකනය විශ්ලේෂණය කිරීමෙන්) සහ ඊළඟ කවුන්ටර අගය සහ පෙර පියවරේදී තෝරාගත් ලුණු භාවිතා කර සටන් සංකේතයක් ජනනය කළ යුතුය.

කවුන්ටරය සෑම ටෙස්ට් පහරක් සමඟම සහ සෑම තත්පර 25කට වරක්ම වැඩි විය. අපි මේ ගැන කොතැනකවත් ලියා නැත, එය කුඩා ක්රීඩාව පුදුමයක් විය යුතුය.

කැප්චා අන්තර්ක්‍රියා සේවාව

ක්‍රීඩා ලෝකයේ, විදුලි පංකාව සක්‍රිය කිරීමට සහ ඉඟියක් සමඟ ෆ්ලිප්චාර්ට් විවෘත කිරීමට පැටවිය යුතු කැප්චා මෙයම විය. කැමරාව අසල බර නිරීක්ෂණ සහිත ලැප්ටොප් එකක් විය.

සේවාදායකයක් විනාශ කිරීම පිළිබඳ හැකර් ක්‍රීඩාවක පසුබිම නිර්මාණය වූ ආකාරය

සේවා මම වත්මන් භාරය ලෙස නිරීක්‍ෂණයේදී පෙන්විය යුතු දේ ගණනය කළෙමි: උෂ්ණත්වය සහ CPU විදුලි පංකාව. ප්‍රමිතික කාලගබඩා දත්ත සමුදායට මාරු කර ග්‍රැෆනා විසින් ඇද ගන්නා ලදී.

පසුගිය තත්පර 5 තුළ කැප්චා සංදර්ශනය කිරීමට ඉල්ලීම් 50කට වඩා වැඩි නම්, ස්ථාවර + අහඹු පියවර ගණනකින් භාරය වැඩි විය. ගණනය කිරීම වූයේ විනාඩි දෙකකින් 100% බර පැටවිය හැකි බවයි.

ඇත්ත වශයෙන්ම, අවසාන ක්‍රීඩාවේදී දර්ශනය වූවාට වඩා වැඩි තර්කනයක් සේවාවේ තිබුණි: අපි මොනිටරය තැබුවේ CPU විදුලි පංකාවේ භ්‍රමණය පමණක් පෙනෙන ආකාරයටය.

ගවේෂණය ආරම්භයේදී ඔවුන්ට අවශ්‍ය වූයේ ෆැල්කන් වෙබ් අඩවියෙන් ග්‍රැෆාන් වෙත ප්‍රවේශ වීමට ඉඩ හැරීමටයි. නමුත් එහි පසුපෙළ යෙදුම් වාර්තාවේ ස්ප්‍රිංබූට් ප්‍රමිතික ද අඩංගු වූ අතර, එය ඉවත් කිරීමට අපට වෙලාවක් නොතිබුණි, එබැවින් අපි එයට ප්‍රවේශය අවහිර කිරීමට තීරණය කළෙමු. නිවැරදිව එසේ - ගවේෂණය ආරම්භයේදී පවා, සමහර ක්‍රීඩකයින් අනුමාන කළේ යෙදුම වසන්ත බූට් රාමුවේ ලියා ඇති අතර සමහර සේවාවන්හි නම් පවා හාරා ඇති බවයි.

සත්කාරක සහ දත්ත බසය

RabbitMQ ක්‍රියාත්මක වූ VPS සේවාදායකය වන පසු අන්තයේ සිට වෙබ් අඩවියට තොරතුරු මාරු කිරීමේ මෙවලමක්.

පසුපෙළ සහ දත්ත බසය මත තබා ඇත අපේ VPS. එහි බලය ඔබ තිරය මත දුටු පරිගණකය හා සැසඳිය හැකි විය: ගිගාබයිට් දෙකක RAM සහිත 2-core VPS. උපරිම බර දින කිහිපයක් සඳහා පමණක් සැලසුම් කර ඇති බැවින්, සම්පත් සඳහා ගාස්තු අය කරන ලදී - කෙටි කාලයක් සඳහා VPS පැටවීමට අදහස් කරන අපගේ සේවාදායකයින් කරන්නේ මෙයයි. එවිට අපි බලාපොරොත්තු වූවාට වඩා බර වැඩි බවත්, ස්ථාවර ගාස්තුවක් වඩා ලාභදායී බවත් පෙනී ගියේය. ඔබ ගවේෂණයක් කරන්නේ නම්, රේඛා ගාස්තු තෝරන්න ටර්බෝ.

DDoSa වෙතින් සේවාදායකය ආරක්ෂා කිරීමට, අපි Cloudflare භාවිතා කළෙමු.

VPS සෑම දෙයකටම ගෞරවාන්විතව ඔරොත්තු දුන් බව පැවසීම වටී.

රිලේ පාලනය කිරීමේ වගකීම දැරූ Arduino, පරිවර්තකයාගෙන් විධාන ලබාගෙන සැබෑ කාර්යය කළේය.

ව්‍යාපෘතියේ දෘඪාංග කොටස පිළිබඳ මීළඟ ලිපියේ මාතෘකාව මෙයයි: පසුපෙළ නිශ්චිත රිලේ එකක් සක්‍රිය කිරීමට ඉල්ලීම් යවා ඇත. එය එසේ වූයේ පසුපෙළ සියලුම ආයතන පාහේ දැන සිටි අතර එයින් ලැබෙන ඉල්ලීම් “මෙම ආයතනය සක්‍රිය කරන්න” ලෙස පෙනේ. අපි මෙය කළේ වෙබ් අඩවියේ මුල් පරීක්ෂාව සඳහා ය (අපි තවමත් සියලුම Arduino සහ රිලේ එකලස් කර නොතිබුණි), අවසානයේ අපි සියල්ල එලෙසම අත්හැරියෙමු.

ඉදිරි අන්තය

අපි ඉක්මනින් tilde මත වෙබ් අඩවිය නිර්මාණය කළා, එය එක් වැඩ කරන දිනක් ගත වූ අතර අපගේ අයවැයෙන් 30 දහසක් ඉතිරි කර ඇත.

මුලදී, අපි වෙබ් අඩවිය අපනයනය කිරීමට සහ අපට නැති වූ තර්ක එකතු කිරීමට සිතුවෙමු, නමුත් අපි මෙය කිරීම තහනම් කරන ලද භාවිතයේ කොන්දේසිවලට දිව ගියෙමු.

බලපත්‍රය උල්ලංඝනය කිරීමට අප සූදානම් නැත, එබැවින් විකල්ප දෙකක් තිබුණි: සියල්ල අප විසින්ම ක්‍රියාත්මක කිරීමට හෝ ටිල්ඩා කෙලින්ම සම්බන්ධ කර ගැනීමට, ව්‍යාපෘතිය ගැන කතා කර කේතය වෙනස් කිරීමට අවසර ඉල්ලන්න.

අපි දෙවන විකල්පය තෝරා ගත් අතර ඔවුන් අපව අතරමග හමු වූවා පමණක් නොව, වසරක නොමිලේ ව්‍යාපාරික ගිණුමක් පවා ලබා දුන් අතර ඒ සඳහා අපි ඔවුන්ට ඉතා කෘතඥ වෙමු. ඔවුන්ට සොකොල්ගේ වෙබ් අඩවි නිර්මාණය පෙන්වීම ඉතා අපහසු විය.

එහි ප්‍රතිඵලයක් වශයෙන්, අපි මූලික උපාංග වෙත ඉල්ලීම් යැවීම සඳහා js තර්කනය ඉදිරිපසට අමුණා, ක්‍රීඩා මූලද්‍රව්‍ය සක්‍රිය සහ අක්‍රිය කිරීම සඳහා බොත්තම් වල මෝස්තර තරමක් වෙනස් කළෙමු.

වෙබ් අඩවි නිර්මාණය

වෙනම පරිච්ඡේදයක් වටිනා සෙවුම් ඉතිහාසය.

අපට අවශ්‍ය වූයේ පැරණි තාලයේ වෙබ් අඩවියක් පමණක් නොව, නිර්මාණයේ සියලුම මූලික නීති උල්ලංඝනය කරන අතිශයින්ම පිළිකුල් සහගත එකක් නිර්මාණය කිරීමටයි. ඒ අතරම, විශ්වාසනීයත්වය පවත්වා ගැනීම වැදගත් විය: එය ENT කතාව බිඳ නොදැමිය යුතු අතර, කතුවරයාගේ මවාපෑම පෙන්නුම් කළ යුතු අතර, එවැනි වෙබ් අඩවියක් පැවතිය හැකි බවත්, සේවාදායකයින් පවා ගෙන ඒමට ක්රීඩකයන්ට විශ්වාස කිරීමට සිදුවනු ඇත. ඔහු එය ගෙනාවා! ගේම් එක යන අතරේ වෙබ් සයිට් හදන්න අපිව දෙපාරක් සම්බන්ධ කරගත්තා.

මුලදී මම නිර්මාණය කළේ මා විසින්ම, තවත් gif සහ දිලිසෙන අංග ඇතුළත් කිරීමට උත්සාහ කරමි. නමුත් අවුරුදු 10 ක මගේ නිර්මාණකරු ස්වාමිපුරුෂයා ඔහුගේ උරහිස දෙස බලා එය "හොඳයි" ලෙස ප්රතික්ෂේප කළේය. සැලසුම් නීති කඩ කිරීමට, ඔබ ඒවා දැන සිටිය යුතුය.

සේවාදායකයක් විනාශ කිරීම පිළිබඳ හැකර් ක්‍රීඩාවක පසුබිම නිර්මාණය වූ ආකාරය

කල්පවත්නා පිළිකුලක් ඇති කරන වර්ණ සංයෝජන කිහිපයක් තිබේ: කොළ සහ රතු සමාන පොහොසත්කම, අළු සහ රෝස, නිල් සහ දුඹුරු. අවසානයේදී, අපි මූලික වර්ණ ලෙස රතු සහ කොළ සංයෝජනයක් මත පදිංචි වී, බළලෙකු සමඟ gif එකතු කර කොටස් ඡායාරූපයකින් සොකොලොව්ගේ ඡායාරූප 3-4 ක් තෝරා ගත්තෙමු. මට තිබුණේ අවශ්‍යතා කිහිපයක් පමණි: මැදි වයසේ පිරිමියෙක්, නොගැලපෙන ඇඳුමකින් යුවලක් විශාල ප්‍රමාණයකින් සහ "වෘත්තීය ස්ටුඩියෝ ඡායාරූප රූගත කිරීම්" ඉරියව්වෙන් සැරසී සිටී. පරීක්ෂණය සඳහා, ඔවුන් එය මිතුරන්ට පෙන්වූ අතර "ඔබ එයට කැමති වන්නේ කෙසේද?"

සැලසුම් සංවර්ධන ක්‍රියාවලියේදී, මගේ සැමියාට පැය භාගයකට වරක් නිදා ගැනීමට සිදු විය; හෙලිකොප්ටරය පියාසර කිරීමට පටන් ගත්තේය. ඔහුගේ දෑස් ආරක්ෂා කර ගැනීමට - ඉදිරිපස කොටස නිම කර අවසන් කරන අතරතුර තිරයේ වැඩි කොටසකට සංවර්ධක කොන්සෝලය විවෘත කිරීමට පාෂා උත්සාහ කළේය.

සැබෑ උපාංග

විදුලි පංකා සහ විදුලි පංකා සවි කරන ලද්දේ ඝන-තත්ත්ව රිලේ හරහා ඒවා ක්ෂණිකව සම්පූර්ණ බලයෙන් ක්‍රියාත්මක නොවන පරිදි - නිරීක්ෂණයට සමාන්තරව බලය වැඩි වන පරිදි ය.

නමුත් අපි මේ ගැන ඊළඟ පෝස්ට් එකෙන් කතා කරමු, ක්‍රීඩාවේ දෘඩාංග කොටස සහ වෙබ් අඩවියේ සැබෑ ඉදිකිරීම් ගැන.

සුසරව සිටින්න!

සේවාදායකය විනාශ කිරීමේ ගවේෂණය පිළිබඳ වෙනත් ලිපි

සේවාදායකයක් විනාශ කිරීම පිළිබඳ හැකර් ක්‍රීඩාවක පසුබිම නිර්මාණය වූ ආකාරය

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

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