JavaRush /جاوا بلاگ /Random-SD /جاوا مائڪرو سروسز لاءِ هڪ گائيڊ. حصو 2: لڳائڻ ۽ جاچ

جاوا مائڪرو سروسز لاءِ هڪ گائيڊ. حصو 2: لڳائڻ ۽ جاچ

گروپ ۾ شايع ٿيل
جاوا مائڪرو سروسز جو ترجمو ۽ موافقت : هڪ عملي گائيڊ . گائيڊ جي پهرين حصي سان ڳنڍيو . جاوا مائڪرو سروسز لاءِ هڪ گائيڊ.  حصو 2: تعیناتي ۽ جانچ - 1ڪو به سرور-سائيڊ جاوا پروگرام، ۽ ان ڪري ڪو به مائڪرو سروس، صرف هڪ فائل آهي .jar يا .war ايڪسٽينشن سان. جاوا ايڪو سسٽم جي باري ۾ هڪ وڏي شيء آهي، يا بلڪه JVM: توهان کي صرف هڪ ڀيرو جاوا ڪوڊ لکڻ جي ضرورت آهي ۽ اهو تقريبا ڪنهن به آپريٽنگ سسٽم تي هلي سگهي ٿو، جيستائين توهان پنهنجي ڪوڊ کي جاوا جي نئين ورزن سان گڏ نه ڪيو آهي. ٽارگيٽ JVM نسخو. اهو سمجهڻ ضروري آهي، خاص طور تي جڏهن اهو اچي ٿو موضوعن جهڙوڪ ڊڪر، ڪبرنيٽس، يا (ڊرم رول!) ڪلائوڊ. ڇو؟ اچو ته مختلف ترتيب ڏيڻ واري منظرنامي تي نظر رکون.

Minimalistic Java Microservice Deployment Example

اچو ته بينڪ جي مثال سان جاري رکون. تنهن ڪري اسان وٽ هڪ monobank.jar فائل آهي (monolith) ۽ اسان جو نئون ڪڍيل riskengine.jar (پهرين خطري جي چڪاس ڪندڙ مائڪرو سروس). اچو ته اهو پڻ فرض ڪريون ته ٻنهي ايپليڪيشنن کي، دنيا جي هر ٻي ايپليڪيشن وانگر، هڪ .properties فائل جي ضرورت آهي. اسان جي صورت ۾، ان ۾ صرف ڊيٽابيس URL ۽ سندون شامل هونديون. گھٽ ۾ گھٽ ڊولپمينٽ ٻن ڊائريڪٽرن تي مشتمل ٿي سگھي ٿي جيڪي ڪجھ ھن طرح نظر اچن ٿا: پھريون:

-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

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
ٻيون:

-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

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
هي سوال کليل ڇڏي ٿو: .properties ۽ .jar فائلون سرور تي ڪيئن اينديون؟ بدقسمتي سان، اتي ڪيترائي جواب ٿي سگھن ٿا.

جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ بلڊ ٽولز، SSH، ۽ جوابي استعمال ڪيئن ڪجي

بورنگ، پر جاوا مائيڪرو سروسز کي ڪيئن ترتيب ڏيڻ جي باري ۾ ڪو به گهٽ بهترين مشورو ناهي... دراصل، بلڪل ائين جيئن سسٽم ايڊمنسٽريٽرن گذريل 20 سالن ۾ ڪمپنين ۾ ڪنهن به جاوا سرور پروگرام کي لڳايو آهي. هي مرکب آهي:
  • توهان جي پسنديده تعمير جو اوزار (Maven، Gradle)
  • نقل ڪرڻ لاءِ سٺو پراڻو SSH/SCP .jars سرور ڏانهن
  • بيش اسڪرپٽ ترتيب ڏيڻ واري اسڪرپٽ ۽ سرور کي منظم ڪرڻ لاء
  • يا اڃا به بهتر: ڪجهه جوابي اسڪرپٽ.
يقينن، اهو موزون نه آهي نوان ڪندڙن لاءِ جن کي ”سانس وٺڻ“ ڪلائوڊ جي ضرورت آهي، سرور سان خودڪار لوڊ بيلنسنگ، وغيره. هي حقيقي بورنگ پراڻو اسڪول آهي. بهرحال اهو ڪم ڪري ٿو!

جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ ڊڪر ڪيئن استعمال ڪجي

اچو ته پسند جي مٺي اذيت ڏانهن موٽون. ڪجھ سال اڳ ڊڪر منظر تي آيو، ۽ ان سان گڏ ڪنٽينرائزيشن. جيڪڏهن توهان ان سان ڪڏهن به ڪم نه ڪيو آهي، هتي هڪ مختصر وضاحت آهي جنهن جو مقصد آخري صارفين ۽ ڊولپرز لاءِ آهي:
  • هڪ ڪنٽينر (آسان) سٺي پراڻي ورچوئل مشين وانگر آهي، پر ”لائيٽ“. جيڪڏهن توهان واضح نه آهيو ته هن حوالي سان ”آسان“ جو مطلب ڇا آهي، مهرباني ڪري هن جواب کي چيڪ ڪريو Stackoverflow .
  • ڪنٽينر پنهنجي پورٽبلٽي جي ضمانت ڏئي ٿو. اهو آهي، اهو ڪٿي به ڪم ڪري ٿو. آواز واقف، ڇا اهو ناهي؟
جاوا مائڪرو سروسز لاءِ هڪ گائيڊ.  حصو 2: تعیناتي ۽ جانچ - 2اها عجيب ڳالهه آهي ته JVM جي پورٽيبلٽي ۽ پسمانده مطابقت ڏني وئي آهي، اها خاصيت اهڙي فائدي وانگر نه لڳي. توهان آساني سان ڊائون لوڊ ڪري سگهو ٿا JVM.zip ڪنهن به Raspberry Pi (يا موبائل فون) تي، ان کي ڪڍيو ۽ ڪا به .jar فائل هلائي سگهو ٿا. PHP يا پٿون جهڙين ٻولين ۾ صورتحال تبديل ٿيندي آهي، جتي ورزن جي غير مطابقت يا ڊيپلائيمينٽ سيٽنگون وڌيڪ پيچيده هونديون آهن. يا جيڪڏهن توهان جي جاوا ايپليڪيشن ڪيترن ئي ٻين نصب ڪيل خدمتن تي منحصر آهي (صحيح ورزن نمبرن سان): مثال طور، پوسٽ گريس ڊيٽابيس، يا ريڊس ڪيئي ويل اسٽور. تنهن ڪري، جاوا مائڪرو سروسز لاءِ Docker جو بنيادي فائدو، يا وڌيڪ واضح طور تي جاوا ايپليڪيشنن لاءِ، هي آهي: ٽيسٽ ڪنٽينر وانگر اوزار استعمال ڪندي هوموجنائزڊ ٽيسٽنگ يا انٽيگريشن ماحول قائم ڪرڻ جي صلاحيت . پيچيده ترقيات انسٽال ڪرڻ آسان آهن. ڊسڪورس فورم سافٽ ويئر وٺو . توھان ان کي انسٽال ڪري سگھو ٿا ھڪڙي ڊاکر تصوير سان، ۽ اھو ھڪڙي شيء تي مشتمل آھي جيڪو توھان جي ضرورت آھي، روبي ۾ لکيل ڊسڪورس سافٽ ويئر کان، پوسٽ گريس ڊيٽابيس تائين، ريڊس ۽ باورچی خانه جي سنڪ تائين. جيڪڏهن توهان جون ترتيبون ساڳيون آهن يا توهان هڪ سٺو ننڍڙو Oracle ڊيٽابيس هلائڻ چاهيو ٿا، ڪوشش ڪريو Docker. تنهن ڪري اختصار ڪرڻ لاءِ، صرف .jar فائل کي ڏسڻ بدران، توهان هاڻي:
  • پنھنجي جار فائل کي ڊاکر تصوير ۾ بنڈل ڪريو
  • ھن تصوير کي پرائيويٽ ڊاڪر رجسٽري ڏانھن ڇڪيو
  • ڇڪيو ۽ ھلايو ھن تصوير کي پنھنجي ھدف واري پليٽ فارم تي
  • يا نقل ڪريو ڊاڪر تصوير سڌو سنئون توھان جي پيداوار واري نظام ڏانھن ۽ ان کي ھلايو.

جاوا مائڪرو سروسز کي ترتيب ڏيڻ لاءِ Docker Swarm يا Kubernetes ڪيئن استعمال ڪجي

