ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ کي گڏ ڪري ٿو

هن سال اسان سنجيدگي سان ڪنٽينر موضوعات کي ترقي ڪرڻ جو منصوبو ٺاهيو، Cloud-Native Java и ڪوبنيٿس. انهن عنوانن جو هڪ منطقي تسلسل Quarkus فريم ورڪ جي باري ۾ هڪ ڪهاڻي ٿي ويندي، اڳ ۾ ئي سمجهيو Habré تي. اڄ جو مضمون ”سباتومڪ سپرفاسٽ جاوا“ جي ڊيزائن بابت گهٽ آهي ۽ ان واعدي بابت وڌيڪ آهي جيڪو ڪوارڪس انٽرپرائز ۾ آڻيندو آهي.

ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ کي گڏ ڪري ٿو

جاوا ۽ JVM اڃا تائين تمام گهڻو مشهور آهن، پر جڏهن سرور بيس ٽيڪنالاجيز ۽ ڪلائوڊ-آبائي مائڪرو سروسز سان ڪم ڪري رهيا آهن، جاوا ۽ ٻيون JVM ٻوليون گهٽ ۽ گهٽ استعمال ڪيون وينديون آهن ڇو ته اهي تمام گهڻي ميموري اسپيس وٺن ٿيون ۽ لوڊ ڪرڻ ۾ تمام سست آهن، انهن کي ٺاهيندي. مختصر-رهندڙ ڪنٽينرز سان استعمال لاءِ ناقص موزون. خوش قسمتي سان، اها صورتحال هاڻي ڪوارڪس جي مهرباني سان تبديل ٿيڻ شروع ٿي رهي آهي.

سپر فاسٽ ذيلي ائٽمي جاوا هڪ نئين سطح تي پهچي چڪو آهي!

42 رليز، 8 مھينن جي ڪميونٽي ڪم ۽ 177 شاندار ڊولپرز - اھو سڀ جو نتيجو نومبر 2019 ۾ رليز ٿيو ڪوارڪس 1.0, هڪ رليز جيڪو پروجيڪٽ جي ترقي ۾ هڪ اهم سنگ ميل جي نشاندهي ڪري ٿو ۽ تمام گهڻيون خوبيون ۽ صلاحيتون پيش ڪري ٿو (توهان انهن بابت وڌيڪ پڙهي سگهو ٿا. اعلان).

اڄ اسين توهان کي ڏيکارينداسين ته ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ ماڊل کي هڪ واحد رد عمل واري ڪور ۾ گڏ ڪري ٿو. اسان مختصر تاريخ سان شروع ڪنداسين ۽ پوءِ تفصيل سان غور ڪنداسين ته ڪوارڪس جي رد عمل واري بنيادي دوئيزم ڇا آهي ۽ ڪيئن آهي جاوا- ڊولپرز انهن فائدن مان فائدو وٺي سگهن ٿا.

Microservices, واقعي تي هلندڙ فن تعمير и سرور- فنڪشن - اهو سڀ ڪجهه آهي، جيئن اهي چون ٿا، اڄ اڀار تي. تازو، ڪلائوڊ-سينٽرڪ آرڪيٽيڪچرز جي تخليق تمام آسان ۽ وڌيڪ رسائي لائق ٿي چڪي آهي، پر مسئلا باقي آهن - خاص طور تي جاوا ڊولپرز لاءِ. مثال طور، بي سرور ڪمن ۽ مائڪرو سروسز جي صورت ۾، شروعاتي وقت کي گهٽائڻ، ياداشت جي استعمال کي گهٽائڻ، ۽ اڃا به انهن جي ترقي کي وڌيڪ آسان ۽ لطف اندوز ڪرڻ جي فوري ضرورت آهي. جاوا تازو سالن ۾ ڪيترائي سڌارا ڪيا آهن، جهڙوڪ ڪنٽينرز لاءِ بهتر ergonomics ڪارڪردگي وغيره. بهرحال، جاوا حاصل ڪرڻ لاء صحيح ڪم ڪنٽينر ۾ اڃا به مشڪل آهي. تنهن ڪري اسان جاوا جي ڪجهه موروثي پيچيدگين کي ڏسڻ سان شروع ڪنداسين، جيڪي خاص طور تي سخت آهن جڏهن ڪنٽينر تي مبني جاوا ايپليڪيشنون ٺاهي رهيا آهن.

پهرين، اچو ته تاريخ تي نظر.

ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ کي گڏ ڪري ٿو

وهڪرو ۽ ڪنٽينر

ورزن 8u131 سان شروع ڪندي، جاوا ergonomics ڪارڪردگي ۾ بهتري جي ڪري وڌيڪ يا گهٽ سپورٽ ڪنٽينرز کي شروع ڪيو. خاص طور تي، JVM هاڻي ڄاڻي ٿو ته ڪيترا پروسيسر ڪور ان تي هلندا آهن ۽ ترتيب ڏئي سگھن ٿا ٿريڊ پول - عام طور تي فورڪ / جوائن پولز - مطابق. يقينن، اهو تمام سٺو آهي، پر اچو ته اسان وٽ هڪ روايتي ويب ايپليڪيشن آهي جيڪا HTTP servlets استعمال ڪري ٿي ۽ Tomcat، Jetty وغيره ۾ هلندو آهي. نتيجي طور، هي ايپليڪيشن هر درخواست کي هڪ الڳ ٿريڊ ڏيندو ۽ I/O عملن جي انتظار ۾ هن سلسلي کي بلاڪ ڪرڻ جي اجازت ڏيندو، مثال طور، ڊيٽابيس، فائلن يا ٻين خدمتن تائين رسائي حاصل ڪرڻ وقت. اهو آهي، اهڙي ايپليڪيشن جي سائيز موجود ڪور جي تعداد تي منحصر نه آهي، پر هڪ ئي وقت جي درخواستن جي تعداد تي. ان کان علاوه، هن جو مطلب اهو آهي ته ڪوبرنيٽس ۾ ڪوٽا يا حدون ڪورز جي تعداد تي هتي وڌيڪ مدد نه ٿيندي، ۽ معاملو آخرڪار ختم ٿي ويندو.

ياداشت جي ختم ٿيڻ

سلسلا ياداشت آهن. ۽ انٽرا ڪنٽينر ميموري جون حدون ڪنهن به طرح سان علاج نه آهن. بس ايپليڪيشنن ۽ موضوعن جو تعداد وڌائڻ شروع ڪريو، ۽ جلد يا بعد ۾ توهان کي سوئچنگ فريڪوئنسي ۾ هڪ نازڪ اضافو سان منهن ڏيڻو پوندو، ۽ نتيجي طور، ڪارڪردگي جي تباهي. انهي سان گڏ، جيڪڏهن توهان جي ايپليڪيشن روايتي مائڪرو سروس فريم ورڪ استعمال ڪري ٿي، يا ڊيٽابيس سان ڳنڍي ٿي، يا ڪيشنگ استعمال ڪري ٿي، يا ٻي صورت ۾ ميموري استعمال ڪري ٿي، توهان کي واضح طور تي هڪ اوزار جي ضرورت آهي جيڪا توهان کي JVM اندر ڏسڻ جي اجازت ڏئي ٿي ۽ ڏسو ته اهو ڪيئن ميموري کي منظم ڪري ٿو ان کي مارڻ کان سواء. JVM پاڻ (مثال طور، XX:+UseCGroupMemoryLimitForHeap). ۽ جيتوڻيڪ، جاوا 9 کان وٺي، JVM سي گروپن کي قبول ڪرڻ ۽ ان جي مطابق موافقت ڪرڻ سکيو آهي، ميموري کي محفوظ ڪرڻ ۽ منظم ڪرڻ هڪ بلڪه پيچيده معاملو آهي.

ڪوٽا ۽ حدون

جاوا 11 سي پي يو ڪوٽا لاءِ سپورٽ متعارف ڪرايو (جهڙوڪ PreferContainerQuotaForCPUCount). ڪبرنيٽس پڻ حدن ۽ ڪوٽا لاءِ سپورٽ پيش ڪري ٿو. ها، اهو سڀ ڪجهه سمجهه ۾ اچي ٿو، پر جيڪڏهن ايپليڪيشن ٻيهر مختص ڪيل ڪوٽا کان وڌي وڃي ٿي، اسان ٻيهر سائيز سان ختم ڪريون ٿا - جيئن ته روايتي جاوا ايپليڪيشنن جي صورت ۾ آهي - ڪور جي تعداد ۽ هر هڪ لاء الڳ موضوع جي مختص ڪرڻ سان. گذارش، ته پوءِ هن سڀ ۾ ٿورو احساس آهي.
اضافي طور تي، جيڪڏهن توهان ڪوٽا ۽ حدون استعمال ڪندا آهيو يا پليٽ فارم جي اسڪيل-آئوٽ فنڪشن هيٺ ڪبرنيٽس، اهو مسئلو پڻ پاڻ کي حل نٿو ڪري. اسان صرف اصل مسئلي کي حل ڪرڻ تي وڌيڪ وسيلا خرچ ڪريون ٿا يا ختم ڪرڻ تي خرچ ڪريون ٿا. ۽ جيڪڏھن اھو ھڪڙو عوامي عوامي بادل ۾ ھڪڙو اعلي لوڊ سسٽم آھي، اسان تقريبن ضرور ختم ڪريون ٿا وڌيڪ وسيلن کي استعمال ڪرڻ کان وڌيڪ اسان کي واقعي جي ضرورت آھي.

۽ اهو سڀ ڪجهه ڇا ڪجي؟

ان کي آسانيءَ سان رکڻ لاءِ، استعمال ڪريو هم وقت سازي ۽ غير بلاڪنگ I/O لائبريريون ۽ فريم ورڪ جهڙوڪ Netty، Vert.x يا اکا. اهي انهن جي رد عمل واري فطرت جي ڪري ڪنٽينرز ۾ ڪم ڪرڻ لاءِ بهتر موزون آهن. I/O کي بلاڪ نه ڪرڻ جي مهرباني، هڪ ئي ٿريڊ ڪيترن ئي ساڳئي وقت درخواستن تي عمل ڪري سگهي ٿو. جڏهن ته هڪ درخواست I/O نتيجن جو انتظار ڪري رهي آهي، ٿريڊ پروسيسنگ ان کي جاري ڪيو وڃي ٿو ۽ ٻي درخواست ذريعي ورتو وڃي ٿو. ۽ جڏهن I/O نتيجا آخرڪار پهچندا، پهرين درخواست جي پروسيسنگ جاري رهي. ساڳئي سلسلي ۾ درخواستن جي وچولي پروسيسنگ ذريعي، توهان موضوعن جو ڪل تعداد گھٽائي سگھو ٿا ۽ پروسيسنگ درخواستن لاءِ وسيلن جي استعمال کي گھٽائي سگھو ٿا.

غير بلاڪ ڪرڻ واري I/O سان، ڪور جو تعداد هڪ اهم پيٽرولر بڻجي ويندو آهي ڇاڪاڻ ته اهو I/O موضوعن جو تعداد طئي ڪري ٿو جيڪي متوازي طور تي عمل ڪري سگھجن ٿا. جڏهن صحيح طريقي سان استعمال ڪيو وڃي، اهو توهان کي اجازت ڏئي ٿو موثر طريقي سان لوڊ کي ڪور جي وچ ۾ ورهائڻ ۽ گهٽ وسيلن سان اعلي ڪم لوڊ لوڊ ڪرڻ.

ڪيئن، اهو سڀ آهي؟

نه، ٻيو ڪجهه آهي. رد عمل واري پروگرامنگ وسيلن جي بهتر استعمال ۾ مدد ڪري ٿي، پر قيمت تي پڻ اچي ٿي. خاص طور تي، ڪوڊ کي غير بلاڪ ڪرڻ جي اصولن مطابق ٻيهر لکڻو پوندو ۽ I/O ٿريڊز کي بلاڪ ڪرڻ کان پاسو ڪيو ويندو. ۽ هي هڪ مڪمل طور تي مختلف نموني جي ترقي ۽ عمل آهي. ۽ جيتوڻيڪ هتي تمام گهڻيون مفيد لائبريريون آهن، پر اهو اڃا تائين عام طور تي سوچڻ جي انداز ۾ بنيادي تبديلي آهي.

