Programavimas

13 „Java“ sistemos, skirtos tvirtoms mikrotarnoms

Tai buvo ilga kelionė „Java“, kuri prasidėjo kaip lingua franca dėžutės ant televizoriaus viršuje tais laikais, kai televizoriuose nebuvo integruoto „Roku“ ar „Chromecast“. Tada „Java“ turėjo nuosavybės teise valdyti pasaulinį internetą, animuodama naršyklę, kol „JavaScript“ pasirodė ir alkūnė ją iš kelio.

„Java“ galų gale rado nišą serverių ūkiuose, kur kažkada buvo pakankamai skirtingų mikroschemų architektūrų ir operacinių sistemų, kad „rašyti, kai paleisiu bet kur“ žada “. Šiuose serverių ūkiuose „Java“ gyveno, mėgstama įmonių IT parduotuvių, priklausančių nuo patikimumo, ir kūrėjų, mėgstančių tvirtą spausdinimą.

Tuo tarpu „JavaScript“ apskritai ir ypač „Node.js“ metė iššūkį „Java“ serveryje, naudodamiesi savo dideliu pralaidumu ir be sriegių sparta perimdami didžiulį srautą žiniatinklyje. „Node“ pritraukė naujausių serverio pusės programuotojų vaizduotę, siūlydamas ne tik greitį ir efektyvų išteklių naudojimą, bet ir paprastą kodą, kuris veikia tiek kliente, tiek serveryje.

Nepaisant išaugusios konkurencijos, „Java“ ir toliau ne tik išgyvena, bet ir tobulėja. Daugelis komandų, kurioms pavesta sukurti mikropaslaugų architektūras, ir toliau naudoja „Java“. Pagrindinė priežastis turi būti ta, kad ši technologija daugelį metų buvo išbandyta fronte, analizuojant HTTP užklausas. „Sun“ sukūrė tvirtą virtualią mašiną, o „Oracle“ toliau ją puoselėja ir palaiko.

Kita priežastis turi būti nuolatinė kalbos raida. „Java 8“ siūlo tvirtą funkcinių kalbų, tokių kaip „Scala“ ir „Kotlin“, palaikymą. JVM dabar yra daugelio geriausių kompiuterinės kalbos kūrimo eksperimentų pagrindas. Dešimtys naujų kalbų gali sudaryti „Java“ baito kodą ir susieti vienas kitą, kad sudėtingi projektai veiktų kartu. Daugelis sklandžiai veikiančių JVM gali būti sukurti naudojant „Java“ ir daugelio kitų kalbų derinį.

Vis dėlto didžiausia priežastis turi būti vien inercija. Kaip rašau, „Dice“ yra nurodytas 371 darbas COBOL programuotojams. Yra daug daug daugiau darbų, kuriuose yra žodis „Java“. Ar nenuostabu, kad sumanios komandos žiūri į savo didžiulius senstančio „Java“ kodo krūvius ir mano, kad paprasčiausias sprendimas yra tiesiog pridėti šonines duris, kurios išspjauna duomenis kaip JSON duomenų struktūras? Voilà. Senasis kodas vis veikia, tačiau jis veikia kaip moderni mikroprieša prie šių šoninių durų.

Visos šios parinktys ir dar daugiau užtikrina, kad „Java“ ir toliau vaidins svarbų ir gyvybiškai svarbų vaidmenį mikroservisų revoliucijoje. Nenuostabu, kad „Java“ atvirojo kodo bendruomenė sekė savo keliu, sukurdama daug naujų galimybių „Java“ programuotojams, kurie turi išmokyti savo „Java“ kodo kalbėti kaip mikroservisa.

Pateikiame 13 atvirojo kodo parinkčių, kurias „Java“ kūrėjai naudoja, kad gautų sprendimus, kurie visur sukuria mikroserviso architektūros pagrindą, sąrašą.

Pavasario batas

„Java“ pasaulis ilgą laiką kūrė „Spring“ programas. „Spring Boot“ yra tam tikra „Spring“ versija, kuri palengvina procesą, tvarkydama daugybę konfigūracijos detalių. „Spring Boot“ buvo sukurtas siekiant automatizuoti bet kokių „Spring“ projektų, ne tik mikropaslaugų, pradžią. Kad viskas būtų dar paprasčiau, atlikę programą, „Spring Boot“ įmaišoma į interneto serverį ir išspjauna vieną JAR failą, kuris yra beveik viskas, ko jums reikia, išskyrus JVM. Pagalvokite apie tai kaip apie originalų „Docker“ konteinerį.

Visą šį sumanumą vertina daugelis žmonių, kuriems pavesta kurti mikropaslaugas, nes visa konfigūracija tampa erzina, kai tenka tai daryti vėl ir vėl kiekvienai iš keliolikos ar daugiau mikropaslaugų. Jei „Spring Boot“ gali tai automatizuoti, tai daug lengviau išmėginti kelias dešimtis mikropaslaugų.

Su „Spring“ sukurtos mikropaslaugos vadovaujasi ta pačia MVC filosofija kaip ir makrokomandos žiniatinklio programos, kurias kūrėme daugelį metų. Ši sistema naudojasi visais giliais ryšiais, sukurtais per daugelį metų „Java“ kūrimo, įskaitant integraciją su visomis pagrindinėmis ir mažomis duomenų saugyklomis, LDAP serveriais ir pranešimų siuntimo įrankiais, tokiais kaip „Apache Kafka“. Taip pat yra dešimtys mažų ir ne ką mažiau funkcijų, skirtų palaikyti veikiančią serverių kolekciją, tokių funkcijų kaip „Spring Vault“ - įrankis, skirtas palaikyti gamybinių serverių reikalingas paslaptis, slaptažodžius ir kredencialus. Visi šie pranašumai rodo, kodėl „Java“ programuotojai jau daugelį metų prisijungia prie grupės.

„Eclipse MicroProfile“

2016 m. Kai kurie „Java Enterprise“ bendruomenės gerbėjai apsidairė ir nusprendė išvalyti visas „Java Enterprise Edition“ galimybes, kad žmonės galėtų kurti paprastas mikropaslaugas su klasikinėmis dalimis. Jie išmetė stebėtinai daug bibliotekų, tačiau pasiliko kodą REST užklausoms apdoroti, JSON analizuoti ir valdyti priklausomybę. Tai, kuo jie baigėsi, pavadinta „Eclipse MicroProfile“, buvo greita ir paprasta.

Nuo tada „MicroProfile“ bendruomenė sudarė paketą išleisti naujas versijas kas ketvirtį ir pridėjo naują kodą, kad mikropaslaugos veiktų sklandžiai ir saugiai. Kūrimo procesas ir kodo struktūra bus labai gerai pažįstama visiems, kurie gyveno „Java EE“ pasaulyje, tačiau nesibaigiantys konfigūracijos vargai buvo pašalinti. Tai įrodymas, kad senus šunis galite išmokyti naujų gudrybių.

Dropwizard

Kai „Dropwizard“ pasirodė 2011 m., Jis „Java Enterprise“ kūrėjams atvėrė akis, kiek mažai reikia kodo. „Dropwizard“ sistema pateikė labai paprastą plėtros modelį su daugeliu svarbių sprendimų, priimtų už jus, ir toliau žengė šiuo keliu. Pridedate tam tikrą verslo logiką, tada visa kita yra sukonfigūruota jums pagal susitarimą. Rezultatas - ploni JAR failai, kuriuos vartotojai giria už greitą paleidimą.

Didžiausias apribojimas gali būti priklausomybės injekcijos nebuvimas. Jei norite naudoti priklausomybės injekciją, kad jūsų kodas būtų švarus ir laisvai susietas, bibliotekas turėsite pridėti patys. Nėra „Dropwizard“ būdo tai padaryti, kitaip nei pavasario pasaulyje. Tačiau dauguma kitų prabangos prekių dabar yra palaikomos, įskaitant kirtimus, sveikatos patikrinimus ir atsparumo užtikrinimo kodą. Jums nereikės aukoti per daug.

„WildFly Thorntail“

„Red Hat“ žmonės sukūrė savo „MicroProfile“ versiją kartu su aptakiu konfigūravimo įrankiu. Iš pradžių karkasas vadinosi „WildFly Swarm“, tačiau tada jis buvo pervadintas į „Thorntail“. „Thorntail“ svetainė padeda jums sukurti savo „Maven“ sukūrimo failą, nurodant jums reikalingas funkcijas. Tada Mavenas rūpinasi visko surinkimu.

„Thorntail“ taip pat aptiks pagrindinius komponentus, kurių jums reikės, nuskaitydami kodą, tačiau galite tai nepaisyti naudodami BOM (medžiagų sąrašu) failą. Kai viskas bus paleista, „Thorntail“ pašalins „Java Enterprise Edition“ dalis, kurios nebus naudojamos, ir sukurs mažą ir paruoštą naudoti JAR failą su viena komanda - slogi funkcija, leidžianti „Thorntail“ projektui ją pavadinti „Uber“ -JAR. Tai dar vienas būdas laikytis „Java Enterprise Edition“ tradicijos, nelaikant viso sunkaus bagažo.

Helidonas

„Helidon“ išėjo tik keletą mėnesių nuo pranešimų spaudai ir pirmojo įsipareigojimo „GitHub“ saugyklai, tačiau sistema jau sulaukia tokio dėmesio, kokį garantuoja „Oracle“ palaikymas. Nors „Java“ visata yra didžiulė, daugybė jos vis dar sukasi aplink „Oracle“.

„Helidon“ architektai laikėsi daugybės tų pačių temų, kurios kartojamos kituose projektuose čia. Išplėškite „Java Enterprise Edition“ versiją ir išlaikykite lengvą, servletais pagrįstą pagrindą, kuris pelnė pasaulio pasitikėjimą. „Helidon“ atveju kūrėjai pradėjo nuo „Netty“ ir pridėjo tik tiek kodo, kad galėtų atlikti maršrutą ir tvarkyti klaidas. Kad viskas būtų įdomu, jie pritaikė du pagrindinius kodo modelius, vadinamąsias SE ir MP versijas.

„Helidon SE“ atrodys labai gerai pažįstama „Node.js“ programuotojams, turint ilgą funkcijų skambučių grandinę, sujungtą taškais. „JAH-RS“ naudojantiems „Java“ programuotojams „Helidon MP“ atrodys labiau pažįstama. Taip pat yra keletas naudingų ir gerai vertinamų įrankių, skirtų patikrinti serverių būklę arba sekti duomenų srautą per mikroservikų mišką. Tai yra įtikinamos priežastys ištirti potencialą net ir be „Oracle“ palaikymo.

Kriketas

Dar viena greito API kūrimo sistema yra „Cricket“. Kriketas yra nedidelis, nepaisant to, kad jame yra keli priedai, pvz., Raktų vertės duomenų saugykla, kad sutaupytumėte prisijungdami prie duomenų bazės ir tvarkaraščio, kad galėtumėte valdyti pasikartojantį fono apdorojimą. Nėra jokių kitų priklausomybių, kurios pridėtų komplikacijų ar užrakinimo, todėl pridėti kodą prie „Cricket“ ir paleisti nepriklausomą mikroservisą yra gana paprasta.

Džersis

Vienas iš standartinių būdų kuriant žiniatinklio paslaugą yra „Java API for RESTful Web Services“ (dar žinomas kaip JAX-RS), bendroji specifikacija, įdiegta Džersio sistemoje. Metodas labai priklauso nuo anotacijų naudojimo norint nurodyti kelio atvaizdavimą ir grąžinimo detales. Visa kita nuo JSON parametrų analizės ir pakavimo tvarko Džersis.

Pagrindinis „Jersey“ pranašumas yra tai, kad jis įgyvendina JAX-RS standartą - savybę, kuri yra pakankamai pageidautina, kad kai kurie kūrėjai sujungtų „Jersey“ su „Spring Boot“ ir mėgautųsi kartu.

žaisti

Vienas iš geriausių būdų patirti JVM kalbų galią yra „Play“ pagrindas - „Scala“ kodo krūva, susiejanti su „Java“ ar bet kuria kita JVM kalba. Fondas yra labai modernus, nesinchroninis, be pilietybės modelis neapkrauna serverio nesibaigiančiomis gijomis, bandančiomis stebėti vartotojus ir jų sesijos duomenis. Taip pat yra keletas papildomų funkcijų, kurias galima naudoti norint nustatyti svetainę, pvz., „OpenID“, patvirtinimą ir failų įkėlimo palaikymą.

„Play“ kodų bazė vystėsi daugiau nei dešimtmetį, todėl taip pat rasite seniai pamirštų laikų atgarsių, tokių kaip XML palaikymas. Žaidimas yra ir subrendęs, ir lankstus - derinys, kuris laukinėje gamtoje gali būti retas.

Svageris

Sukurti API gali atrodyti taip pat paprasta, kaip parašyti kodą, kuris klausosi uosto ir pateikia atsakymus, tačiau „Swagger“ kūrėjai maldauja skirtis. Jie sukūrė visą API specifikacijos kalbą, vadinamą „OpenAPI“, kurią galite naudoti norėdami apibūdinti, ką darysite API. Tai gali atrodyti kaip papildomas žingsnis, tačiau „Swagger“ komanda taip pat pateikė kodą, kuris šią specifikaciją paverčia automatizuotais testais, dokumentais ir dar daugiau.

Paprastas, beveik spartiškas API aprašymas „Swagger“ konfigūracijos faile yra susuktas į „Java“ kodą, skirtą sąsajai įgyvendinti, dokumentuoti, kaip ji elgiasi, ir pateikti įrankių rinkinį po juo sukurtam kodui išbandyti. Yra net API valdymo mechanizmas, kad galėtumėte dirbti su neplautomis masėmis, kurios netrukus trankys jūsų API duris ir tikėsis atsakymų.

„Swagger“ yra API ekosistema ir ji neapsiriboja „Java“. Jei jūsų komanda pereina į „Node.js“ ar bet kurią iš kelių dešimčių kitų kalbų, yra „Swagger Codegen“ modulis, kuris laukia, kol jūsų „OpenAPI“ specifikacija bus konvertuota į tą kalbą.

„Restlet“

Vienas iš didesnių skirtumų tarp įvairių sistemų yra prisijungimų prie kitų paslaugų ir bibliotekų skaičius. „Restlet“ projektas siūlo vieną iš didesnių funkcijų ir jungčių kolekcijų. Jis jau integruotas su tokiomis bibliotekomis kaip „JavaMail“, jei jūsų mikropranešimui reikės kalbėti POP, IMAP ar SMTP su kokiu nors pašto serveriu ir „Lucene / Solr“, jei norite sukurti didelių teksto dalių ir apvyniotų metaduomenų paieškos indeksus. tai.

„Restlet“ galimybės tiesiog tęsiasi, nes ši krūva paprastai palaiko keletą skirtingų variantų kiekvienai daliai. Pavyzdžiui, nereikia naudoti JSON, nes kodas tvarkys XML, CSV, YAML ir dar kelis failų formatus. Jūs taip pat gausite keletą skirtingų šablonų parinkčių, kaip susisteminti atsakymą. Viena iš geresnių papildomų funkcijų yra „Restlet“ klientas, leidžiantis išbandyti API iš „Chrome“ naršyklės.

Skvošas

Mikroservių derinimas dažnai yra tikras iššūkis, nes dalys yra taip laisvai sujungtos ir sunku sekti duomenų srautą per visus sistemos sluoksnius. „Squash“ leidžia jums nustatyti kodo pertraukimo taškus, veikiančius „Kubernetes“ grupėje, ir tada visus duomenis vėl gauti į savo IDE, tarsi tai būtų lokaliai vykdomas kodas. „Squash“ taip pat integruojamas su „Node.js“ ir „Python“ vykdymo laikais, jei jūsų mikro paslaugų rinkinys nėra skirtas tik „Java“.

Telepresence

Kita derinimo galimybė yra „Telepresence“ naudojimas norint sukurti vietinį tarpinio serverio, esančio tolimoje „Kubernetes“ grupėje, esančią mikro paslaugą. Jūsų skambučiai dėl šios paslaugos bus peradresuoti į vietinę versiją, kurioje galėsite nustatyti pertraukimo taškus arba padaryti viską, ką tik galite įsivaizduoti savo vietiniame kompiuteryje.

Zipkinas

„Zipkin“ yra mechanizmas, skirtas registruoti įvykius įvairiose mikroservose ir tada susieti įvykius, kad problemas būtų galima izoliuoti ir ištirti, kai jos banguoja per mašinų kolekciją. Yra „Java“ „Zipkin“ diegimas, taip pat mažiausiai šešios kitos kalbos, kad būtų galima spręsti daugiakalbes sistemas. Kai kuriose sudėtingiausiose sistemose, tokiose kaip „Pavasaris“, jau yra „Zipkin“ integruota tam tikra forma.

$config[zx-auto] not found$config[zx-overlay] not found