Momwe backend yamasewera owononga okhudza kuwononga seva idapangidwa

Momwe backend yamasewera owononga okhudza kuwononga seva idapangidwa
Tikupitilizabe kukuwuzani momwe kufunafuna kwathu kwa laser ndikuwonongeka kwa seva kudakonzedweratu. Yambani m'mbuyomu nkhani yokhudza kuthetsa kufunafuna.

Pazonse, kumbuyo kwa masewerawa kunali ndi magawo 6 omanga, omwe tikambirana m'nkhaniyi:

  1. Kumbuyo kwa magulu amasewera omwe anali ndi udindo pamasewera
  2. Backend ndi site data exchange bus pa VPS
  3. Womasulira kuchokera ku zopempha zam'mbuyo (zosintha zamasewera) kupita ku Arduino ndi hardware patsamba
  4. Arduino, yemwe anali ndi udindo woyang'anira ma relay, adalandira malamulo kuchokera kwa womasulira ndipo adagwira ntchito yeniyeniyo
  5. Zida zenizeni: fan, garlands, nyali zapansi, etc.
  6. Frontend - tsamba la Falcon palokha, pomwe osewera amawongolera zida

Tiyeni tidutse aliyense wa iwo.

Kumbuyo kwa magulu amasewera

Kumbuyo kunakhazikitsidwa ngati ntchito ya boot ya masika: inali ndi olamulira angapo opumula, mapeto a websocket ndi mautumiki okhala ndi malingaliro a masewera.

Panali olamulira atatu okha:

  • Megatron. Tsamba lapano la Megatron lidatumizidwa kudzera mu zopempha za GET: isanayambe komanso itatha kuyatsa magetsi. Laser idawombera kudzera pa pempho la POST.
  • Kujambula masamba a tilde kuti atumizidwe ndi dzina latsamba. Tilde imapanga masamba omwe amatumizidwa kunja osati ndi mayina oyambira, koma okhala ndi ID yamkati ndi chidziwitso chotsatira.
  • Wolamulira wa Captcha kuti agwiritse ntchito pseudo-high-load server captcha.

Websocket endpoint idagwiritsidwa ntchito kuwongolera zida: nyali, garland ndi zilembo. Idasankhidwa kuti iwonetse kwa osewera onse momwe chipangizochi chilili panopa: kaya chayatsidwa kapena kuzimitsa, chogwira kapena ayi, ndi mtundu wanji wa chilembo chomwe chayatsidwa pakhoma. Pofuna kuti ntchito yoyatsa laser ikhale yovuta kwambiri, tidawonjezera chilolezo ku garland ndi laser yokhala ndi malowedwe omwewo ndi password admin/admin.

Osewera amatha kuyesa ndikutembenuza korona ndikubwereza zomwezo ndi laser.

Tidasankha mawu achinsinsi olowera kuti tisazunze osewera ndi kusankha kosafunikira.

Kuti ntchitoyi ikhale yosangalatsa pang'ono, ma ID a chinthu kuchokera ku mongodb adagwiritsidwa ntchito ngati zozindikiritsira zida mchipindamo.

ObjectId ili ndi sitampu yanthawi: zikhalidwe ziwiri zosasinthika, imodzi mwazomwe zimatengedwa kutengera chozindikiritsa chipangizocho, ndipo yachiwiri kutengera pid yazomwe zimapangidwira komanso mtengo wake. Ndinkafuna kupanga zozindikiritsa zomwe zimapangidwa pafupipafupi komanso ndi njira zosiyanasiyana za pid, koma ndi kauntala wamba, kuti kusankha chozindikiritsa cha chipangizo cha laser kukhale kosangalatsa. Komabe, pamapeto pake, aliyense adayamba ndi zozindikiritsa zomwe zimasiyana potengera mtengo. Izi mwina zidapangitsa kuti gawolo likhale losavuta kwambiri komanso losafunikira kusanthula kachitidwe ka objectId.

Womasulira kuchokera kuzinthu zakumbuyo

