„Kotlin Ktor vs Go“ spektaklis

„Du žmonės susidūrė su šalmais ant baltų motociklų, lenktyniaudami takeliu po žydru dangumi“, autorius Joe Neric svetainėje „Unsplash“

Įvadas

Kotlin yra nauja „Jetbrains“ programavimo kalba. Po to, kai „Google“ paskelbė, kad ji yra oficialiai palaikoma „Android“ kūrimo kalba, ji sulaukė daug palaikymo ir meilės iš kūrėjų.

„Ktor“ yra kotlinui sukurta internetinių programų kūrimo sistema.

„Go“ yra gana sena kalba, sukurta „Google“ ir „Google“. Jis visada giriamas už našumą ir plačiai naudojamas paskirstytos programinės įrangos programavime. Pavyzdžiui, „Kubernetes“, „Docker“ yra pastatyti ant golango. Pirmiausia, norint naudoti kaip serverį, „Go“ nereikia jokios interneto struktūros. Jis turi „http“ paketą, kuris padeda paleisti serverio režimą ir tvarkyti užklausas.

Kodėl toks palyginimas

Kaip minėjau, „go“ yra giriamas už jos, kaip serverio kalbos, naudojimą kuriant paskirstytą programinę įrangą. „Go lang“ teikia didžiulę naudą, nes įgyvendina asinchroninį programavimą. Async programavimas pasiekiamas kartu su įprastomis programomis ir kanalais. „Goroutines“ yra lengvi siūlai, kuriuos tvarko „Go runtime“. Jie nesusiejami tiesiogiai su OS gijomis (kaip „Java“) ir lengvai kuriami bei prižiūrimi.

Kotlin taip pat sugalvojo pati įdiegti lengvus siūlus, vadinamus korutinu. Jie labai panašūs į gorutinus. Tiesą sakant, branduoliai, kaip apibrėžta „jetbrains“, yra skaičiavimai, kuriuos galima pakabinti neužblokuojant sriegio. „Ktor“ naudoja pagrindinius planus asinchroniniam serverio programavimui pasiekti.

Sąranka

Aš naudoju „vultr cloud“, norėdamas išbandyti sąranką, 4 procesorių kompiuterį su 8 GB RAM, mašinos etalonus galite rasti jų kainų puslapyje.

Našumui matuoti naudosiu „Vegeta“ apkrovos tikrinimo įrankį. Čia rasite informacijos apie tai, kaip įdiegti ir naudoti šį įrankį,

Paleiskime

Negyvas paprastas serveris

Aš kuriu api, kuris priima užklausos parametrus vardas ir pavardė ir grąžina juos sveikindamas.

„Ktor“ serverisEikite į langų serverį

Abu serveriai veikia 9001 prievade, o bandomajame kompiuteryje vienu metu veikia tik vienas serveris.

„Vegeta“ užpuls serverį, kuris veikia aukščiau kodo po vieną,

echo "GET http: // : 9001" | vegetacijos užpuolimas - 1 000 greičio 1m | vegeta ataskaita

„Vegeta“ paspaus serverį 1 000 sekundžių greičiu per 1 minutę. Pažiūrėkime, kaip tai elgiasi mūsų serveris.

Čia yra „Go“ serverio vegetacijos ataskaita

Prašymai [iš viso, įkainis] 60000, 1000,02
Trukmė [iš viso, ataka, palaukite] 1m0.014352251s, 59.998999s, 15.353251ms
Lėšos [vidutinis, 50, 95, 99, maks.] 15.849633ms, 15.435193ms, 17.240642ms, 26.422058ms, 236.965935ms
Baitai [iš viso, vidurkis] 1320000, 22.00 val
Baitai išeina [bendra, vidutinė] 0, 0,00
Sėkmė [santykis] 100,00%
Būsenos kodai [kodas: skaičius] 200: 60000

„Kotlin Ktor“ serverio rezultatus rasite čia

Prašymai [iš viso, įkainis] 60000, 1000,02
Trukmė [iš viso, ataka, palaukite] 1m0.014720347s, 59.998998s, 15.722347ms
Lėšos [vidutinis, 50, 95, 99, maks.] 16.078171ms, 15.713461ms, 17.287197ms, 24.476362ms, 110.46998ms
Baitai [iš viso, vidurkis] 1080000, 18.00
Baitai išeina [bendra, vidutinė] 0, 0,00
Sėkmė [santykis] 100,00%
Būsenos kodai [kodas: skaičius] 200: 60000

Našumas yra gana panašus, „Kotlin“ maksimalus delsimas yra beveik pusė „lang lang“. „Baitų įvesties“ skirtumai atsiranda dėl to, kad „Ktor“ grąžina vardo „vardas ir pavardė“ eilutes, tačiau „golang“ grąžina objekto reikšmes. Aš šiuos testus vykdžiau bent 5 kartus kiekviename serveryje ir paskelbiau patikimiausius rezultatus.

Iš aukščiau pateiktos paprastos analizės galiu pasakyti, kad „Ktor“ tvarko apkrovą, įgyvendindama asinchroninį valdymą. „Go“ yra serverio pusės programavimo lyderis, kur labiausiai reikia našumo. Kotlin gali būti geras varžovas, atsižvelgiant į turimus išteklius ir kūrėjų palaikymą, būtų įdomu nuolat stebėti šioje srityje.

Gerai, kas toliau

Noriu toliau analizuoti kai kuriuos realaus pasaulio pavyzdžius, pvz., Naudoti „Ktor“ ir „Golang“ kartu su kai kuriais db, pvz., „PostgreSQL“ ar „MongoDB“, ir patikrinti, kaip jie abu veikia. Tačiau tokių naudojimo atvejų našumas priklauso nuo daugelio kitų veiksnių, tokių kaip db diegimas ir db prieigai naudojamos tvarkyklės, json analizė.