پهرين، توهان کي سکڻ جي ضرورت آهي ته ڪوڊ ڪيئن لکجي جيڪو هم وقت سازي سان هلندو آهي. هڪ دفعو توهان غير بلاڪنگ I/O استعمال ڪرڻ شروع ڪيو، توهان کي واضح طور تي بيان ڪرڻ جي ضرورت آهي ته ڇا ٿيڻ گهرجي جڏهن هڪ درخواست جو جواب موصول ٿئي. بس بلاڪ ڪرڻ ۽ انتظار ڪرڻ هاڻي ڪم نه ڪندو. ان جي بدران، توهان ڪال بڪ پاس ڪري سگهو ٿا، رد عمل واري پروگرامنگ يا تسلسل استعمال ڪريو. پر اهو سڀ ڪجهه نه آهي: غير بلاڪنگ I/O استعمال ڪرڻ لاءِ، توهان کي ضرورت آهي نان بلاڪنگ سرور ۽ ڪلائنٽ، ترجيحي طور تي هر هنڌ. HTTP جي صورت ۾، سڀ ڪجھ سادو آهي، پر اتي پڻ ڊيٽابيس، فائيل سسٽم، ۽ گهڻو ڪجهه آهي.

۽ جيتوڻيڪ مڪمل آخر کان آخر تائين رد عمل ڪارڪردگي کي وڌائي ٿو، اهڙي تبديلي عملي طور تي پيٽ ڪرڻ ڏکيو ٿي سگهي ٿو. تنهن ڪري، رد عمل ۽ لازمي ڪوڊ کي گڏ ڪرڻ جي صلاحيت هڪ لازمي شرط بڻجي وڃي ٿي:

  1. مؤثر طريقي سان سافٽ ويئر سسٽم جي سڀ کان وڌيڪ لوڊ ٿيل علائقن ۾ وسيلن کي استعمال ڪريو؛
  2. ان جي باقي حصن ۾ آسان انداز ڪوڊ استعمال ڪريو.

Quarkus جو تعارف

دراصل، هي آهي Quarkus جو جوهر - هڪ واحد رن ٽائم ماحول ۾ رد عمل ۽ لازمي ماڊلز کي گڏ ڪرڻ.

Quarkus Vert.x ۽ Netty تي ٻڌل آهي، ڊولپر جي مدد ڪرڻ لاءِ مٿي تي رد عمل واري فريم ورڪ ۽ ايڪسٽينشن جي هڪ حد سان. Quarkus نه رڳو HTTP microservices جي تعمير لاءِ ٺاهيو ويو آهي پر واقعن تي هلندڙ آرڪيٽيڪچرز پڻ. ان جي رد عمل واري فطرت جي ڪري، اهو تمام مؤثر طريقي سان پيغام رسائيندڙ سسٽم سان ڪم ڪري ٿو (Apache Kafka، AMQP، وغيره).

چال اهو آهي ته ساڳئي رد عمل واري انجڻ کي لازمي ۽ رد عمل واري ڪوڊ لاءِ ڪيئن استعمال ڪجي.

ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ کي گڏ ڪري ٿو

ڪوارڪس اهو ڪم شاندار انداز ۾ ڪري ٿو. لازمي ۽ رد عمل جي وچ ۾ انتخاب پڌرو آهي - ٻنهي لاءِ رد عمل وارو ڪنيل استعمال ڪريو. ڇا اهو واقعي سان مدد ڪري ٿو تيز، غير بلاڪنگ ڪوڊ جيڪو تقريبا هر شيء کي هٿي ڏئي ٿو جيڪو ايونٽ لوپ ٿريڊ، عرف IO ٿريڊ مان گذري ٿو. پر جيڪڏهن توهان وٽ کلاسک REST يا ڪلائنٽ سائڊ ايپليڪيشنون آهن، Quarkus وٽ هڪ لازمي پروگرامنگ ماڊل تيار آهي. مثال طور، Quarkus ۾ HTTP جي مدد هڪ غير بلاڪنگ ۽ رد عمل واري انجڻ (Eclipse Vert.x ۽ Netty) جي استعمال تي ٻڌل آهي. توهان جي ايپليڪيشن پاران مليل سڀئي HTTP درخواستون پهريان هڪ ايونٽ لوپ (IO Thread) ذريعي گذري وينديون آهن ۽ پوءِ ڪوڊ جي حصي ڏانهن موڪلي وينديون آهن جيڪي درخواستن کي منظم ڪن ٿيون. منزل تي منحصر ڪري، درخواست مينيجمينٽ ڪوڊ کي هڪ الڳ سلسلي ۾ سڏي سگهجي ٿو (نام نهاد ورڪر ٿريڊ، استعمال ڪيو ويو servlets ۽ Jax-RS جي صورت ۾) يا استعمال ڪريو ذريعو I/O ٿريڊ (رد عمل وارو رستو).

ڪيئن ڪوارڪس لازمي ۽ رد عمل واري پروگرامنگ کي گڏ ڪري ٿو

پيغام رسائيندڙ سسٽم ڪنيڪٽر استعمال ڪندا آهن غير بلاڪنگ ڪلائنٽ جيڪي Vert.x انجڻ جي چوٽي تي هلندا آهن. تنهن ڪري، توهان مؤثر طريقي سان موڪلي سگهو ٿا، وصول ڪري سگهو ٿا ۽ عمل ڪري سگهو ٿا پيغام رسائيندڙ مڊل ويئر سسٽم مان.

سائيٽ تي Quarkus.io Quarkus سان شروع ڪرڻ ۾ توهان جي مدد ڪرڻ لاءِ هتي ڪجهه سٺا سبق آهن:

اسان توهان کي صرف هڪ برائوزر ۾ رد عمل واري پروگرامنگ جا مختلف پهلو سيکارڻ لاءِ آن لائين هٿ سان سبق پڻ ٺاهيا آهن، نه IDE گهربل، ۽ نه ڪمپيوٽر گهربل. توهان اهي سبق ڳولي سگهو ٿا هتي.

مددگار وسيلا

10 وڊيو سبق Quarkus تي موضوع سان واقف ٿيڻ لاء

جيئن اهي چون ٿا ويب سائيٽ تي Quarkus.io, ڪرڪشس - آهي ڪوبنيٿس-oriented Java اسٽيڪ، GraalVM ۽ OpenJDK HotSpot لاءِ تيار ڪيل ۽ بهترين جاوا لائبريرين ۽ معيارن مان گڏ ڪيل.

موضوع کي سمجھڻ ۾ توھان جي مدد ڪرڻ لاءِ، اسان 10 وڊيو سبق چونڊيا آھن جيڪي Quarkus جي مختلف پهلوئن کي ڍڪيندا آھن ۽ ان جي استعمال جا مثال:

1. Quarkus جو تعارف: ڪبرنيٽس لاءِ ايندڙ نسل جاوا فريم ورڪ

توماس قوارنسٽروم ۽ جيسن گرين طرفان
Quarkus پروجيڪٽ جو مقصد Kubernetes ۽ سرور کان سواءِ ماحول لاءِ جاوا پليٽ فارم ٺاهڻ آهي، ۽ رد عمل واري ۽ لازمي پروگرامنگ ماڊلز کي هڪ واحد رن ٽائم ماحول ۾ گڏ ڪرڻ آهي ته جيئن ڊولپرز ورهايل ايپليڪيشن آرڪيٽيڪچرز جي وسيع رينج سان ڪم ڪندي لچڪدار طريقي سان پنهنجو طريقو مختلف ڪري سگهن. هيٺ ڏنل تعارفي ليڪچر ۾ وڌيڪ ڳولهيو.

2. ڪوارڪس: سپر فاسٽ سباٽامڪ جاوا

پاران: برر سٽر
DevNation Live مان هي وڊيو ٽيوٽوريل ڏيکاري ٿو ته Quarkus کي ڪيئن استعمال ڪجي انٽرپرائز جاوا ايپليڪيشنز، APIs، مائڪرو سروسز، ۽ سرور بيس ڪمن کي ڪبرنيٽس/اوپن شفٽ ماحول ۾ بهتر ڪرڻ لاءِ، انهن کي تمام ننڍو، تيز، ۽ وڌيڪ اسپيبلبل بڻائي ٿو.

3. Quarkus ۽ GraalVM: Hibernate کي تيز رفتار تي تيز ڪرڻ ۽ ان کي ذيلي ائٽمي سائزن تائين گھٽائڻ

ليکڪ: ساني گرينويرو
پريزنٽيشن مان توهان سکندا ته Quarkus ڪيئن وجود ۾ آيو، اهو ڪيئن ڪم ڪري ٿو، ۽ اهو ڪيئن توهان کي پيچيده لائبريريون ٺاهڻ جي اجازت ڏئي ٿو، جهڙوڪ Hibernate ORM، مقامي GraalVM تصويرن سان مطابقت رکندڙ.

4. سکو ته سرور کان سواءِ ايپليڪيشنون تيار ڪرڻ

ليکڪ: مارٽن لوٿر
هيٺ ڏنل وڊيو ڏيکاري ٿي ته ڪيئن Quarkus استعمال ڪندي هڪ سادي جاوا ايپليڪيشن ٺاهي ۽ ان کي Knative تي سرور لیس ايپليڪيشن طور ترتيب ڏيو.

5. Quarkus: مزو ڪريو ڪوڊنگ

ليکڪ: ايڊسن ياناگا
توهان جي پهرين Quarkus پروجيڪٽ ٺاهڻ لاءِ هڪ وڊيو گائيڊ، توهان کي سمجهڻ جي اجازت ڏئي ٿي ته ڇو Quarkus ڊولپرز جون دليون کٽي رهيو آهي.

6. جاوا ۽ ڪنٽينر - انهن جو مستقبل ڇا هوندو

مارڪ لائيٽ پاران شايع ٿيل
هي پريزنٽيشن جاوا جي تاريخ متعارف ڪرائي ٿي ۽ وضاحت ڪري ٿي ته ڇو ڪوارڪس جاوا جو مستقبل آهي.

7. ڪوارڪس: سپر فاسٽ سباٽامڪ جاوا

ليکڪ: Dimitris Andreadis
Quarkus جي فائدن جو هڪ جائزو جنهن کي ڊولپرز طرفان تسليم ڪيو ويو آهي: سادگي، انتهائي تيز رفتار، بهترين لائبريريون ۽ معيار.

8. Quarkus ۽ subatomic راڪيٽ سسٽم

ليکڪ: Clement Escoffier
GraalVM سان انضمام ذريعي، Quarkus هڪ انتهائي تيز ترقي جو تجربو ۽ هڪ ذيلي ائٽمي رن ٽائم ماحول فراهم ڪري ٿو. ليکڪ Quarkus جي رد عمل واري پاسي بابت ڳالهائيندو آهي ۽ ان کي ڪيئن استعمال ڪجي ري ايڪٽو ۽ اسٽريمنگ ايپليڪيشنز ٺاهڻ لاءِ.

9. Eclipse MicroProfile ۾ Quarkus ۽ تيز ايپليڪيشن ڊولپمينٽ

ليکڪ: جان ڪلنگن
Eclipse MicroProfile ۽ Quarkus کي گڏ ڪرڻ سان، ڊولپرز مڪمل خصوصيت رکندڙ ڪنٽينر ٿيل مائڪرو پروفائيل ايپليڪيشنون ٺاهي سگھن ٿا جيڪي ڏھن ملي سيڪنڊن ۾ شروع ٿين ٿيون. وڊيو تفصيل ۾ وڃي ٿي ته ڪبرنيٽس پليٽ فارم تي ڊيپلائيمينٽ لاءِ ڪنٽينر ٿيل مائڪرو پروفائيل ايپليڪيشن کي ڪيئن ڪوڊ ڪجي.

10. جاوا، "ٽربو" نسخو

ليکڪ: مارڪس بييل
ليکڪ ڏيکاري ٿو ته Quarkus کي ڪيئن استعمال ڪجي سپر-ننڍا، سپر-فاسٽ جاوا ڪنٽينرز ٺاهڻ لاءِ جيڪي حقيقي ڪاميابين کي فعال ڪن ٿا، خاص ڪري بي سرور ماحول ۾.



جو ذريعو: www.habr.com

تبصرو شامل ڪريو