JavaRush /Java Blog /Random-TK /Java mikroservisleri üçin gollanma. 3-nji bölüm: umumy so...

Java mikroservisleri üçin gollanma. 3-nji bölüm: umumy soraglar

Toparda çap edildi
Java mikroservisleriniň terjimesi we uýgunlaşmagy : Amaly gollanma . Gollanmanyň öňki bölümleri: Geliň, abstrakt zatlardan başlap, anyk kitaphanalar bilen gutarýan Java-daky mikroservisleriň mahsus meselelerine seredeliň. Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 1

Java mikroservisini nädip çydamly etmeli?

Mikroservis döredeniňizde, sinhron HTTP jaňlary ýa-da asynkron habarlaşma üçin JVM usuly bilen söwda edýändigiňizi ýadyňyzdan çykarmaň. Usul jaňynyň tamamlanmagy kepillendirilse-de (garaşylmadyk JVM ýapylmagyny gadagan edýär), set jaňy adaty ýagdaýda ygtybarly däl. Işläp biler, ýöne dürli sebäplere görä işlemän biler: tor aşa ýüklendi, täze diwar gorag düzgüni ýerine ýetirildi we ş.m. Munuň nähili üýtgeýändigini görmek üçin, BillingService mysalyna göz aýlalyň.

HTTP / REST çydamlylyk nusgalary

Müşderiler kompaniýanyň kitaphanasynda elektron kitap satyn alyp bilerler diýeliň. Munuň üçin onlaýn dükanyňyza hakyky PDF hasap-fakturalaryny öndürip bilýän töleg mikroservisini durmuşa geçirdiňiz. Häzirlikçe, bu jaňy HTTP arkaly sinhron ederis (bu hyzmaty asynkron diýip atlandyrmagyň has manysy bar, sebäbi PDF nesli ulanyjynyň nukdaýnazaryndan dessine bolmaly däldir. Geljekde şol bir mysaly ulanarys) bölüme serediň we tapawutlara serediň).
@Service
class BillingService {

    @Autowired
    private HttpClient client;

     public void bill(User user, Plan plan) {
        Invoice invoice = createInvoice(user, plan);
        httpClient.send(invoiceRequest(user.getEmail(), invoice), responseHandler());
        // ...
    }
}
Jemläp aýtsak, ine şu HTTP jaňynyň üç mümkin netijesi.
  • Bolýar: jaň geçdi, hasap üstünlikli döredildi.
  • GÜN: Çagyryş geçdi, ýöne gutarmak üçin gaty köp wagt gerek boldy.
  • RAL .YŞLYK Çagyryş şowsuz boldy, gabat gelmeýän haýyş iberen bolmagyňyz mümkin ýa-da ulgam işlemän biler.
Islendik programma diňe üstünlikli däl-de, ýalňyş ýagdaýlary çözer diýlip garaşylýar. Bu mikroservislere-de degişlidir. Aýry-aýry mikroservisleri ýerleşdirmek we goýbermek bilen başlanyňyzdan soň, API-iň ähli ýerleşdirilen wersiýalarynyň gabat gelýändigine göz ýetirmek üçin goşmaça güýç sarp etmeli bolsaňyzam. Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 2Seredilmeli gyzykly waka, gijä galmak meselesidir. Mysal üçin, jogap berijiniň mikroservis gaty diski doly we 50 ms almagyň ýerine jogap bermek üçin 10 sekunt gerek. Belli bir ýüküňizi başdan geçireniňizde hasam gyzykly bolýar, BillingService-yň jogap bermezligi ulgamyňyzda kaskad edip başlaýar. Muňa aýdyň mysal hökmünde aşhanada ähli restoran garaşýanlaryň “blokuny” ýuwaş-ýuwaşdan başlamagyny göz öňüne getiriň. Bu bölüm, mikroservisiň çydamlylygy mowzugy barada giňişleýin syn berip bilmejekdigi äşgärdir, ýöne bu döredijilere ilkinji gezek çykmazdan ozal çözülmeli we ünsden düşürilmeli zat däldigini ýatladýar (bu, tejribä görä, köplenç bolýar) däl). Gijä galmak we ýalňyşlyga çydamlylyk hakda pikirlenmäge kömek edýän meşhur kitaphana Netflix-iň Hystrixidir. Mowzuga has çuňňur girmek üçin resminamalaryny ulanyň.

