Java Mikroservislərinin tərcüməsi və uyğunlaşdırılması : Praktik Bələdçi . Bələdçinin birinci hissəsinə keçid . İstənilən server tərəfi Java proqramı və buna görə də hər hansı mikroservis sadəcə .jar və ya .war genişləndirilməsi olan fayldır. Java ekosistemində, daha doğrusu JVM-də bir gözəl şey var: Java kodunu yalnız bir dəfə yazmalısınız və o, demək olar ki, istənilən əməliyyat sistemində işləyə bilər, şərti ki, siz öz kodunuzdan daha yeni Java versiyası ilə kodunuzu tərtib etməmisiniz. hədəf JVM versiyası. Xüsusilə Docker, Kubernetes və ya (baraban rulosu!) Bulud kimi mövzulara gəldikdə bunu başa düşmək vacibdir. Niyə? Müxtəlif yerləşdirmə ssenarilərinə baxaq.
Minimalist Java Mikroservis yerləşdirmə nümunəsi
Bank nümunəsi ilə davam edək. Beləliklə, bizdə monobank.jar faylı (monolit) və yeni çıxarılmış riskengine.jar (risk yoxlaması üçün ilk mikroservis) var. Həm də fərz edək ki, hər iki proqram, dünyanın hər bir tətbiqi kimi, .properties faylına ehtiyac duyur. Bizim vəziyyətimizdə o, yalnız verilənlər bazası URL və etimadnaməsini ehtiva edəcəkdir. Minimal yerləşdirmə bu kimi görünən iki kataloqdan ibarət ola bilər: Birincisi:
-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
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
İkinci:
-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 sualı açıq qoyur: .properties və .jar faylları serverə necə daxil olacaq? Təəssüf ki, çoxlu cavablar ola bilər.
Java Mikroservislərini yerləşdirmək üçün Quraşdırma Alətləri, SSH və Ansible-dan Necə İstifadə Edilir
Darıxdırıcı, lakin Java mikroservislərinin tətbiqi ilə bağlı heç də az olmayan əla məsləhət... Əslində, sistem administratorlarının son 20 il ərzində şirkətlərdə istənilən Java server proqramını yerləşdirdiyi şəkildə. Bu qarışıqdır:- sevimli qurma alətiniz (Maven, Gradle)
- bankaları serverlərə köçürmək üçün yaxşı köhnə SSH/SCP
- Yerləşdirmə skriptlərini və serverlərini idarə etmək üçün Bash skriptləri
- və ya daha yaxşısı: bəzi Ansible skriptləri.
Java Mikroservislərini yerləşdirmək üçün Dockerdən necə istifadə etməli
Qayıdaq seçimin şirin əzabına. Bir neçə il əvvəl Docker hadisə yerinə gəldi və bununla da konteynerləşdirmə. Əgər onunla heç vaxt işləməmisinizsə, burada son istifadəçilər və tərtibatçılar üçün qısa təsvir var:- Konteyner (sadələşdirilmiş) yaxşı köhnə virtual maşına bənzəyir, lakin "daha yüngül". Bu kontekstdə “daha asan”ın nə demək olduğunu bilmirsinizsə, Stackoverflow-da bu cavabı yoxlayın .
- Konteyner öz daşınmasına zəmanət verir. Yəni hər yerdə işləyir. Tanış səslənir, elə deyilmi?
- jar faylınızı Docker şəklinə yığın
- bu şəkli şəxsi Docker reyestrinə itələyin
- çəkin və bu şəkli hədəf platformanızda işləyin
- və ya Docker şəklini birbaşa istehsal sisteminizə kopyalayın və işə salın.
Java Mikroservislərini yerləşdirmək üçün Docker Swarm və ya Kubernetesdən necə istifadə etmək olar
Deyək ki, siz Docker-i sınamağa qərar verdiniz. Hər dəfə Java mikroservisini yerləşdirdiyiniz zaman .jar faylınızı birləşdirən Docker təsviri yaradırsınız. Tutaq ki, sizdə bu Java mikroservislərindən bir neçəsi var və siz bu xidmətləri bir neçə maşında (klasterdə) yerləşdirmək istəyirsiniz. Sual yaranır: bu klasteri necə idarə etmək olar? Docker konteynerlərini işə salın, performansı yoxlayın, yeniləmələri yerləşdirin, sistemi genişləndirin (brrr)? Bu suala iki mümkün cavab Docker Swarm və Kubernetesdir. Hər iki variant haqqında təfərrüata varmaq bu uzun dərsliyi çox uzun edəcək, lakin biz qeyd edirik ki, hər iki variant son nəticədə klasterinizi idarə etmək üçün YAML faylları yazmağınıza (bax: Yaml girinti hekayələrinə ) əsaslanır . Bunun praktikada hansı hissləri doğurduğunu bilmək istəyirsinizsə, sadəcə Twitter axtarışına oxşar sorğu yazın. Beləliklə, Java mikroservisləriniz üçün yerləşdirmə prosesi indi belə görünür:- Docker Swarm/Kubernetes-in konfiqurasiyası və idarə edilməsi
- Docker üçün bütün addımlar (yuxarıya baxın)
Hər şey işə yarayana qədər gözləriniz qanana qədərYAML yazın və icra edin .
Java Mikroservislərini necə sınaqdan keçirmək olar
Tutaq ki, siz mikroservisləri istehsalda tətbiq etmək qərarına gəldiniz. İndi inkişaf zamanı n-mikroservislərin inteqrasiyasını necə sınaqdan keçirə bilərik? Yalnız hissələrin deyil, bütün iş axınının işlədiyini necə görə bilərsiniz? Praktikada üç üsuldan birini istifadə edə bilərsiniz:- Kiçik bir işlə (Əgər Spring Boot kimi çərçivələrdən istifadə edirsinizsə) siz bütün mikroxidmətlərinizi bir işəsalma sinfində birləşdirə və bütün mikroxidmətləri tək Wrapper.java sinfindən istifadə edərək yükləyə bilərsiniz – maşınınızda kifayət qədər yaddaşın olub-olmamasından asılı olaraq. onları bütün mikroservislərinizi idarə edin.
- Docker Swarm və ya Kubernetes parametrlərini yerli olaraq kopyalaya bilərsiniz.
- Sadəcə olaraq inteqrasiya testlərini artıq yerli olaraq keçirməyin. Bunun əvəzinə xüsusi bir DEV/TEST mühiti yerləşdirin. Bu, bir neçə komandanın yerli mikroservis quraşdırmalarının ağrısına tab gətirdiyi zaman etdikləri bir şeydir.
GO TO FULL VERSION