Netty vs Apache MINA

Abi jos suteikia maždaug tokį patį funkcionalumą. Ką turėčiau pasirinkti, kad galėčiau sukurti savo didelio našumo TCP serverį? Kokie yra privalumai ir trūkumai?

Nuorodų nuorodos:

Apache MINA ( šaltinis )

Netty ( šaltinis )

137
28 окт. GabiMe nustatė spalio 28 d 2009-10-28 17:48 '09 at 17:48 PM 2009-10-28 17:48
@ 7 atsakymai

Nors „MINA“ ir „Netty“ siekia panašių tikslų, praktiškai jie yra visiškai skirtingi, ir jūs turite atidžiai apsvarstyti savo pasirinkimą. Mums pasisekė, kad mes turėjome daug patirties su MINA, ir mes turėjome laiko žaisti su Netty. Mums ypač patiko „Cleaner“ API ir daug geresnė dokumentacija. Popieriuje našumas buvo geresnis. Dar svarbiau, kad žinojome, kad „Trust Lee“ bus pasirengusi atsakyti į visus mūsų turimus klausimus, ir jis tai padarė.

Netty lengviau rasti viską. Laikotarpis Nors bandėme įgyvendinti tą patį funkcionalumą kaip ir MINA, mes tai darėme nuo nulio. Po puikių dokumentų ir pavyzdžių, mes turime daugiau funkcionalumo daug mažiau kodų.

„Netty Pipeline“ mums geriau dirbo. Tai kažkaip paprasčiau nei MINA, kur viskas yra tvarkytoja, ir jūs nuspręsite, ar tvarkyti aukštesniojo lygio įvykius, vėlesnius įvykius, ar vartoti žemesnio lygio dalykus. „Pakartotinio“ dekoderio baitų išlyginimas buvo beveik malonus. Taip pat buvo labai malonu, kad taip lengvai būtų galima konfigūruoti konvejerį.

Tačiau „Netty“ žvaigždės atrakcija „imho“ yra gebėjimas kurti „dujotiekio“ tvarkytojus su „spanning one“. Jūs tikriausiai jau skaitėte apie šią aprėpties anotaciją jau dokumentacijoje, bet iš tikrųjų jis suteikia jums statusą vienoje kodo eilutėje. Be jokios painiavos, sesijos kortelės, sinchronizavimo ir kt. Galime tik paskelbti normalius kintamuosius (tarkim, „naudotojo vardas“) ir juos naudoti.

Bet tada mes pasiekėme kontrolinį punktą. Mes jau turėjome serverį su keliais protokolais MINA, kuriame mūsų taikomųjų programų protokolas dirbo per TCP / IP, HTTP ir UDP. Kai mes perėjome į „Netty“, į sąrašą per kelias minutes pridėjome SSL ir HTTPS! Iki šiol taip gerai, bet kai jis atėjo į UDP, supratome, kad buvome pabėgę. MINA tikrai patiko, kad galėtume peržiūrėti UDP kaip „prijungtą“ protokolą. Netty neturi tokios abstrakcijos. UDP yra nesusijęs, ir Netty tai laiko. „Netty“ suteikia daugiau nesiliečiančio UDP simbolio mažesniu lygiu nei MINA. Yra dalykų, kuriuos galite padaryti su UDP pagal „Netty“, nei jūs negalite pagal aukštesnio lygio abstrakciją, kurią teikia „MINA“, bet kuriuo mes pasitikėjome.

Ne taip lengva pridėti „prijungtą UDP apvalkalą“ ar kažką kitą. Atsižvelgiant į laiko apribojimus ir pasitikėjimo patarimus, geriausias būdas tęsti savo „Netty“ transporto paslaugų teikėją, kuris nebūtų greitas, galų gale turėjome atsisakyti „Netty“.

Taigi, atidžiai išnagrinėkite skirtumus tarp jų ir greitai eikite į sceną, kurioje galite išbandyti visas sudėtingas funkcijas, kurios veikia kaip tikėtasi. Jei esate įsitikinęs, kad Netty atlieka darbą, aš su juo eisiu nedvejodamas MINA. Jei einate iš MINA į Netty, tas pats pasakytina, bet verta pažymėti, kad abi API yra tikrai skirtingos, ir turėtumėte apsvarstyti virtualų susirašinėjimą „Netty“.

195
01 марта '10 в 15:22 2010-03-01 15:22 atsakymą pateikė josh apie 01'10 m. 15:22 2010-03-01 15:22

Dėl sudėtingumo ir palyginti prastų eksploatacinių savybių MINA turi daugiau savybių. Kai kurios iš šių funkcijų buvo pernelyg sudėtingos, kad jas būtų galima pašalinti, net jei naudotojui jų nereikia. Netty'e bandžiau išspręsti tokias projektavimo problemas, išlaikant gerai žinomus MINA privalumus.

Šiuo metu dauguma „MINA“ funkcijų yra prieinamos „Netty“. Mano nuomone, Netty turi švaresnę ir dokumentais pagrįstą API, nes Netty yra bandymas atkurti MINA nuo nulio ir išspręsti žinomas problemas. Jei pastebėsite, kad trūksta svarbios funkcijos, nedvejodami rašykite savo pasiūlymus forume. Norėčiau atsakyti į jūsų klausimus.

Taip pat svarbu pažymėti, kad „Netty“ turi greitesnį vystymosi ciklą. Tiesiog patikrinkite naujausių problemų išleidimo datą. Be to, turėtumėte žinoti, kad MINA komanda pereis prie pagrindinio MINA 3 perrašymo, o tai reiškia, kad jie visiškai nutraukia API suderinamumą.

128
04 янв. atsakymą pateikė trustin Jan 04 2010-01-04 18:14 '10, 18:14, 2010-01-04 18:14

Bandžiau 2 „Google Protobuffer RPC“ vykdytojus, kuriuose vienas buvo pagrįstas „Netty“ (netty-protobuf-rpc), o kitas buvo pagrįstas „mina“ (protobuf-mina-rpc). Netty visuomet buvo spartesnis (+ - 10%) visiems pranešimo formatams, kurie palaiko bendrąjį našumo užklausą „Netty“ svetainėje. Kadangi norite, kad naudodamiesi tokia RPC biblioteka norėtumėte išspausti kiekvieną kodo efektyvumą, baigiau rašyti „ Netty“ pagrįstą „protobuf-rpc-pro“ , aš anksčiau naudojosi „MINA“, tačiau mano, kad jų 2.0 medžiagos dokumentacija turi didelių skylių, atgalinio suderinamumo API pažeidimas - didelis minusas.

21
27 сент. atsakymas pateikiamas 27 sek . 2010-09-27 00:52 '10 - 0:52 2010-09-27 00:52

MINA ir Netty iš pradžių buvo suprojektuoti ir pastatyti to paties autoriaus. Štai kodėl jie yra tiek panašūs. MINA yra sukurta šiek tiek aukštesniame lygyje, su keliomis funkcijomis, o Netty veikia šiek tiek greičiau. Manau, kad nėra daug skirtumų, pagrindinės sąvokos yra tos pačios.

14
26 нояб. Atsakymas pateikiamas „ Hardcoded“ lapkričio 26 d. 2009-11-26 14:09 '09, 14:09, 2009-11-26 14:09

„Netty“ galite rasti kai kurias ataskaitas. Kaip tikėtasi :-), jie nurodo, kad Netty yra geriausias rezultatas.

Aš niekada nenaudojau „Netty“, bet aš jau naudoju „MINA“ TCP protokolui įgyvendinti. Kodavimo ir dekodavimo įgyvendinimas buvo paprastas, tačiau baigtinės būsenos mašinos įgyvendinimas nebuvo toks paprastas. MINA suteikia tam tikras klases, kurios padės jums įgyvendinti valstybinę mašiną, tačiau juos sunku naudoti. Galų gale, mes nusprendėme nuversti MINA ir įgyvendinti protokolą nuo nulio, ir nenuostabu, kad baigėme greitesnį serverį.

9
28 окт. atsakymas duotas jassuncao spalis 28. 2009-10-28 23:57 '09, 23:57, 2009-10-28 23:57

Aš norėčiau netty.

„Twitter“ taip pat pasirinko „Netty“, kad sukurtų naują paieškos variklį.

Nuoroda: „ Twitter“ paieška dabar yra 3 kartus greitesnė.

Mes pasirinkome „Netty“ kai kuriems kitiems konkurentams, pvz., „Mina“ ir „Jetty“, nes jame yra švaresnė API, geresnė dokumentacija, o dar svarbiau, kad kai kurie kiti „Twitter“ projektai naudoja šią struktūrą.

5
03 июля '14 в 7:17 2014-07-03 07:17 atsakymą pateikė ThoQ liepos 3 d. 14 d., 7:17 2014-07-03 07:17

Aš tik naudoju MINA, kad sukurtume nedidelį http serverį. Didžiausios iki šiol iškilusios problemos:

  • Jis išsaugos jūsų „užklausą“ ir „atsakymą“ atmintyje. Tai tik problema, nes aš norėčiau naudoti protokolą http. Tačiau galite naudoti savo protokolą, kad galėtumėte tai apeiti.
  • Jei norite pateikti didelius failus, nėra galimybės pateikti srauto iš disko. Vėlgi, galite patekti į savo protokolą.

Gražūs dalykai:

  • Galima tvarkyti daugelį jungčių
  • Jei nuspręsite įgyvendinti tam tikrą paskirstytą darbo sistemą, tada žinant, kada vienas iš jūsų mazgų nustoja ir praranda ryšį, naudinga iš naujo paleisti darbą ant kito mazgo.
4
05 нояб. atsakymą pateikė gomesla lapkričio 5 d. 2009-11-05 04:15 '09 4:15 am 2009-11-05 04:15