Python script, omwe ankagwiritsa ntchito zowerengera nthawi ndikuwamasulira kuchokera kuzinthu zamasewera kukhala chitsanzo chakuthupi. Mwachitsanzo, β€œyatsa nyali yapansi” β†’ β€œyatsa nyali yolumikizirana N2.”

Zolemba zolumikizidwa ndi mzere wa RabbitMQ ndikusamutsa zopempha kuchokera pamzere kupita ku Arduino. Idakhazikitsanso malingaliro akusinthana kofananira: pamodzi ndi zida zina, nyaliyo idayatsidwa, mwachitsanzo, pomwe mphamvu idaperekedwa koyamba ku Megatron, idawunikiridwa ndi kuwala kwa siteji. Kuwunikira kwa kanema wa kanema wa zochitika zonse ndi nkhani yosiyana yokhudza ntchito yayikulu ya wopanga nawo polojekiti komanso wopanga Ilya Serov, ndipo tikambirana mwatsatanetsatane.

Womasulirayo analinso ndi udindo pamalingaliro oyambitsa shredder pogwiritsa ntchito timer ndi kutumiza chithunzicho ku TV: timer yoyambitsa shredder, capybara yofuula, malonda kumapeto kwa masewerawo.

Momwe malingaliro opanga chizindikiro cha Megatron adapangidwira

Kuwombera

Masekondi 25 aliwonse chizindikiro chatsopano chimapangidwa ndipo chimatha kugwiritsidwa ntchito kuyatsa laser kwa masekondi 10 pa mphamvu ya 10/255. Lumikizani ku github yokhala ndi Megatron code.

Laser kenako idakhazikika kwa mphindi imodzi - panthawiyi inalibe ndipo sanavomereze zopempha zatsopano.

Mphamvu iyi sinali yokwanira kuwotcha kudzera mu chingwe, koma wosewera aliyense amatha kuwotcha Megatron ndikuwona mtengo wa laser ukugwira ntchito.

MD5 hashing algorithm idagwiritsidwa ntchito kupanga chizindikirocho. Ndipo chiwembucho chinatheka MD5 kuchokera ku MD5 + counter + chinsinsi kwa chizindikiro chankhondo komanso popanda chinsinsi cha chizindikiro choyesera.

MD5 imanena za projekiti yamalonda yomwe Pavel, wobwerera kwathu, adachita. Zaka zingapo zapitazo pulojekitiyi idagwiritsa ntchito MD5, ndipo atauza womanga pulojekitiyo kuti inali njira yachikale ya encryption algorithm, adayamba kugwiritsa ntchito MD5 kuchokera ku MD5. Popeza tinaganiza zopanga projekiti ya noob kwambiri, adakumbukira zonse ndipo adaganiza zopanga katchulidwe kakang'ono.

Kuwombera

Njira yankhondo ya Megatron ndi 100% mphamvu ya laser pa 3 watts. Izi ndizokwanira kwa mphindi 2 kuti ziwotche chingwe chomwe chimanyamula kulemera kwake, kuswa aquarium ndikusefukira seva ndi madzi.

Tinasiya malingaliro angapo pa Github ya polojekitiyi: ndiko kuti, chizindikiro cha m'badwo wa chizindikiro, chomwe munthu angamvetse kuti zizindikiro zoyesa ndi zolimbana zimapangidwira pogwiritsa ntchito chizindikiro chomwecho. Pankhani ya chizindikiro cha nkhondo, kuwonjezera pa mtengo wamtengo wapatali, mchere umagwiritsidwanso ntchito, womwe uli pafupi kutsalira m'mbiri ya kusintha mfundoyi, kupatulapo zilembo ziwiri zomaliza.

Podziwa izi, zinali zotheka kukonza zizindikiro za 2 zomaliza za mchere ndikupeza kuti manambala ochokera ku Lost, otembenuzidwa ku hexadecimal system, adagwiritsidwa ntchito.

Kenako osewerawo amayenera kugwira mtengo wowerengera (posanthula chizindikiro choyeserera) ndikupanga chizindikiro chankhondo pogwiritsa ntchito mtengo wowerengera wotsatira ndi mchere womwe wasankhidwa pagawo lapitalo.

Kauntala imangowonjezereka ndi kuwombera kulikonse ndi masekondi 25 aliwonse. Sitinalembe za izi kulikonse, zimayenera kukhala zodabwitsa zamasewera.

Ntchito yolumikizana ya Captcha

M'dziko lamasewera, ichi chinali captcha yomweyi yomwe inkafunika kukwezedwa kuti muyatse fani ndikutsegula tchati ndi lingaliro. Pafupi ndi kamera panali laputopu yoyang'anira katundu.

Momwe backend yamasewera owononga okhudza kuwononga seva idapangidwa

utumiki Ndinawerengera zomwe ndiyenera kuwonetsa pakuwunika ngati katundu wapano: kutentha ndi CPU Fan. Ma metric adasamutsidwa ku database ya timebase ndikujambulidwa ndi grafana.

Ngati mu masekondi a 5 otsiriza panali zopempha zoposa 50 kuti zisonyeze captcha, ndiye kuti katunduyo anawonjezeka ndi chiwerengero chokhazikika + cha masitepe. Kuwerengera kunali kuti 100% katundu akhoza kupindula mu mphindi ziwiri.

M'malo mwake, panali zomveka zambiri muutumiki kuposa zomwe zidawonetsedwa mumasewera omaliza: tidayika chowunikira m'njira yoti kuzungulira kwa CPU Fan kumawonekera.

Kumayambiriro kwa kufunafuna adafuna kuchoka ku Grafan kupezeka patsamba la Falcon. Koma inalinso ndi ma springboot metrics kuchokera ku lipoti la ntchito ya backend, yomwe tinalibe nthawi yoti tichite, choncho tinaganiza zoletsa kuyipeza. Ndipo moyenerera - ngakhale kumayambiriro kwa kufunafuna, osewera ena ankaganiza kuti ntchitoyo inalembedwa mu springboot framework ndipo ngakhale anakumba mayina a mautumiki ena.

Hosting ndi data basi

Chida chotumizira uthenga kuchokera kumbuyo kupita kumalo, seva ya VPS yomwe RabbitMQ inali kuyendetsa.

Mabasi a backend ndi data adasungidwa VPS yathu. Mphamvu yake inali yofanana ndi kompyuta yomwe mudawona pazenera: VPS ya 2-core yokhala ndi ma gigabytes awiri a RAM. Mtengowo unkaperekedwa pazinthu zothandizira, popeza kuchuluka kwapamwamba kunakonzedweratu kwa masiku angapo - izi ndi zomwe makasitomala athu amachita omwe akukonzekera kukweza VPS kwa nthawi yochepa. Kenako zidapezeka kuti katunduyo anali wokwera kuposa momwe timayembekezera, ndipo mtengo wokhazikika ungakhale wopindulitsa kwambiri. Ngati mukufuna, sankhani mizere ya tarifi Turbo.

Kuteteza seva ku DDoSa, tidagwiritsa ntchito Cloudflare.

Ndikoyenera kunena kuti VPS idalimbana ndi chilichonse mwaulemu.

Arduino, yemwe anali ndi udindo woyang'anira ma relay, adalandira malamulo kuchokera kwa womasulira ndipo adagwira ntchito yeniyeniyo

Uwu ndiwonso mutu wankhani yotsatira yokhudzana ndi gawo laukadaulo la polojekitiyi: backend idangotumiza zopempha kuti muyatse kutumizirana kwina. Zidachitika kuti backend idadziwa pafupifupi mabungwe onse ndi zopempha kuchokera kwa izo zikuwoneka ngati "yatsa bungweli." Tidachita izi poyesa tsambalo koyambirira (tinali tisanasonkhanitse ma Arduino onse ndi ma relay), pamapeto pake tidasiya zonse monga choncho.