Habarlaşma çydamlylyk nusgalary

Asynkron aragatnaşyga has içgin seredeliň. BillingService programmamyz, habarlaşmak üçin Bahar we RabbitMQ ulanýarys öýdüp, indi şuňa meňzeş bir zat bolup biler. Hasap döretmek üçin, indi RabbitMQ habar dellalymyza habar iberýäris, ol ýerde täze habarlara garaşýan birnäçe işçi bar. Bu işçiler PDF hasap-fakturalaryny döredýärler we degişli ulanyjylara iberýärler.
@Service
class BillingService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

     public void bill(User user, Plan plan) {
        Invoice invoice = createInvoice(user, plan);
        // преобразует счет, например, в json и использует его How тело messages
        rabbitTemplate.convertAndSend(exchange, routingkey, invoice);
        // ...
    }
}
Mümkin bolan ýalňyşlyklar häzir birneme üýtgeşik görünýär, sebäbi sinhron HTTP birikmesi ýaly derrew OK ýa-da RALRYŞ jogaplary almarsyňyz. Munuň ýerine, aşakdaky soraglary döredip biljek üç sany ssenariýa bolup biler.
  1. Habarym işgär tarapyndan gowşuryldy we ulanyldymy? Ora-da ýitdimi? (Ulanyjy hasap-faktura almaýar).
  2. Habarym diňe bir gezek gowşuryldymy? Ora-da bir gezekden köp gowşuryldy we diňe bir gezek işledildi? (Ulanyjy birnäçe hasap-faktura alar).
  3. Sazlama: "Bir exchangea üçin dogry marşrut düwmelerini / atlaryny ulandymmy" -dan "Habar dellalym dogry düzülendirmi ýa-da onuň nobatlary dolymy?" (Ulanyjy hasap-faktura almaýar).
Her bir asynkron mikroservisiň çydamlylyk nusgasynyň jikme-jik beýany bu gollanmanyň çäginden çykmaýar. Şeýle-de bolsa, dogry ugurda alamatlar bar. Mundan başga-da, habarlaşma tehnologiýasyna bagly bolarlar. Mysallar:
  • “ActiveMQ” ýaly JMS ýerine ýetirişlerini ulanýan bolsaňyz, iki fazaly (XA) kepillik üçin tizligi söwda edip bilersiňiz.
  • RabbitMQ ulanýan bolsaňyz, ilki bilen şu gollanmany okaň, soňra tassyklamalar, näsazlyklara çydamlylyk we umuman habar ygtybarlylygy barada ünsli pikirleniň.
  • Belki, kimdir biri “Active” ýa-da “RabbitMQ” serwerlerini sazlamakda, esasanam klaster we Docker (kimdir biri ?;) Bilen utgaşdyryp bilýän bolsa gerek?

Java mikroservisleri üçin haýsy çarçuwa iň oňat çözgüt bolup biler?

Bir tarapdan, “Bahar boot” ýaly iň meşhur warianty gurup bilersiňiz . .Jar faýllaryny döretmegi aňsatlaşdyrýar, Tomcat ýa-da Jetty ýaly içerki web serweri bilen gelýär we çalt we islendik ýerde işledilip bilner. Mikroservis programmalaryny gurmak üçin amatly. Recentlyakynda, reaktiw programmirlemekden bölekleýin ylhamlanan Kubernetes ýa-da GraalVM atly birnäçe ýöriteleşdirilen mikroservis çarçuwasy peýda boldy. Ine, ýene-de birnäçe gyzykly bäsdeş: Quarkus , Micronaut , Vert.x , Helidon . Netijede, özüňiz saýlamaly bolarsyňyz, ýöne size doly standart bolup bilmejek birnäçe maslahat berip bileris: “Bahar Boot” -dan başga ähli mikroservis çarçuwalary adatça ajaýyp çalt satylýar we derrew işe başlaýar. , ýadyň pes ulanylmagy, çäksizligiň ulalmagy. Marketing materiallary, adatça, “Behemoth Spring Boot” -yň gapdalynda ýa-da biri-birine görkezýän täsirli grafikalary görkezýär. Bu, teoriýa boýunça, käwagt ýüklemek üçin birnäçe minut wagt alýan miras taslamalaryny goldaýan döredijileriň nerwini halas edýär. Ora-da häzirki wagtda 50 ms içinde zerur bolan köp mikro-konteýnerleri başlamak / duruzmak isleýän bulutda işleýän döredijiler. Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 3Mesele, bu (emeli) ýalaňaç metal işe başlamagyň we gaýtadan işlemegiň wagtynyň taslamanyň umumy üstünligine goşant goşmazlygydyr. Iň bärkisi, güýçli çarçuwaly infrastruktura, güýçli resminamalar, jemgyýet we güýçli dörediji başarnyklaryna has az täsir edýär. Şonuň üçin oňa şeýle seretmek has gowudyr: Şu wagta çenli:
  • Simpleönekeý iş akymlary üçin ýüzlerçe talap döredip, ORM-leriňiziň giň ýaýramagyna ýol berýärsiňiz.
  • Ortaça çylşyrymly monolitiňizi işletmek üçin tükeniksiz gigabaýt gerek.
  • Sizde gaty köp kod bar we çylşyrymlylygy gaty ýokary (häzir Gibernate ýaly haýal başlaýanlar hakda gürleşemzok), programmaňyzy ýüklemek üçin birnäçe minut gerek.
Şeýle bolsa, goşmaça mikroservis meselelerini goşmak (toruň durnuklylygy, habarlaşma, DevOps, infrastruktura) boş Salam, dünýä ýüklemekden has köp taslamaňyza täsir eder. Ösüş döwründe gyzgyn işlemek üçin JRebel ýa-da DCEVM ýaly çözgütler bilen gutaryp bilersiňiz . Geliň, ýene bir gezek Simon Braunyň sözlerini sitata getireliň : " Adamlar monolitleri (çalt we täsirli) gurup bilmese, gurluşyna garamazdan (çalt we täsirli) mikroservis gurmakda kynçylyk çeker ." Şonuň üçin çarçuwalaryňyzy paýhasly saýlaň.

Sinhron Java REST jaňlary üçin haýsy kitaphanalar iň gowusy?

Pes derejeli tehniki tarapdan, aşakdaky HTTP müşderi kitaphanalarynyň biri bilen gutararsyňyz: Java-yň ýerli HttpClient (Java 11-den bäri), Apache-iň HttpClient ýa-da OkHttp . Bu ýerde "ähtimal" diýýändigime üns beriň, sebäbi köne JAX-RS müşderilerinden başlap, häzirki WebSocket müşderilerine çenli başga mümkinçilikler bar . Her niçigem bolsa, tendensiýa HTTP müşderisini döretmek, HTTP bilen özüňizi çagyrmakdan daşlaşmak. Munuň üçin “OpenFeign” taslamasyna we resminamalaryny has giňişleýin okamak üçin başlangyç nokat hökmünde gözden geçirmeli .

Asynkron Java habarlaşma üçin iň oňat dellallar haýsylar?

Meşhur ActiveMQ (Classic ýa-da Artemis) , RabbitMQ ýa-da Kafka bilen tanyşarsyňyz .
  • “ActiveMQ” we “RabbitMQ” adaty, doly hukukly dellallardyr. Olara “akylly dellal” bilen “samsyk ulanyjylaryň” gatnaşygy degişlidir.
  • Taryhy taýdan, “ActiveMQ” “RabbitMQ / Docker / TestContainer” sazlamalary bilen ýeňilleşdirilip bilinjek aňsat giriş (synag üçin) peýdasyna eýe boldy.
  • Kafkany adaty “akylly” dellal diýip atlandyryp bolmaz. Munuň ýerine, akylly sarp edijileriň işlemegini talap edýän birneme "lal" habar dükany (gündelik faýl).
RabbitMQ (ýa-da umuman beýleki adaty habar dellallary) ýa-da Kafkany haçan ulanmalydygyna has gowy düşünmek üçin bu esasy ýazga başlangyç nokat hökmünde serediň . Umuman habarlaşma dellalyny saýlanyňyzda, emeli öndürijilik sebäplerini äsgermezlik etjek boluň. Toparlaryň we onlaýn jemgyýetleriň RabbitMQ-iň çaltlygy we ActiveMQ-iň haýaldygy barada yzygiderli jedel edýän wagtlary boldy. Indi RabbitMQ bilen baglanyşykly şol bir argument bar, sekuntda 20-30 müň habar bilen haýal işleýändigini aýdýarlar. Kafka sekuntda 100 müň habar ýazýar. Dogrusyny aýtsak, beýle deňeşdirmeler ýylylygy ýumşak bilen deňeşdirmek ýalydyr. Mundan başga-da, iki ýagdaýda-da “Alibaba Group” -yň geçiş bahalary pesden orta aralykda bolup biler. Şeýle-de bolsa, hakykatda bu göwrümli taslamalara (minutda millionlarça habar) duş gelmek ähtimallygyňyz ýok. Elbetde bar we kynçylyk çekerdi. “Adaty” Java işewürlik taslamalarynyň beýleki 99% -inden tapawutlylykda. Şonuň üçin moda we gykylyga üns bermäň. Akylly saýla.

Mikroservisleri barlamak üçin haýsy kitaphanalary ulanyp bilerin?

Bu siziň stakanyňyza bagly. “Bahar” ekosistemasy ýerleşdirilen bolsa, çarçuwanyň ýörite gurallaryny ulanmak akylly bolardy . JavaEE Arquillian ýaly bir zat bolsa . Localerli ösüş ýa-da integrasiýa synaglary üçin Oracle maglumatlar bazasyny aňsat we çalt döretmäge kömek edýän Docker we hakykatdanam gowy Testcontainers kitaphanasyna göz aýlamak peýdaly bolup biler . Tutuş HTTP serwerlerini masgaralamak üçin Wiremock-a göz aýlaň . Asynkron habarlaşmany barlamak üçin, ActiveMQ ýa-da RabbitMQ ulanyp görüň we Awaitility DSL ulanyp synag ýazyň . Mundan başga-da, adaty gurallaryňyzyň hemmesi ulanylýar - AssitJ we Mockito üçin Junit , TestNG . Munuň doly sanaw däldigini ýadyňyzdan çykarmaň. Bu ýerde halaýan guralyňyzy tapmasaňyz, teswirler bölüminde goýmagyňyzy haýyş edýäris.

Javahli Java mikroservisleri hasaba almagy nädip açmaly?

Mikroservis ýagdaýynda girmek gyzykly we has çylşyrymly mowzuk. Az ýa-da grep buýruklary bilen dolandyryp boljak bir log faýlyňyzyň ýerine, indi n log faýllaryňyz bar we olaryň gaty ýaýramazlygyny isleýärsiňiz. Hasaba alyş ekosistemasynyň aýratynlyklary bu makalada (iňlis dilinde) gowy beýan edilýär. Ony hökman okaň we mikroservis nukdaýnazaryndan merkezleşdirilen hasaba alyş bölümine üns beriň . Iş ýüzünde dürli çemeleşmelere duşarsyňyz: Ulgam dolandyryjysy dürli serwerlerden gündelik faýllaryny ýygnaýan we birleşdirýän we göçürip almak üçin FTP serwerlerine goýýan käbir skriptleri ýazýar. Paralel SSH sessiýalarynda pişik / grep / unig / sort kombinasiýalaryny işletmek. Amazon AWS-iň edişi ýaly, dolandyryjyňyza habar berip bilersiňiz. Graylog ýa-da ELK Stack (Elasticsearch, Logstash, Kibana) ýaly gural ulanyň.

Mikroservislerim biri-birini nädip tapýarlar?

Şu wagta çenli mikroservislerimiziň biri-birini bilýändigini we degişli IPS-i bilýändigini çakladyk. Statik konfigurasiýa barada gürleşeliň. Şeýlelik bilen, bank monolitimiz [ip = 192.168.200.1] häsiýetler faýlynda gaty kodlanan töwekgelçilik serweri [ip = 192.168.200.2] bilen gürleşmelidigini bilýär. Şeýle-de bolsa, zatlary has dinamik edip bilersiňiz:
  • Bulut esasly konfigurasiýa serwerini ulanyň, ähli mikroservisler öz mikroservislerinde application.properties faýllaryny ýerleşdirmegiň ýerine öz konfigurasiýalaryny çekýärler.
  • Hyzmat ýagdaýlaryňyz ýerleşişini çalt üýtgedip bilýändigi sebäpli, hyzmatlaryňyzyň nirede ýaşaýandygyny, IP-leriniň nämedigini we olary nädip ugrukdyrmalydygyny bilýän hyzmatlara göz aýlamaly.
  • Indi hemme zat dinamik bolansoň, lideriň awtomatiki saýlanmagy ýaly täze meseleler ýüze çykýar: meselem, iki gezek işlemezlik üçin käbir meseleleriň üstünde işleýän ussat kim? Şowsuz bolanda lideriň ornuny kim çalyşýar? Çalyşmak haýsy esasda bolup geçýär?
Umuman aýdanyňda, mikroservis orkestri diýilýän zat we başga bir düýpsiz mowzuk. Ekaewrika ýa-da Zookeeper ýaly kitaphanalar haýsy hyzmatlaryň elýeterlidigini görkezmek bilen bu meseleleri "çözmäge" synanyşýarlar. Beýleki tarapdan, goşmaça çylşyrymlylygy girizýärler. ZooKeeper-i gurnanlardan soraň.

Java mikroservislerini ulanyp, awtorizasiýa we tassyklamany nädip tertipleşdirmeli?

Bu mowzuk aýratyn bir hekaýa-da mynasyp. Againene-de, opsiýalar, kodlanan esasy HTTPS tassyklamasyndan başlap, ýörite howpsuzlyk çarçuwalary bilen Oauth2 gurnamasyny öz ygtyýar serweri bilen işledýär.

Myhli gurşawymyň birmeňzeşdigine nädip göz ýetirip bilerin?

Mikroservisiz ýerleşdirmek üçin dogry zat, biri bilen ýerleşdirmek üçin hem dogry. Docker / Testcontainers we Scripting / Ansible kombinasiýasyny synap görüň.

Sorag ýok: YAML hakda gysgaça

Geliň, kitaphanalardan we şuňa meňzeş meselelerden bir salym daşlaşalyň we Yaml-a tiz göz aýlalyň. Bu faýl formaty de-fakto “kod hökmünde konfigurasiýa ýazmak” formaty hökmünde ulanylýar. Şeýle hem Ansible ýaly ýönekeý gurallar we Kubernetes ýaly ägirtler tarapyndan ulanylýar. YAML indentasiýasynyň agyrysyny başdan geçirmek üçin ýönekeý Ansible faýly ýazyp görüň we faýlyň garaşylyşy ýaly işlemezden ozal näçe redaktirlemelidigini görüň. Formhli esasy IDE-ler tarapyndan goldanýan formata garamazdan! Ondan soň, bu gollanmany okamagy tamamlaň.
Yaml:
  - is:
    - so
    - great

Paýlanan amallar hakda näme? Öndürijilik synagy? Beýleki mowzuklar?

Belki bir gün, gollanmanyň geljekki neşirlerinde. Häzirlikçe, bularyň hemmesi. Biz bilen gal!

Mikroservisler bilen konseptual meseleler

Java-daky mikroservisleriň aýratyn meselelerinden başga-da, islendik mikroservis taslamasynda ýüze çykýan başga meseleler bar. Olar esasan gurama, topar we dolandyryş bilen baglanyşykly.

“Frontend” we “Backend” gabat gelmezlik

“Frontend” we “Backend” gabat gelmezlik köp mikroservis taslamalarynda gaty ýygy duş gelýär. Bu näme many berýär? Diňe gowy köne monolitlerde web interfeýsini döredijileriň maglumat almak üçin belli bir çeşmesi bardy. Mikroservis taslamalarynda, öňdäki işläp düzüjilerden birden maglumat almak üçin n çeşmesi bar. Java-da haýsydyr bir IoT (Internet of Things) mikroservis taslamasyny döredýändigiňizi göz öňüne getiriň. Geodeziki maşynlary we senagat peçlerini Europeewropada dolandyrýarsyňyz diýeliň. Bu peçler, temperaturasy we şuňa meňzeşler bilen yzygiderli täzelenmeleri iberýär. Iru-giç administrator UI-de peçleri tapmak isläp bilersiňiz, belki "peç gözlegi" mikroservislerini ulanyp bilersiňiz. Arka tarapdaky kärdeşleriňiziň domen bilen dolandyrylýan dizaýny ýa-da mikroservis kanunlaryny näderejede ulanýandyklaryna baglylykda , “ojak tapmak” mikroservisi diňe görnüşi, modeli ýa-da ýerleşýän ýeri ýaly maglumatlary däl-de, peç şahsyýetnamalaryny yzyna gaýtaryp biler. Munuň üçin frontend işläp düzüjiler ilkinji mikroservisden alan şahsyýetnamalary bilen “peç maglumatlary al” mikroservisinde bir ýa-da goşmaça jaň etmeli (peýjiň ýerine ýetirilişine baglylykda). Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 4Hakyky (!) Taslamadan alnan hem bolsa, bu ýönekeý mysal bolsa-da, aşakdaky meseläni görkezýär: supermarketler aşa meşhur boldy. Sebäbi olar bilen gök önüm, limonad, doňdurylan pizza we hajathana kagyzy satyn almak üçin 10 dürli ýere gitmeli däl. Munuň ýerine, bir ýere gidýärsiňiz, has aňsat we has çalt. Öňdäki we mikroservis döredijiler üçin hem edil şonuň ýaly.

Dolandyryş garaşmalary

Dolandyryş ýalňyş pikirde, indi (umumy) taslama üçin çäksiz sanly işläp düzüjini hakyna tutmaly, sebäbi döredijiler indi biri-birine garaşsyz, biri-birine öz mikroservisinde işläp bilerler. Iň soňunda diňe biraz integrasiýa işi talap edilýär (işe başlamazdan ozal). Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 5Aslynda bu çemeleşme gaty kyn. Indiki abzaslarda munuň sebäbini düşündirmäge synanyşarys.

“Ownuk bölekler” “has gowy böleklere” deň däl

20 bölege bölünen kody hökmany suratda bir bölekden has ýokary hilli bolar diýip çaklamak uly ýalňyşlyk bolar. Diňe tehniki nukdaýnazardan hil alsak-da, şahsy hyzmatlarymyz goldanylmadyk kodlaryň gatlaklaryny geçip, maglumatlar bazasyndan ulanyjy saýlamak üçin 400 Gibernate talaplaryny işledip biler. Simonene-de bir gezek Simon Braunyň sitatasyna gaýdyp gelýäris: monolitleri dogry gurup bilmeseňiz, dogry mikroservisleri gurmak kyn bolar. Mikroservis taslamalarynda kemçiliklere çydamlylyk hakda gürlemek köplenç gaty giç. Mikroservisleriň hakyky taslamalarda nähili işleýändigini görmek käwagt gorkunç bolýar. Munuň sebäbi, Java döredijileriniň näsazlyga çydamlylygy, aragatnaşyk we beýleki degişli temalary degişli derejede öwrenmäge hemişe taýyn däldigi. “Bölekleriň” özleri has kiçi, ýöne “tehniki bölekler” has uludyr. Mikroservis toparyňyzdan maglumatlar bazasyna girmek üçin tehniki mikroservis ýazmagyny haýyş edýändigini göz öňüne getiriň:
@Controller
class LoginController {
    // ...
    @PostMapping("/login")
    public boolean login(String username, String password) {
        User user = userDao.findByUserName(username);
        if (user == null) {
            // обработка варианта с несуществующим пользователем
            return false;
        }
        if (!user.getPassword().equals(hashed(password))) {
            // обработка неверного пароля
            return false;
        }
        // 'Ю-ху, залогинorсь!';
        // установите cookies, делайте, что угодно
        return true;
    }
}
Indi toparyňyz munuň gaty ýönekeý we içgysgynçdygyna karar berip biler (we hatda işewür adamlary hem ynandyryp biler), giriş hyzmatyny ýazmagyň ýerine, hakyky we göze görnüp duran iş talaplary bolmazdan, hakykatdanam peýdaly UserStateChanged mikroservisini ýazmak has gowudyr. Käbir adamlar häzirki wagtda Java-a dinozawr ýaly çemeleşýändigi sebäpli, geliň, “UserStateChanged” mikroservisimizi moda Erlangda ýazalyň. Geliň, bir ýerde gyzyl-gara agaçlary ulanmaga synanyşalyň, sebäbi Stiw gegge Google-a ýüz tutmak üçin içerde bilmelidigiňizi ýazdy. Integrasiýa, tehniki hyzmat we umumy dizaýn nukdaýnazaryndan, bu bir monolitiň içinde spagetti kodunyň gatlaklaryny ýazmak ýaly erbet. Emeli we adaty mysal? Bu hakykat. Emma bu hakykatda bolup biler.

Az bölek - az düşünmek

Soňra sorag, umuman, ulgamy, prosesleri we iş akymlaryna düşünmek barada ýüze çykýar, ýöne şol bir wagtyň özünde, işläp düzüji hökmünde diňe izolirlenen mikroservisiňizde işlemek üçin jogapkärçilik çekýärsiňiz [95: login-101: updateUserProfile]. Öňki abzas bilen gabat gelýär, ýöne guramaňyza, ynam derejäňize we aragatnaşygyňyza baglylykda, mikroservis zynjyrynda tötänleýin bökdençlik bar bolsa, köp bulaşyklyga, gysylmalara we günäkärlige sebäp bolup biler. Bolan waka üçin doly jogapkärçiligi öz üstüne aljak adam ýok. Bu asla biwepalyk däl. Aslynda, dürli bölekleri birleşdirmek we taslamanyň umumy suratdaky ornuna düşünmek gaty kyn.

Aragatnaşyk we hyzmat

Aragatnaşyk we hyzmat derejesi kompaniýanyň göwrümine baglylykda gaty üýtgeýär. Şeýle-de bolsa, umumy gatnaşyk aç-açan: näçe köp problemaly bolsa.
  • 47-nji mikroservisi kim işleýär?
  • Diňe mikroservisiň täze, gabat gelmeýän görnüşini ýerleşdirdilermi? Bu nirede dokumentleşdirildi?
  • Täze aýratynlyk soramak üçin kim bilen gürleşmeli?
  • Erlangdaky bu mikroservisi kim bilýär, bu dili bilýän ýekeje adam kompaniýadan çykansoň?
  • Mikroservis toparymyzyň hemmesi diňe bir dürli programmirleme dillerinde däl, eýsem dürli wagt zolaklarynda hem işleýär! Bularyň hemmesini nädip dogry utgaşdyrmaly?
Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 6Esasy zat, “DevOps” -da bolşy ýaly, uly, hatda halkara kompaniýasyndaky mikroservislere doly hukukly çemeleşmek, bir topar goşmaça aragatnaşyk problemalary bilen ýüze çykýar. Kompaniýa muňa çynlakaý taýýarlyk görmeli.

Netijeler

Bu makalany okanyňyzdan soň, awtoryň mikroservislere ýiti garşydygyny pikir edip bilersiňiz. Bu düýbünden dogry däl - täze tehnologiýalar üçin däli ýaryşda az sanly adamyň üns berýän nokatlaryny bellemäge synanyşýaryn.

Mikroservismi ýa-da monolit?

Java mikroservisleri islän wagtyňyz, islendik ýerde ulanmak gaty bir zat. Beýlekisi bolsa monolitdäki ýüzlerçe gowy köne Maven modullary ýaly bir zat bolup çykýar. Siziň işiňiz dogry deňagramlylygy tapmak. Bu esasanam täze taslamalar üçin dogry. Bulut taýýar ýigrimi mikroservisden başlamazdan, has konserwatiw, “monolit” çemeleşmäge we az gowy Maven modullaryny döretmäge päsgel berýän zat ýok.

Mikroservisler goşmaça çylşyrymlylyk döredýär

Näçe mikroservisiň bardygyny we hakykatdanam güýçli DevOps-yň bardygyny ýadyňyzdan çykarmaň (ýok, bir-iki sany “Ansible” skriptini işletmek ýa-da Herokuda ýerleşdirmek hasaplanmaýar!), Soňra bu işde has köp kynçylyk çekersiňiz. Java mikroservisler baradaky umumy soraglara bagyşlanan bu gollanmanyň bölüminiň ahyryna çenli okamak gaty ýadaw mesele. Bu infrastruktura meseleleriniň hemmesine çözgütleri durmuşa geçirmek barada gaty köp pikirleniň we birden munuň işewürlik programmirlemesi (näme üçin tölenjekdigiňiz) däl-de, has köp tehnologiýany has köp tehnologiýa ýapmak bilen baglanyşyklydygyna birden düşünersiňiz. Şiva Prasad Reddy muny öz blogynda şeýle jemledi : “Bir toparyň häzirki döwrebap infrastruktura bilen göreşmek üçin 70% wagt sarp edip, hakyky iş logikasyny ýerine ýetirmek üçin wagtyň 30% galan wagty nähili erbetdigini bilmeýärsiňiz. ” Şiva Prasad Reddy

Java mikroservislerini döretmäge mynasypmy?

Bu soraga jogap bermek üçin, bu makalany Google-yň söhbetdeşlik ýaly tizeri bilen tamamlamak isleýärin. Bu soragyň jogabyny tejribeden bilýän bolsaňyz, mikroservis bilen hiç hili baglanyşygy ýok ýaly bolsa-da, mikroservis çemeleşmesine taýyn bolup bilersiňiz.

Ssenariýa

Iň kiçi Hetzner aýratyn serwerinde ýeke işleýän Java monolitiňizi göz öňüne getiriň . Maglumat bazasynyň serwerine-de degişlidir, şuňa meňzeş Hetzner enjamynda hem işleýär . Şeýle hem, Java monolitiňiziň iş akymlaryny dolandyryp biljekdigini, ulanyjylaryň hasaba alynmagyny aýdyp biljekdigini kabul edeliň we her iş prosesinde ýüzlerçe maglumat bazasy talaplaryny döretmeýärsiňiz, has amatly san (<10).

Sorag

Java monolit (birikme howzy) maglumat bazasynyň serwerinde näçe maglumat bazasy birikmesini açmaly? Näme üçin beýle? Siziň pikiriňizçe monolit näçe (takmynan) masştab edip biler?

Jogap

Bu soraglara öz jogabyňyzy teswirler bölüminde goýuň. Allhli jogaplara sabyrsyzlyk bilen garaşýaryn. Java mikroservisleri üçin gollanma.  3-nji bölüm: umumy soraglar - 8Indi pikiriňizi düzüň. Ahyryna çenli okasaňyz, size örän minnetdar!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION