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:
Kumbuyo kwa magulu amasewera omwe anali ndi udindo pamasewera
Backend ndi site data exchange bus pa VPS
Womasulira kuchokera ku zopempha zam'mbuyo (zosintha zamasewera) kupita ku Arduino ndi hardware patsamba
Arduino, yemwe anali ndi udindo woyang'anira ma relay, adalandira malamulo kuchokera kwa womasulira ndipo adagwira ntchito yeniyeniyo
Zida zenizeni: fan, garlands, nyali zapansi, etc.
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.
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.
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.
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.
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.