Kumaso

Tinapanga tsambalo mwachangu pa tilde, zidatenga tsiku limodzi logwira ntchito ndikutipulumutsa 30 zikwi pa bajeti yathu.

Poyamba, tidaganiza zongotumiza tsambalo ndikuwonjezera malingaliro omwe tidasowa, koma tidagwiritsa ntchito zomwe zidatiletsa kuchita izi.

Sitinali okonzeka kuphwanya layisensi, kotero panali njira ziwiri: kukhazikitsa zonse tokha kapena kulankhulana ndi Tilda mwachindunji, kulankhula za polojekiti ndikupempha chilolezo kusintha kachidindo.

Tinasankha njira yachiwiri ndipo sanangokumana nafe theka, koma adatipatsa chaka cha akaunti yaulere ya bizinesi, yomwe timawayamikira kwambiri. Zinali zovuta kwambiri kuwawonetsa mawebusayiti a Sokol.

Zotsatira zake, tidaphatikizira js logic kutsogolo kuti titumize zopempha ku zida zoyambira, ndikusintha pang'ono masitaelo a mabatani otsegula ndi kuzimitsa zinthu zamasewera.

Kupanga tsamba

Mbiri yakusaka, yomwe ili yoyenera mutu wosiyana.

Sitinkafuna kupanga tsamba lachikale, koma lonyansa kwambiri lomwe limaphwanya malamulo onse opangira mapangidwe. Panthawi imodzimodziyo, kunali kofunika kusunga kukhulupirira: sikuyenera kuphwanya nkhani ya ENT, kusonyeza kudzikuza kwa wolemba, ndipo osewera ayenera kukhulupirira kuti malo oterowo angakhalepo komanso kubweretsa makasitomala. Ndipo anabweretsa! Pamene masewerawa akuchitika, tinalumikizidwa kawiri kuti tipange mawebusaiti.

Poyamba ndidapanga ndekha, ndikuyesa kuphatikiza ma gif ndi zinthu zonyezimira. Koma mwamuna wanga amene ndinakhala naye m’banja zaka 10 anayang’ana paphewa lake n’kunena kuti β€œzabwino kwambiri.” Kuti muswe malamulo opangira mapangidwe, muyenera kuwadziwa.

Momwe backend yamasewera owononga okhudza kuwononga seva idapangidwa

Pali mitundu ingapo ya mitundu yomwe imayambitsa kunyansidwa kosatha: zobiriwira ndi zofiira zolemera zofanana, imvi ndi pinki, buluu kuphatikiza bulauni. Pamapeto pake, tidakhazikika pazophatikizira zofiira ndi zobiriwira monga mitundu yoyambira, tidawonjezera ma gif ndi mphaka ndikusankha zithunzi 3-4 za Sokolov mwiniwake pazithunzi za stock. Ndinali ndi zofunikira zochepa chabe: bambo wazaka zapakati, wovala suti yosayenera kukula kwake ndi "katswiri wazithunzi za studio". Pakuyesa, adawonetsa kwa abwenzi ndikufunsa "mumakonda bwanji?"

Panthawi yopanga mapangidwe, mwamuna wanga amayenera kupita kukagona theka lililonse la ola; helikopita idayamba kuwuluka. Pasha anayesa kutsegula kutonthoza kwa mapulogalamu ambiri zenera pamene iye anamaliza frontend - kuteteza maso ake.

Zida zenizeni

Mafani ndi nyali zidakwezedwa kudzera mumayendedwe olimba-boma kuti asayatse mphamvu zonse nthawi yomweyo - kuti mphamvuyo ichuluke molingana ndi kuwunika.

Koma tidzakambirana izi mu positi yotsatira, za hardware gawo la masewera ndi kumanga kwenikweni kwa malo.

Dzimvetserani!

Zolemba zina zokhudzana ndi kufunafuna kuwononga seva

Momwe backend yamasewera owononga okhudza kuwononga seva idapangidwa

Source: www.habr.com

Kuwonjezera ndemanga