اچو ته چوندا آهن ته توهان Docker جي ڪوشش ڪرڻ جو فيصلو ڪيو. هر دفعي جڏهن توهان جاوا مائيڪرو سروس جوڙيو ٿا، توهان هڪ ڊاڪر تصوير ٺاهيندا آهيو جيڪا توهان جي .jar فائل کي بنڊل ڪري ٿي. اچو ته چئو ته توهان وٽ اهي جاوا مائڪرو سروسز آهن، ۽ توهان انهن خدمتن کي ڪيترن ئي مشينن تي (هڪ ڪلستر ۾) لڳائڻ چاهيو ٿا. سوال پيدا ٿئي ٿو: هن ڪلستر کي ڪيئن منظم ڪجي؟ ڊاڪر ڪنٽينرز کي هلائي، ڪارڪردگي چيڪ ڪريو، تازه ڪاريون ترتيب ڏيو، سسٽم کي ماپ ڪريو (brrr)؟ هن سوال جا ٻه ممڪن جواب آهن Docker Swarm ۽ Kubernetes. ٻنهي اختيارن جي باري ۾ تفصيل ۾ وڃڻ سان اهو اڳ ۾ ئي ڊگهو سبق تمام ڊگهو ٿيندو، پر اسان سمجهون ٿا ته اهو ذڪر ڪرڻ ضروري آهي ته ٻئي اختيار آخرڪار توهان تي YAML فائلون لکڻ تي ڀاڙين ٿا (ڏسو Yaml indentation ڪهاڻيون ) توهان جي ڪلستر کي منظم ڪرڻ لاءِ. جيڪڏھن توھان ڄاڻڻ چاھيو ٿا ته ھي عمل ۾ ڪھڙا احساس پيدا ڪري ٿو، بس ٽائيپ ڪريو ھڪڙو ساڳيو سوال Twitter ڳولا ۾. تنهن ڪري توهان جي جاوا مائڪرو سروسز لاء ترتيب ڏيڻ وارو عمل هاڻي ڪجهه هن طرح نظر اچي ٿو:
  • Docker Swarm / Kubernetes کي ترتيب ڏيڻ ۽ انتظام ڪرڻ
  • Docker لاءِ سڀ قدم (مٿي ڏسو)
  • YAML لکو ۽ ان تي عمل ڪريو جيستائين توھان جي اکين مان رت وهي وڃي جيستائين سڀ ڪجھ ڪم ڪري.

جاوا مائڪرو سروسز کي ڪيئن جانچيو

اچو ته چئو ته توهان پيداوار ۾ مائڪرو سروسز کي لاڳو ڪرڻ جو فيصلو ڪيو. اسان ڪيئن جانچ ڪري سگھون ٿا n-microservices integration ھاڻي ڊولپمينٽ دوران؟ توهان ڪيئن ڏسي سگهو ٿا ته سڄو ڪم فلو ڪم ڪري رهيو آهي، ۽ نه صرف ان جا حصا؟ عملي طور تي، توهان ٽن طريقن مان هڪ استعمال ڪري سگهو ٿا:
  1. ٿورڙي ڪم سان (جيڪڏهن توهان اسپرنگ بوٽ وانگر فريم ورڪ استعمال ڪري رهيا آهيو)، توهان پنهنجي سڀني مائڪرو سروسز کي هڪ لانچر ڪلاس ۾ گڏ ڪري سگهو ٿا ۽ هڪ واحد Wrapper.java ڪلاس استعمال ڪندي سڀني مائڪرو سروسز کي لوڊ ڪري سگهو ٿا - ان تي منحصر آهي ته ڇا توهان وٽ توهان جي مشين تي ڪافي ميموري آهي. انهن سڀني کي توهان جي microservices هلائي.
  2. توھان نقل ڪري سگھو ٿا Docker Swarm يا Kubernetes سيٽنگون مقامي طور تي.
  3. بس هاڻي مقامي طور تي انٽيگريشن ٽيسٽ نه هلايو. ان جي بدران، هڪ وقف DEV/TEST ماحول کي ترتيب ڏيو. اهو ڪجهه آهي جيڪو ڪجھه ٽيمون اصل ۾ ڪندا آهن جڏهن اهي مقامي مائڪرو سروس سيٽ اپ جي درد کي منهن ڏين ٿا.
اضافي طور تي، توهان جي جاوا مائيڪرو سروسز کان علاوه، توهان کي شايد هڪ هلندڙ ميسيج بروکر (جهڙوڪ ActiveMQ يا RabbitMQ) يا شايد اي ميل سرور يا ڪنهن ٻئي ميسيجنگ جزو جي ضرورت پوندي جيڪا توهان جي Java microservices کي هڪ ٻئي سان رابطو ڪرڻ جي ضرورت آهي. هي DevOps پاسي تي پيچيدگي جي هڪ اهم گهٽتائي جي ڪري ٿي. ڏسو Microservice ٽيسٽنگ لائبريريون، اهي هن درد کي گهٽائي سگهن ٿيون. ڪنهن به صورت ۾، هي پيچيدگي اسان کي مائڪرو سروسز جي عام مسئلن ڏانهن آڻيندو آهي، جنهن بابت اسان هاڻي ڳالهائينداسين. آخري حصي ۾ ، اسان جاوا مائڪرو سروسز بابت عام سوالن کي ڍڪيندا سين.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION