JavaRush /Java Blog /Random-TK /Java mikroservisleri üçin gollanma. 2-nji bölüm: ýerleşdi...

Java mikroservisleri üçin gollanma. 2-nji bölüm: ýerleşdiriş we synag

Toparda çap edildi
Java mikroservisleriň terjimesi we uýgunlaşmagy : Amaly gollanma . Gollanmanyň birinji bölümine baglanyşyk . Java mikroservisleri üçin gollanma.  2-nji bölüm: ýerleşdiriş we synag - 1Islendik serwer tarapyndaky Java programmasy we şonuň üçin islendik mikroservis diňe .jar ýa-da .war giňeltmesi bolan faýl. Java ekosistemasy, has dogrusy JVM hakda bir gowy zat bar: diňe Java koduny ýazmaly bolarsyňyz we koduňyzy Java-yň täze wersiýasy bilen düzmedik bolsaňyz, islendik operasiýa ulgamynda diýen ýaly işläp biler. maksatly JVM wersiýasy. Esasanam Docker, Kubernetes ýa-da (deprek rulony!) Bulut ýaly mowzuklara gezek gelende düşünmek möhümdir. Näme üçin? Dürli ýerleşdiriş ssenarilerine seredeliň.

Minimalistik Java mikroservisi ýerleşdiriş mysaly

Bank mysaly bilen dowam edeliň. Şeýlelik bilen bizde monobank.jar faýly (monolit) we täze çykarylan risengine.jar (mikroservisi barlaýan ilkinji töwekgelçilik) bar. Şeýle hem, dünýädäki beýleki programmalar ýaly iki programmanyň hem .properties faýly gerekdigini kabul edeliň. Biziň ýagdaýymyzda, diňe maglumatlar bazasynyň URL-si we şahsyýetnamalary bolar. Iň az ýerleşdirme şuňa meňzeş iki katalogdan ybarat bolup biler: Birinjisi:

-r-r------ 1 ubuntu ubuntu     2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 monobank-384.jar

ubuntu@somemachine:/var/www/www.monobank.com/java$ java -jar monobank-384.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
Ikinjisi:

-r-r------ 1 ubuntu ubuntu     2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 risk-engine-1.jar

ubuntu@someothermachine:/var/www/risk.monobank.com/java$ java -jar risk-engine-1.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
Bu soragy açyk goýýar: .properties we .jar faýllary serwere nädip ýeter? Gynansagam, köp jogap bolup biler.

Java mikroservislerini ýerleşdirmek üçin gurmak gurallaryny, SSH we Ansible-i nädip ulanmaly

Java mikroservisleri nädip ýerleşdirmelidigi barada içgysgynç, ýöne ajaýyp maslahat ýok ... Aslynda, ulgam dolandyryjylarynyň soňky 20 ýylda islendik Java serwer programmasyny kompaniýalarda ýerleşdiriş usuly. Bu garyşyk:
  • halaýan gurluşyk guralyňyz (Maven, Gradle)
  • serwerlere .jars göçürmek üçin gowy köne SSH / SCP
  • Gurnama skriptlerini we serwerleri dolandyrmak üçin baş skriptler
  • ýa-da has gowusy: käbir düşnükli skriptler.
Elbetde, bu “dem alýan” buluda, awtomatiki ýük balansy bolan serwerlere we ş.m. zerur bolan täzelikçiler üçin amatly däl. Bu hakyky içgysgynç köne mekdep. Emma işleýär!

Java mikroservisleri ýerleşdirmek üçin Dockeri nädip ulanmaly

Geliň, saýlamagyň süýji agyrysyna gaýdyp geleliň. Birnäçe ýyl ozal Docker sahna çykdy we konteýnerizasiýa boldy. Hiç haçan onuň bilen işlemedik bolsaňyz, ahyrky ulanyjylara we döredijilere gönükdirilen gysga düşündiriş:
  • Konteýner (ýönekeýleşdirilen) gowy köne wirtual maşyna meňzeýär, ýöne “has ýeňil”. Bu kontekstde “has aňsat” nämäni aňladýandygyna düşünmeýän bolsaňyz, bu jogaby “Stackoverflow” -da gözden geçirmegiňizi haýyş edýäris .
  • Konteýner öz göterijiligini kepillendirýär. .Agny, islendik ýerde işleýär. Tanyş ýaly görünýär, şeýlemi?
Java mikroservisleri üçin gollanma.  2-nji bölüm: ýerleşdiriş we synag - 2JVM-iň ykjamlygy we yza gabat gelmegi göz öňünde tutulsa, bu aýratynlyk beýle artykmaçlyga meňzemeýär. JVM.zip-i islendik Raspberry Pi-de (ýa-da jübi telefonynda) göçürip alyp bilersiňiz, göçürip alyp bilersiňiz .jar faýlyny işledip bilersiňiz. PHP ýa-da Python ýaly dillerde ýagdaý üýtgeýär, bu ýerde wersiýa laýyk gelmezlik ýa-da ýerleşdiriş sazlamalary has çylşyrymly. Javaa-da Java programmaňyz beýleki köp sanly gurnalan hyzmatlara bagly bolsa (dogry wersiýa belgileri bilen): mysal üçin, Postgres maglumatlar bazasy ýa-da Redis açar bahasy dükany. Şeýlelik bilen, Java mikroservisleri üçin has dogrusy, ýa-da Java programmalary üçin Docker-iň esasy artykmaçlygy: Testcontainers ýaly gurallary ulanyp, birmeňzeş synag ýa-da integrasiýa gurşawyny gurmak ukyby . Çylşyrymly ösüşleri gurmak has aňsat. Forum programma üpjünçiligini alyň . Ony ýekeje Docker şekili bilen gurnap bilersiňiz, we Ruby-da ýazylan “Discourse” programma üpjünçiliginden başlap, “Postgres” maglumatlar bazasyna, Redis we aşhana çüýşesine çenli ähli zerur zatlary öz içine alýar. Gurnamalaryňyz meňzeş bolsa ýa-da gowy Oracle maglumat bazasyny işletmek isleseňiz, Docker-i synap görüň. Jemläp aýtsak, diňe .jar faýlyna seretmegiň ýerine, indi:
  • banka faýlyňyzy Docker şekiline baglaň
  • bu suraty şahsy Docker reýestrine basyň
  • bu suraty maksatly platformaňyzda çekiň we işlediň
  • ýa-da Docker şekilini göni önümçilik ulgamyňyza göçüriň we işlediň.

Java mikroservislerini ýerleşdirmek üçin Docker Swarm ýa-da Kubernetes-i nädip ulanmaly

Dockeri synap görmek kararyna geleliň. Her gezek Java mikroservisini ýerleşdireniňizde, .jar faýlyňyzy birleşdirýän Docker şekilini döredýärsiňiz. Bu Java mikroservisleriňizden ikiňiz bar diýeliň we bu hyzmatlary birnäçe enjamda (bir toparda) ýerleşdirmek isleýärsiňiz. Sorag ýüze çykýar: bu topary nädip dolandyrmaly? Docker konteýnerlerini işlediň, öndürijiligini barlaň, täzelenmeleri ýerleşdiriň, ulgamy ulaldyň (brrr)? Bu soraga mümkin iki jogap Docker Swarm we Kubernetes. Iki wariant barada jikme-jik maglumat bermek bu eýýäm uzyn sapak bererdi, ýöne klasteriňizi dolandyrmak üçin iki wariantyňam ahyrky netijede YAML faýllaryny ýazmagyna baglydygyny bellemelidiris ( Yaml indentasiýa hekaýalaryna serediň). Munuň iş ýüzünde nähili duýgulary döredýändigini bilmek isleseňiz, Twitter gözlegine şuňa meňzeş soragy ýazyň. Şonuň üçin Java mikroservisleriňizi ýerleşdirmek prosesi indi şuňa meňzeýär:
  • Docker Swarm / Kubernetes-i sazlamak we dolandyrmak
  • Docker üçin ähli ädimler (ýokarda serediň)
  • Everythinghli zat işleýänçä gözüňiz ganýança YAML ýazyň we ýerine ýetiriň .

Java mikroservisleri nädip barlamaly

Önümçilikde mikroservisleri durmuşa geçirmegi karar edýändigiňizi aýdalyň. Häzirki wagtda ösüş döwründe n-mikroservis integrasiýasyny nädip synap bileris? Diňe bir bölekleri däl-de, tutuş iş prosesiniň işleýändigini ýa-da ýokdugyny nädip görüp bilersiňiz? Iş ýüzünde üç usulyň birini ulanyp bilersiňiz:
  1. Biraz işlemek bilen (“Bahar boot” ýaly çarçuwalary ulanýan bolsaňyz), ähli mikroservisleriňizi bir başlangyç synpyna birleşdirip, ýekeje Wrapper.java synpyny ulanyp, ähli mikroservisleri ýükläp bilersiňiz - enjamyňyzda ýadyň ýeterlikdigine baglylykda ähli mikroservisleriňizi işlediň.
  2. Docker Swarm ýa-da Kubernetes sazlamalaryny ýerli görnüşde göçürip bilersiňiz.
  3. Indi ýerli integrasiýa synaglaryny geçirmäň. Munuň ýerine aýratyn DEV / TEST gurşawyny ýerleşdiriň. Localerli mikroservis sazlamalarynyň agyrysyna duçar bolanda, köp toparyň hakykatdanam edýän zady.
Mundan başga-da, Java mikroservisleriňizden başga-da, işleýän habar dellalyna (ActiveMQ ýa-da RabbitMQ ýaly) ýa-da e-poçta serweri ýa-da Java mikroservisleriň biri-biri bilen aragatnaşyk saklamagy zerur bolan başga habarlaşma komponenti gerek bolar. Bu, DevOps tarapyndaky çylşyrymlylyga düýpli baha berilmezlige getirýär. Microservice Testing Kitaphanalaryna göz aýlaň, olar bu agyryny ýeňilleşdirip bilerler. Her niçigem bolsa, bu çylşyrymlylyk, häzirki wagtda gürleşjek mikroservislerimiziň umumy meselelerine getirýär. Iň soňky bölüminde Java mikroservisleri barada umumy soraglary açarys.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION