Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.

Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
Teenus nagu programm, infrastruktuur nagu teenus, platvorm nagu teenus, kommunikatsiooniplatvorm nagu teenus, videokonverentsid nagu teenus, aga kuidas oleks pilvemÀngudega kui teenusega? Mitmeid katseid pilvemÀngude loomiseks (Cloud Gaming) on juba tehtud, nÀiteks Google'i hiljuti kÀivitatud Stadia. ei ole WebRTC-d jÀlgiv algaja., aga kas teised saavad WebRTC-d sama hÀsti kasutada?

Thanh Nguyen otsustas uurida seda vĂ”imalust oma avatud koodiga projektis CloudRetro. CloudRetro pĂ”hineb Pionil, populaarsel WebRTC teegil Go pĂ”hjal (tĂ€nud Shonile Pioni arendajate meeskonnast abi eest selle artikli koostamisel). Antud artiklis annab Thanh ĂŒlevaate oma projekti arhitektuurist ning rÀÀgib, mida kasulikku ta Ă”ppis ja millega vĂ€ljakutsetega silmitsi seisis.

Sissejuhatus

Eelmisel aastal, kui Google kuulutas vĂ€lja Stadia, olin ma absoluutselt hĂ€mmingus. Idee on nii ainulaadne ja innovatsiooniline, et ma kĂŒsisin endalt pidevalt, kuidas see ĂŒldse on vĂ”imalik olemasolevate tehnoloogiate juures. Soov sĂŒgavamalt sellesse teemasse sĂŒveneda ajendas mind looma oma versiooni avatud koodiga pilvemĂ€ngust. Tulemuseks oli lihtsalt fantastiline. Allpool soovin jagada oma aastase projekti.

TLDR: lĂŒhike slaidiversioon peamiste punktidega

Miks on pilvemÀngude tulevik

Usun, et pilvemÀngud saavad peagi uueks pÔlvkonnaks mitte ainult mÀngude, vaid ka muudes infotehnoloogia valdkondades. PilvemÀngud on klient/server mudeli tipp. Selline mudel maksimeerib tagapaneeli juhtimise ja minimaalselt vÀhendab esipaneeli tööd, paigutades mÀngu loogika kaugs serverisse ning edastades pilte/heli kliendile. Server teostab rasked arvutused, mistÔttu klient ei sÔltu enam riistvaralistest piirangutest.

Google Stadia vĂ”imaldab sisuliselt mĂ€ngida AAA-mĂ€nge (st kĂ”rgekvaliteedilisi mĂ€ngu vĂ”i suurtĂŒkimĂ€ngu) erinevatel platvormidel sarnase liidese kaudu nagu YouTube. Sama meetodit saab rakendada ka teistele intensiivsetele offline rakendustele, nagu operatsioonisĂŒsteem vĂ”i 2D/3D graafiline kujundus jne, et saaksime neid stabiilselt kĂ€ivitada madala tehnilise spetsifikatsiooniga seadmetes.

Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
Selle tehnoloogia tulevik: kas suudate kujutada, et Microsoft Windows 10 töötab Chrome'i brauseris?

PilvemÀngud on tehniliselt keerulised

MĂ€ngimine on ĂŒks neist haruldastest valdkondadest, kus kasutaja pidev kiire reaktsioon on hĂ€davajalik. Kui aeg-ajalt kohtame lehekĂŒljel klikkides 2 sekundi viivitust, ei ole see probleemne. Reaalajas videovood jÀÀvad tavaliselt paar sekundit maha, kuid pakuvad ikkagi piisavat kasutusmugavust. Siiski, kui mĂ€ng viibib pidevalt 500 ms, on mĂ€ngimine lihtsalt vĂ”imatu. Meie eesmĂ€rk on saavutada ÀÀrmiselt madal viivitus, et sisendi ja meedia vahe oleks vĂ”imalikult vĂ€ike. SeetĂ”ttu ei ole traditsiooniline lĂ€henemine voogedastusele siin rakendatav.

Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
Üldine pilootmudel pilve mĂ€ngimiseks

Avatud lÀhtekoodiga projekt CloudRetro

Otsustasin luua pilve mÀngimise testversiooni, et kontrollida, kas see on vÔimalik selliste karmide vÔrgu piirangute korral. Kontseptsiooni testimiseks valisin Golangi, kuna see on mulle kÔige tuttavam keel ja sobib selle rakendamiseks paljuski paremini, nagu selgus hiljem. Go on lihtne ja areneb vÀga kiiresti; Go kanalid sobivad suurepÀraselt mitme lÔime juhtimiseks.

Projekt CloudRetro.io – avatud lĂ€htekoodiga pilve mĂ€ngimise teenus retro-mĂ€ngude jaoks. Projekti eesmĂ€rk on tuua traditsioonilistesse retro-mĂ€ngudesse kĂ”ige mugavam mĂ€ngukogemus ja lisada mitmikmĂ€ng.
Projekti kohta saab lÀhemalt lugeda siit: https://github.com/giongto35/cloud-game.

CloudRetro funktsionaalsus

CloudRetro demonstreerib pilve mÀngimise kogu vÔimet retro-mÀngude abil. See vÔimaldab saada palju unikaalseid mÀngukogemusi.

  • MĂ€ngu kaasaskantavus
    • Hetkeline mĂ€ngimine lehe avamisel; laadimist ja installimist ei ole vaja
    • Töötab mobiilibrauseris, seega ei ole kĂ€ivitamiseks vajalik ĂŒhtegi tarkvara

  • MĂ€nguseansse saab jagada mitme seadme vahel ja salvestada pilve jĂ€rgmise sisenemise jaoks
  • MĂ€ngu saab voogedastada vĂ”i mĂ€ngida seda samal ajal mitme kasutajaga:
    • Crowdplay, nagu TwitchPlayPokemon, kuid rohkem platvormidevaheline ja reaalajas
    • MĂ€nge saab mĂ€ngida ka offline reĆŸiimis. Palju mĂ€ngijaid saavad mĂ€ngida, ilma et vĂ”rk peaks olema seadistatud. CloudRetro's saab nĂŒĂŒd Samurai Shodownis mĂ€ngida 2 mĂ€ngijat vĂ”rgu kaudu

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    MitmikmÀnguline online mÀngude demoversioon erinevates seadmetes

    Infrastruktuur

    NÔuded ja tehnoloogia virn

    Allpool on loetelu nÔuetest, mille seadsin enne projekti alustamist.

    1. Üks mĂ€ngija
    See nĂ”ue vĂ”ib alguses tunduda mitte eriti oluline ja ilmselge, kuid see on minu peamine jĂ€reldus, et pilvemĂ€ngud saaksid vĂ”imalikult kaugel traditsioonilistest voogedastusteenustest. Kui keskendume ĂŒhekohalistele mĂ€ngudele, saame loobuda tsentraliseeritud serverist vĂ”i CDN-ist, kuna meil pole vaja edastada vooge massidele. Selle asemel, et vooge laadida kopsakasse serverisse vĂ”i edastada pakette tsentraliseeritud WebSocket serverisse, saadetakse teenusevood otse kasutajale lĂ€bi peer-to-peer WebRTC ĂŒhenduse.

    2. Madala latentsusega meediastruktuur
    Lugedes Stadia kohta, satun tihti kokku mĂ”ningate artiklite mainimisega WebRTC-st. MĂ”istsin, et WebRTC on silmapaistev tehnoloogia ning sobib suurepĂ€raselt pilvemĂ€ngude kasutamiseks. WebRTC on projekt, mis vĂ”imaldab veebibrauserid ja mobiilirakendused reaalajas suhtlemist lihtsa API kaudu. See pakub vĂ”rguĂŒhendust, mis on optimeeritud meedia ja sisaldab sisseehitatud standardkoodekeid, nagu VP8 ja H264.

    Olen eelistanud tagada kasutajatele vĂ”imalikult mugava töö, mitte kĂ”rge graafikakvaliteedi sĂ€ilitamist. Algoritmis on lubatud teatud kaotused. Google Stadia-s on lisasamm pildikvaliteedi vĂ€hendamiseks serveris, ja kaadrid skaleeritakse enne edastamist vĂ”rguĂŒhenduse sĂ”lmedele kĂ”rgemale kvaliteedile.

    3. Jagatud infrastruktuur geograafilise marsruudiga
    ÜkskĂ”ik kui optimeeritud ka algoritm on, jÀÀb vĂ”rk ikkagi mÀÀravaks teguriks, mis kĂ”ige rohkem panustab latentsusesse. Arhitektuuril peab olema mehhanism, et siduda lĂ€him kasutajale server, et vĂ€hendada edastusaega (RTT). Arhitektuuril peab olema 1 koordinaator ja mitmed voogedastusserverid, mis on jaotatud kogu maailma: LÀÀne-USA, Ida-USA, Euroopa, Singapore, Hiina. KĂ”ik voogedastusserverid peavad olema tĂ€ielikult isoleeritud. SĂŒsteem vĂ”ib oma jaotust kohandada, kui server liitub vĂ”i lahkub vĂ”rgust. Seega vĂ”imaldab suure liikluse korral tĂ€iendavate serverite lisamine horisontaalset skaleerimist.

    4. Brauseri ĂŒhilduvus
    Pilvemuudid tulevad parimal viisil esitlemisele, kui need nĂ”uavad kasutajatelt minimaalset pingutust. See tĂ€hendab, et mĂ€ngimist on vĂ”imalik alustada otse brauseris. Brauserid aitavad muuta mĂ€ngukogemuse kasutajatele maksimaalselt mugavaks, vabastades nad tarkvara ja riistvara paigaldamise kohustusest. Samuti aitavad brauserid tagada platvormidevahelist ĂŒhilduvust mobiilsete ja lauaversioonide vahel. Õnneks toetab WebRTC suurepĂ€raselt erinevaid brausereid.

    5. Selge mÀnguliidese ja teenuse eristus
    Ma kĂ€sitlen pilvmĂ€nguteenust platvormina. Igal inimesel peaks olema vĂ”imalus platvormiga ĂŒhendada mida iganes. Praegu olen integreerinud LibRetro pilve-mĂ€nguteenusega, kuna LibRetro pakub ilusat mĂ€nguemulaatori liidest retro-mĂ€ngude mĂ€ngimiseks, nagu SNES, GBA, PS.

    6. Mitme mĂ€ngija ruumid, crowd play ja sĂŒgava lingiga ĂŒhendamine mĂ€nguga
    CloudRetro toetab palju uusi mĂ€nguviise, nagu CrowdPlay ja online mitme mĂ€ngija reĆŸiim retro-mĂ€ngude jaoks. Kui mitu kasutajat avavad sama sĂŒgava lingi erinevates arvutites, nĂ€evad nad sama kĂ€igitavat mĂ€ngu ja saavad isegi liituda sellega.

    Veelgi enam, mÀngu seisud salvestatakse pilve. See vÔimaldab kasutajatel jÀtkata mÀngimist igal ajal mistahes teisel seadmel.

    7. Horisontaalne skaleerimine
    Nagu kÔik SAAS-id tÀnapÀeval, peavad pilvmÀngud olema kavandatud horisontaalselt skaleeritavateks. 'Koordinaatori-töötaja' konstruktsioon vÔimaldab lisada rohkem töötajaid, et teenindada suuremat liiklust.

    8. Pole sidumist ĂŒhe pilvteenusega
    CloudRetro infrastruktuur on paigutatud erinevatesse pilveteenustesse (Digital Ocean, Alibaba, kohandatud pakkuja) erinevates piirkondades. Ma aktiveerin konteineris Docker kĂ€ivitamise infrastruktuuri jaoks ja seadistan vĂ”rgu parameetrid bash-skripti abil, et vĂ€ltida sĂ”ltuvust ĂŒhest pilveteenustest. Kombineerides selle NAT Traversal'iga WebRTC-s, saame paindlikkuse CloudRetro juurutamiseks igasugustes pilveplatvormides ja isegi iga kasutaja masinates.

    Arhitektuurne disain

    Töötaja: (vĂ”i voogesituse server, nagu mainitud eespool) kopeerib mĂ€nge, kĂ€itab kodeerimisvoogu ja edastab kodeeritud meedia kasutajatele. Töötaja instantsid jaotuvad ĂŒle kogu maailma ning iga töötaja suudab samal ajal töödelda mitut kasutaja seanssi.

    Koordinaator: vastutab uue kasutaja sidumise eest kÔige sobivama töötajaga voogesitamiseks. Koordinaator suhtleb töötajatega lÀbi WebSocketi.

    MÀngu olekute salvestamine: keskne kaugsalvestus kÔigi mÀngu olekute jaoks. See salvestus tagab sellised olulised funktsioonid nagu nÀiteks kaug-salvestamine/laadimine.

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    CloudRetro överstruktuur

    Kasutajaskripti

    Kui uus kasutaja avab CloudRetro sammudel 1 ja 2, nagu alloleval joonisel nĂ€ha, kĂŒsitakse koordinaatorilt koos saadaval olevate töötajate nimekirjaga esimesel lehekĂŒljel. PĂ€rast seda arvutab klient kĂ”ikide kandidaatide latentsuse sammul 3 HTTP-pĂ€ringu pingiga. See latentsuse nimekiri saadetakse seejĂ€rel tagasi koordinaatorile, et ta saaks mÀÀrata kĂ”ige sobivama töötaja kasutaja teenindamiseks. Sammul 4 allpool luuakse mĂ€ng. Kasutaja ja mÀÀratud töötaja vahel luuakse voogesituse WebRTC ĂŒhendus.
    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    Kasutajaskripti juures, pÀrast juurdepÀÀsu saamist

    Mis on töötaja sees

    MĂ€ngu ja voogesituse vood hoitakse töötaja sees eraldatult ning vahetavad seal teavet liidese kaudu. Praegu toimub see ĂŒhendus andmete edastamise kaudu mĂ€llu Golang kanalites samameelses protsessis. JĂ€rgmine eesmĂ€rk on segregatsioon, st sĂ”ltumatu mĂ€ng kĂ€ivitades teises protsessis.

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    Töötaja komponentide interaktsioon

    Peamised koostisosad:

    • WebRTC: kliendikomponent, mis vĂ”tab kasutaja sisendi ja edastab serverilt kodeeritud meedia.
    • MĂ€ngu emulaator: mĂ€ngu komponent. Libretro raamatukogu abil suudab sĂŒsteem mĂ€ngu kĂ€ivitada samas protsessis ning sisemiselt salvestada meedia ja sisendvoo.
    • MĂ€ngu raame salvestatakse ja saadetakse kodeerijale.
    • Pilt/heli kodeerija: kodeerimisvoog, mis vĂ”tab meedia raame, kodeerib neid taustal ja edastab kodeeritud pilte/heli.

    Rakendamine

    CloudRetro toetub WebRTC-le kui peamisele tehnoloogiale, seega enne, kui sĂŒvenen Golangi rakendusse, otsustasin rÀÀkida WebRTC-st endast. See on suurepĂ€rane tehnoloogia, mis on mind palju aidanud saavutada andmevoogude edastamise viivitus vaid murdosa sekundist.

    WebRTC

    WebRTC on mĂ”eldud kvaliteetsete peer-to-peer ĂŒhenduste tagamiseks natiivsetes mobiilirakendustes ja brauserites lihtsate API-de kaudu.

    NAT Traversal

    WebRTC on tuntud oma NAT Traversal funktsionaalsuse poolest. WebRTC on loodud peer-to-peer suhtluseks. Selle eesmĂ€rk on leida sobivaim otseĂŒhendus, vĂ€ltides NAT-gate’e ja tulemĂŒĂŒre peer-to-peer suhtluseks protsessi kĂ€igus, mida nimetatakse ICE. Selle protsessi kĂ€igus leiavad WebRTC API-d teie avaliku IP-aadressi STUN-serverite kaudu ja edastavad selle edasi edastusserverile (TURN), kui otsest ĂŒhendust ei suudeta luua.

    Kuid CloudRetro ei kasuta tĂ€ielikult seda vĂ”imalust. Selle peer-to-peer ĂŒhendused ei toimu kasutajate vahel, vaid kasutajate ja pilveserverite vahel. Serveri mudeli osal on vĂ€hem piiranguid otsese suhtluse jaoks kui tavalise kasutaja seadmel. See vĂ”imaldab avada sissepÀÀsu porte vĂ”i kasutada avalikke IP-aadresse otse, kuna server ei asu NAT-i taga.

    Varem tahtsin muuta projekti mĂ€ngude levitamise platvormiks Cloud Gamingu jaoks. Idee oli vĂ”imaldada mĂ€ngude loojatel pakkuda mĂ€nge ja voogedastusressursse. Kasutajad suhtleksid otse teenusepakkujatega. Sellises detsentraliseeritud mooduses on CloudRetro lihtsalt keskkond kolmandate osapoolte voogedastusressursside ĂŒhendamiseks kasutajatega, mis muudab selle skaleeritavamaks, kui see ei ole enam hostimise koormatud. WebRTC NAT Traversali roll on siin vĂ€ga oluline, et hĂ”lbustada peer-to-peer ĂŒhenduse loomist kolmandate osapoolte voogedastusressurssidega, mis lihtsustab looja ĂŒhendamist vĂ”rku.

    Videote sĂŒrvendamine

    Videotehnoloogia kokkusurumine on kriitiline osa töövoost, mis mĂ€ngib suurt rolli voo sujuvuses. Kuigi ei ole vajalik teada kĂ”iki VP8/H264 kodeerimise ĂŒksikasju, aitab mĂ”istmine mĂ”ista voogesituse videokiirusparameetreid, lahendada ootamatuid kĂ€itumisi ja kohandada viivitust.

    Videotehnoloogia kokkusurumine voogedastusteenuse jaoks on keeruline ĂŒlesanne, kuna algoritm peab tagama, et kodeerimise aeg + edastamisaeg + dekodeerimisaeg oleks vĂ”imalikult vĂ€ike. Lisaks peab kodeerimisprotsess olema jĂ€rjepidev ja katkematu. MĂ”ned vastastikused jĂ€releandmised kodeerimisel ei tule kĂ”ne alla – nĂ€iteks ei saa me eelistada pikka kodeerimisaega vĂ€iksemale failisuurusele ja dekodeerimisaegale vĂ”i kasutada jĂ€rjepidevat kokkusurumist.

    Videotehnoloogia kokkusurumise idee on jĂ€tta kĂ”rvale tarbetud bitid teabest, sĂ€ilitades samal ajal lubatud tĂ€psuse taseme kasutajatele. Lisaks ĂŒksikute staatiliste piltide kodeerimisele teeb algoritm jĂ€reldusi praeguse kaadriga eelneva ja jĂ€rgmise kaadri pĂ”hjal, edastades seega ainult nende erinevuse. Nagu nĂ€ha Pacmani nĂ€itest, edastatakse ainult diferentsiaalsed punktid.

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    Videokaadrite vÔrdlemine Pacmani nÀitel

    Heli kokkusurumine

    Sarnaselt videotehnoloogia kokkusurumisega, loob heli kokkusurimise algoritm andmeid, mida inimene ei suuda tajuda. Opus on hetkel parim töötav helikooder. See on vĂ€lja töötatud helilainete edastamiseks jĂ€rjepideva andmevoo protokolli, nagu RTP (Real Time Transport Protocol – reaalajas edastusprotokoll), kaudu. Selle latentsus on vĂ€iksem kui mp3-l ja aac-l, samas kui kvaliteet on kĂ”rgem. Latentsus on tavaliselt umbes 5–66,5 ms.

    Pion, WebRTC Golangis

    Pion on avatud lÀhtekoodiga projekt, mis toob WebRTC Golangi. Erinevalt tavapÀrasest natiivsete C++ WebRTC teekide kirjutamisest on Pion WebRTC natiivne Golangi teostus, millel on parem jÔudlus, Go-iga integreerimine ning versioonihaldus WebRTC protokollide jaoks.

    Raamatukogu vÔimaldab ka edastada andmeid suure mahtude suurepÀraste sisseehitatud moodulitega, mille latentsus on alla sekundi. Sellel on oma STUN, DTLS, SCTP jne teostus ning mÔned eksperimendid QUICi ja WebAssemblyga. See avatud lÀhtekoodiga raamatukogu on tÔeliselt hea Ôppimise allikas koos suurepÀrase dokumentatsiooni, vÔrgu protokollide teostuse ja toredate nÀidistega.

    Pioni kogukond, mida juhib vĂ€ga kirglik looja, on ĂŒsna elav ja seal toimub palju kvaliteetseid arutelusid WebRTCi kohta. Kui sind huvitab see tehnoloogia, liitu http://pion.ly/slack – Ă”pid palju uut.

    CloudRetro kirjutamine Golangis

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    Worker'i teostamine Go-s

    Go kanalid tegevuses

    Go kanalite kauni disaini tĂ”ttu lihtsustatakse oluliselt sĂŒndmuste voogedastamise ja paralleelsuse probleeme. Nagu diagrammil, töötavad erinevates GoRoutines samaaegselt mitmed komponendid. Iga komponent haldab oma olekut ja suhtleb kanalite kaudu. Golangi valikuline vĂ€ide sunnib töötlema ĂŒksikute aatomite sĂŒndmusi iga mĂ€ngu ajal (game tick). See tĂ€hendab, et sellise disaini korral ei ole lukustamine vajalik. NĂ€iteks, kui kasutaja salvestab, on vajalik kogu mĂ€ngu oleku snapshot. See olek peab olema jĂ€rjepidev, teostades sisendi kuni salvestamine on lĂ”petatud. Iga mĂ€ngu tick'i ajal saab backend töödelda ainult salvestus- vĂ”i sisendoperatsiooni, mis teeb protsessi ĂŒheselt turvaliseks.

    func (e *gameEmulator) gameUpdate() {
    for {
    	select {
    		case <-e.saveOperation:
    			e.saveGameState()
    		case key := <-e.input:
    			e.updateGameState(key)
    		case <-e.done:
    			e.close()
    			return
    	}
        }
    }

    Fan-in / Fan-out

    See Golangi malle sobib suurepĂ€raselt minu CrowdPlay ja Mitme mĂ€ngija kasutusjuhtumiteks. Selle mustri jĂ€rgimisel voogedastatakse kĂ”ik kasutaja sisendid ĂŒhte tuuma sisendkanalisse. MĂ€ngu meedia edastatakse seejĂ€rel kĂ”igile ĂŒhes ruumis olevatele kasutajatele. Nii saavutame mĂ€ngu oleku jagamise mitme erineva kasutaja mĂ€nguseansi vahel.

    Pilvegaming avatud koodiga WebRTC-l: p2p, mitme mÀngijaga, null latentsus.
    SĂŒnkroonimine erinevate seansside vahel

    Golang'i puudused

    Golang ei ole ideaalne. Kanal on aeglane. Kui vĂ”rrelda Go kanalit lukustuse korral, on see lihtsalt lihtsam viis paralleelsete ja voogedastuse sĂŒndmuste kĂ€sitlemiseks, kuid kanal ei paku parimat jĂ”udlust. Kanali all on keeruline lukustuse loogika. SeetĂ”ttu tegin ma mĂ”ned muudatused rakenduses, rakendades uuesti lukustusi ja aatomilisi vÀÀrtusi kanaleid asendades jĂ”udluse optimeerimiseks.

    Lisaks on Golangi prĂŒgikorjaja haldamata, mis pĂ”hjustab mĂ”nikord kahtlaselt pikki pause. See segab oluliselt reaalajas voogesituse rakenduse tööd.

    CGO

    Projekti koostamisel kasutatakse olemasolevat VP8/H264 avatud lĂ€htekoodiga Golangi teeki meedia tihendamiseks ja Libretro mĂ€ngu emulaatorite jaoks. KĂ”ik need teegid on lihtsalt Go-s C teegi ĂŒmberpakendamisest. CGO. MĂ”ned puuded on loetletud selles Dave Cheney postituses. Probleemid, millega ma silmitsi seisnud olen:

    • CGO-s ei ole vĂ”imalik katki minna, isegi kasutades Golangi RecoveryCrash'i;
    • pole vĂ”imalik tuvastada jĂ”udluse kitsaskohti, kui me ei saa tuvastada detailseid probleeme CGO-s.

    KokkuvÔte

    Sain oma eesmĂ€rgi – mĂ”istsin pilvepĂ”hiseid mĂ€nguteenuseid ja lĂ”in platvormi, mis aitab mul koos sĂ”pradega nostalgilisi retro-mĂ€nge veebis mĂ€ngida. Selle projekti loomine ei oleks olnud vĂ”imalik ilma Pioni teegi ja Pioni kogukonna toeta. Olen ÀÀrmiselt tĂ€nulik selle intensiivse arenduse eest. WebRTC ja Pioni pakutud lihtsad API-d tagasid sujuva integreerimise. Minu esimene tĂ”estuskontseptsioon avaldati samal nĂ€dalal, vaatamata sellele, et ma ei teadnud sellest eelnevalt ĂŒhepunktiĂŒhenduse (P2P) kohta.

    Hoolimata integreerimise lihtsusest on P2P-voogedastus tÔeliselt keeruline valdkond arvutiteadlastele. See peab tegelema keerukate mitme aasta vanuste vÔrguarhitektuuridega, nagu IP ja NAT, et luua vÔrdne sessioon. Selle projekti töös olen omandanud palju vÀÀrtuslikke teadmisi vÔrgu ja jÔudluse optimeerimise kohta, seetÔttu soovitan kÔigil proovida P2P-tooteid WebRTC abil ehitada.

    CloudRetro teenindab kÔiki kasutusstsenaariume, mida ma ootasin, kui vaadata seda retrosÔber. Siiski arvan, et projektis on palju valdkondi, mida saaksin parendada, nÀiteks vÔrgu usaldusvÀÀrsemaks ja tootlikumaks tegemine, mÀngude graafika kvaliteedi parandamine vÔi vÔimalus jagada mÀnge kasutajate vahel. Ma töötan selle nimel kÔvasti. Palun jÀlgige projekti ja toetage seda, kui see teile meeldib.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster