Java mikroservislarini tarjima qilish va moslashtirish : amaliy qo'llanma . Qo'llanmaning birinchi qismiga havola . Har qanday server tomonidagi Java dasturi va shuning uchun har qanday mikroservis shunchaki .jar yoki .war kengaytmali fayldir. Java ekotizimida, toʻgʻrirogʻi JVMda bitta ajoyib narsa bor: Java kodini faqat bir marta yozishingiz kerak boʻladi va u deyarli har qanday operatsion tizimda ishlashi mumkin, agar siz kodingizni Java’ning yangiroq versiyasi bilan tuzmagan boʻlsangiz. maqsadli JVM versiyasi. Buni tushunish juda muhim, ayniqsa Docker, Kubernetes yoki (baraban rulosi!) Bulut kabi mavzular haqida gap ketganda. Nega? Keling, turli xil joylashtirish stsenariylarini ko'rib chiqaylik.
Minimalistik Java mikroservislarini joylashtirishga misol
Keling, bank misolida davom etaylik. Shunday qilib, bizda monobank.jar fayli (monolit) va yangi olingan riskengine.jar (birinchi xavfni tekshirish mikroservisi) mavjud. Faraz qilaylik, har ikkala ilovaga ham, dunyodagi boshqa ilovalar singari, .properties fayli kerak. Bizning holatda, u faqat ma'lumotlar bazasi URL manzili va hisobga olish ma'lumotlarini o'z ichiga oladi. Minimal joylashtirish quyidagi kabi ko'rinadigan ikkita katalogdan iborat bo'lishi mumkin: Birinchisi:
-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
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
Ikkinchi:
-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 savolni ochiq qoldiradi: .properties va .jar fayllari serverga qanday etib boradi? Afsuski, ko'p javoblar bo'lishi mumkin.
Java mikroservislarini joylashtirish uchun Build Tools, SSH va Ansible-dan qanday foydalanish kerak
Zerikarli, ammo Java mikroservislarini qanday joylashtirish bo'yicha undan kam bo'lmagan ajoyib maslahat... Aslida tizim ma'murlari so'nggi 20 yil ichida har qanday Java server dasturini kompaniyalarda joylashtirgani kabi. Bu aralashma:- sevimli qurilish vositangiz (Maven, Gradle)
- .jarlarni serverlarga nusxalash uchun yaxshi eski SSH/SCP
- O'rnatish skriptlari va serverlarini boshqarish uchun Bash skriptlari
- yoki undan ham yaxshiroq: ba'zi Ansible skriptlari.
Java mikroservislarini joylashtirish uchun Dockerdan qanday foydalanish kerak
Keling, tanlovning shirin azobiga qaytaylik. Bir necha yil oldin Docker sahnaga chiqdi va u bilan konteynerlashdi. Agar siz u bilan hech qachon ishlamagan bo'lsangiz, bu erda oxirgi foydalanuvchilar va ishlab chiquvchilarga qaratilgan qisqacha tavsif:- Konteyner (soddalashtirilgan) yaxshi eski virtual mashinaga o'xshaydi, lekin "engilroq". Agar siz ushbu kontekstda "osonroq" nimani anglatishini tushunmasangiz, iltimos, Stackoverflow-da ushbu javobni tekshiring .
- Konteyner o'zining ko'chmaligini kafolatlaydi. Ya'ni, u hamma joyda ishlaydi. Tanish tuyuladi, shunday emasmi?
- jar faylingizni Docker tasviriga to'plang
- ushbu rasmni shaxsiy Docker registriga suring
- ushbu rasmni maqsadli platformangizda torting va ishga tushiring
- yoki Docker tasvirini bevosita ishlab chiqarish tizimingizga nusxalang va uni ishga tushiring.
Java mikroservislarini o'rnatish uchun Docker Swarm yoki Kubernetesdan qanday foydalanish kerak
Aytaylik, siz Dockerni sinab ko'rishga qaror qildingiz. Har safar Java mikroxizmatini ishga tushirganingizda, siz .jar faylingizni birlashtirgan Docker tasvirini yaratasiz. Aytaylik, sizda ushbu Java mikroservislaridan bir nechtasi bor va siz ushbu xizmatlarni bir nechta mashinalarda (klasterda) joylashtirmoqchisiz. Savol tug'iladi: bu klasterni qanday boshqarish kerak? Docker konteynerlarini ishga tushiring, unumdorlikni tekshiring, yangilanishlarni o'rnating, tizimni kengaytiring (brrr)? Bu savolga ikkita mumkin bo'lgan javob - Docker Swarm va Kubernetes. Ikkala variant haqida ham batafsil ma'lumotga ega bo'lish, bu allaqachon uzoq bo'lgan o'quv qo'llanmasini juda uzun qiladi, ammo shuni ta'kidlash kerakki, ikkala variant ham klasteringizni boshqarish uchun YAML fayllarini yozishingizga tayanadi ( Yaml chekinish hikoyalariga qarang). Agar siz buni amalda qanday his qilishini bilmoqchi bo'lsangiz, Twitter qidiruviga xuddi shunday so'rovni kiriting. Shunday qilib, Java mikroservislaringizni joylashtirish jarayoni endi shunday ko'rinadi:- Docker Swarm/Kubernetesni sozlash va boshqarish
- Docker uchun barcha qadamlar (yuqoriga qarang)
- Hamma narsa ishlamaguncha
ko'zlaringiz qongunchaYAML yozing va bajaring .
Java mikroservislarini qanday sinab ko'rish mumkin
Aytaylik, siz mikroservislarni ishlab chiqarishga joriy etishga qaror qildingiz. Hozir ishlab chiqish jarayonida n-mikroservislar integratsiyasini qanday sinab ko'rishimiz mumkin? Faqat uning qismlari emas, balki butun ish jarayoni ishlayotganligini qanday ko'rish mumkin? Amalda siz uchta usuldan birini qo'llashingiz mumkin:- Bir oz ish bilan (agar siz Spring Boot kabi ramkalardan foydalanayotgan bo'lsangiz) barcha mikroservislaringizni bitta ishga tushirish sinfiga birlashtira olasiz va bitta Wrapper.java klassi yordamida barcha mikroservislarni yuklashingiz mumkin - bu kompyuteringizda yetarli xotira mavjudligiga qarab. ularni barcha mikroxizmatlaringizni boshqaring.
- Docker Swarm yoki Kubernetes sozlamalarini mahalliy sifatida nusxalashingiz mumkin.
- Endi mahalliy integratsiya testlarini o'tkazmang. Buning o'rniga, maxsus DEV/TEST muhitini o'rnating. Bu juda ko'p jamoalar mahalliy mikroservis sozlamalari og'rig'iga berilib ketganda qiladigan narsadir.
GO TO FULL VERSION