Quarkus څنګه اړین او عکس العمل پروګرامونه سره یوځای کوي

سږکال موږ پلان لرو چې په جدي ډول د کانټینر موضوعاتو ته وده ورکړو، Cloud-Native Java и کوبنیټس. د دې موضوعاتو منطقي دوام به د کوارکوس چوکاټ په اړه یوه کیسه وي، مخکې له دې په پام کې نیول شوی په Habré کې. د نن ورځې مقاله د "سباتومیک سپرفاسټ جاوا" ډیزاین په اړه لږ او د هغه ژمنې په اړه نور څه دي چې کوارکوس شرکت ته راوړي.

Quarkus څنګه اړین او عکس العمل پروګرامونه سره یوځای کوي

جاوا او JVM لاهم خورا مشهور دي ، مګر کله چې د سرور بې ټیکنالوژیو او کلاوډ اصلي مایکرو سرویسونو سره کار کوي ، جاوا او نورې JVM ژبې لږ او لږ کارول کیږي ځکه چې دوی د حافظې ډیر ځای نیسي او د بارولو لپاره خورا ورو دی ، دوی رامینځته کوي. د لنډمهاله کانټینرونو سره د کارونې لپاره په خراب ډول مناسب. خوشبختانه، دا وضعیت اوس د کوارکوس څخه مننه بدلولو پیل کوي.

سوپرفاسټ سباتومیک جاوا نوې کچې ته رسیدلی!

42 ریلیزونه ، د ټولنې 8 میاشتې کار او 177 حیرانونکي پراختیا کونکي - د دې ټولو پایله د نومبر 2019 کې خوشې شوه کوارکس ۲, یوه خپرونه چې د پروژې په پراختیا کې یو مهم پړاو په نښه کوي او ډیری ښایسته ځانګړتیاوې او وړتیاوې وړاندې کوي (تاسو کولی شئ د دوی په اړه نور ولولئ اعلان).

نن ورځ موږ به تاسو ته وښیو چې کوارکس څنګه اړین او عکس العمل برنامې ماډلونه په یو واحد عکس العمل کې ترکیب کوي. موږ به د لنډ تاریخ سره پیل وکړو او بیا به په تفصیل سره وګورو چې د Quarkus غبرګون اصلي دوه اړخیزه څه ده او څنګه جاوا- پرمخ وړونکي کولی شي له دې ګټو ګټه پورته کړي.

کوچني خدمتونه, د پیښې پرمخ وړل شوي معمارۍ и serverless-فعالیتونه - دا ټول لکه څنګه چې دوی وايي، نن ورځ مخ په زیاتیدو دي. په دې وروستیو کې، د کلاوډ-مرکزي معمارۍ رامینځته کول خورا اسانه او د لاسرسي وړ شوي، مګر ستونزې پاتې دي - په ځانګړې توګه د جاوا پراختیا کونکو لپاره. د مثال په توګه، د سرور بې کاره فعالیتونو او مایکرو خدماتو په صورت کې، د پیل کولو وخت کمولو، د حافظې مصرف کمولو، او بیا هم د دوی پراختیا خورا اسانه او خوندور کولو لپاره عاجل اړتیا شتون لري. جاوا په وروستیو کلونو کې ډیری پرمختګونه کړي، لکه د کانټینرونو لپاره د ergonomics فعالیت ښه شوی او داسې نور. په هرصورت ، په کانټینر کې د سم کار کولو لپاره جاوا ترلاسه کول لاهم ننګونه ده. نو موږ به د جاوا ځینې اصلي پیچلتیاو ته په کتلو سره پیل وکړو ، کوم چې په ځانګړي توګه شدید دي کله چې د کانټینر پر بنسټ جاوا غوښتنلیکونو رامینځته کول.

لومړی، راځئ چې تاریخ وګورو.

Quarkus څنګه اړین او عکس العمل پروګرامونه سره یوځای کوي

جریانونه او کانتینرونه

د 8u131 نسخه سره پیل کول، جاوا د ergonomics فعالیت کې د پرمختګ له امله لږ یا لږ مالتړ کانټینرونو ته پیل وکړ. په ځانګړې توګه، JVM اوس پوهیږي چې څومره پروسیسر کورونه روان دي او کولی شي د تار حوضونه تنظیم کړي - په ځانګړي ډول فورک / جوین پولونه - په همدې اساس. البته، دا خورا ښه دی، مګر راځئ چې ووایو چې موږ یو دودیز ویب غوښتنلیک لرو چې د HTTP خدمتونه کاروي او په Tomcat، Jetty، او نور کې چلوي. د پایلې په توګه، دا غوښتنلیک به هرې غوښتنې ته جلا تار ورکړي او اجازه ورکړي چې د I/O عملیاتو په انتظار کې دا تار بند کړي، د بیلګې په توګه، کله چې ډیټابیس، فایلونو یا نورو خدماتو ته لاسرسی ومومي. دا دی، د داسې غوښتنلیک اندازه د شته کورونو په شمیر پورې اړه نلري، مګر په ورته وخت کې د غوښتنو شمیر پورې اړه لري. برسېره پردې، دا پدې مانا ده چې د کورونو په شمیر کې په کوبرنیټس کې کوټې یا محدودیتونه به دلته ډیره مرسته ونکړي، او موضوع به په پای کې په تخته کولو کې پای ته ورسیږي.

د حافظې ستړیا

تارونه حافظه ده. او د انټر کانټینر حافظې محدودیتونه په هیڅ ډول د درملنې لپاره ندي. یوازې د غوښتنلیکونو او تارونو شمیر ډیرول پیل کړئ ، او ژر یا وروسته به تاسو د سویچ کولو فریکونسۍ کې د جدي زیاتوالي سره مخ شئ او په پایله کې ، د فعالیت تخریب. همچنان ، که ستاسو غوښتنلیک دودیز مایکرو سرویس چوکاټ کاروي ، یا ډیټابیس سره وصل وي ، یا کیچنګ کاروي ، یا بل ډول حافظه کاروي ، تاسو په څرګنده توګه داسې وسیلې ته اړتیا لرئ چې تاسو ته اجازه درکوي د JVM دننه وګورئ او وګورئ چې دا څنګه له وژلو پرته حافظه اداره کوي. JVM پخپله (د مثال په توګه، XX:+UseCGroupMemoryLimitForHeap). او که څه هم، د جاوا 9 راهیسې، JVM د cgroups منل او د هغې مطابق تطبیق کول زده کړل، د حافظې ساتل او اداره کول یوه پیچلې مسله پاتې ده.

کوټې او حدود

جاوا 11 د CPU کوټو لپاره ملاتړ معرفي کړ (لکه PreferContainerQuotaForCPUCount). Kubernetes د محدودیتونو او کوټو لپاره هم ملاتړ وړاندیز کوي. هو ، دا ټول معنی لري ، مګر که غوښتنلیک بیا له تخصیص شوي کوټې څخه ډیر شي ، نو موږ بیا د اندازې سره پای ته ورسیږو - لکه څنګه چې د دودیز جاوا غوښتنلیکونو قضیه ده - د کور شمیر لخوا ټاکل کیږي او د هر یو لپاره د جلا تار تخصیص سره. غوښتنه، نو په دې ټولو کې لږ احساس شتون لري.
سربیره پردې ، که تاسو د کوبرنیټس لاندې پلیټ فارم کوټا او محدودیتونه یا د پیمانه کولو افعال وکاروئ ، ستونزه هم پخپله نه حل کیږي. موږ په ساده ډول د اصلي ستونزې په حل کولو کې ډیرې سرچینې مصرف کوو یا ډیر لګښت پای ته رسوو. او که دا په عامه عامه بادل کې د لوړ بار سیسټم وي ، نو موږ نږدې یقینا د اړتیا په پرتله ډیرې سرچینې وکاروو.

او د دې ټولو سره څه وکړي؟

د دې ساده کولو لپاره ، غیر متزلزل او غیر بلاکیدونکي I/O کتابتونونه او چوکاټونه لکه نیټي ، Vert.x یا اکا. دوی د دوی د عکس العمل طبیعت له امله په کانټینرونو کې د کار کولو لپاره خورا مناسب دي. د غیر بندولو I/O څخه مننه، ورته تار کولی شي ډیری یوځل غوښتنې پروسس کړي. پداسې حال کې چې یوه غوښتنه د I/O پایلو ته انتظار باسي ، د تار پروسس کولو دا خوشې کیږي او د بلې غوښتنې لخوا اخیستل کیږي. او کله چې د I/O پایلې په پای کې راشي، د لومړۍ غوښتنې پروسس دوام لري. په ورته تار کې د غوښتنو د مینځلو پروسس کولو سره ، تاسو کولی شئ د تارونو ټولټال شمیر کم کړئ او د غوښتنو پروسس کولو لپاره د سرچینو مصرف کم کړئ.

د I/O نه بلاک کولو سره، د کور شمیره یو کلیدي پیرامیټر کیږي ځکه چې دا د I/O تارونو شمیر ټاکي چې په موازي توګه اجرا کیدی شي. کله چې په سمه توګه کارول کیږي، دا تاسو ته اجازه درکوي په مؤثره توګه د کور ترمنځ بار وویشئ او د لږو سرچینو سره د لوړ کاري بار اداره کړئ.

څنګه، دا ټول؟

نه، بل څه شته. عکس العمل برنامه کول د سرچینو غوره کارولو کې مرسته کوي ، مګر په نرخ کې هم راځي. په ځانګړې توګه، کوډ باید د غیر بلاک کولو اصولو سره سم بیا لیکل شي او د I/O تارونو بندولو څخه مخنیوی وشي. او دا د پراختیا او اجرا کولو یو بشپړ مختلف ماډل دی. او که څه هم دلته ډیر ګټور کتابتونونه شتون لري، دا لاهم د فکر کولو معمول ډول کې بنسټیز بدلون دی.

لومړی، تاسو اړتیا لرئ د کوډ لیکلو څرنګوالی زده کړئ چې په غیر متناسب ډول پرمخ ځي. یوځل چې تاسو د غیر بلاک کولو I/O کارول پیل کړئ ، تاسو اړتیا لرئ په واضح ډول مشخص کړئ چې څه باید پیښ شي کله چې غوښتنې ته ځواب ترلاسه شي. په ساده ډول بندول او انتظار کول به نور کار ونکړي. پرځای یې، تاسو کولی شئ کال بیکونه تېر کړئ، د غبرګون پروګرام کولو یا دوام څخه کار واخلئ. مګر دا ټول ندي: د غیر بلاکینګ I/O کارولو لپاره ، تاسو دواړه غیر بلاک کولو سرورونو او پیرودونکو ته اړتیا لرئ ، په غوره توګه هرچیرې. د HTTP په قضیه کې، هرڅه ساده دي، مګر ډیټابیسونه، د فایل سیسټمونه، او نور ډیر څه شتون لري.

او که څه هم د پای څخه تر پای پورې بشپړ عکس العمل د موثریت اعظمي کوي، دا ډول بدلون په عمل کې د معدې لپاره ستونزمن کیدی شي. له همدې امله، د غبرګون او لازمي کوډ سره یوځای کولو وړتیا د دې لپاره یو شرط دی چې:

  1. د سافټویر سیسټم خورا بار شوي برخو کې سرچینې په مؤثره توګه وکاروئ؛
  2. په پاتې برخو کې ساده سټایل کوډ وکاروئ.

د کوارکس معرفي کول

په حقیقت کې، دا د Quarkus جوهر دی - د یو واحد چلولو چاپیریال کې د غبرګون او اړین ماډلونو سره یوځای کول.

Quarkus د Vert.x او Netty پر بنسټ والړ دی، د پراختیا کونکي سره د مرستې لپاره په سر کې د یو لړ عکس العمل چوکاټونو او توسیعونو سره. کوارکس نه یوازې د HTTP مایکرو خدماتو جوړولو لپاره ډیزاین شوی ، بلکه د پیښې لخوا پرمخ وړل شوي معمارۍ هم. د خپل عکس العمل طبیعت له امله، دا د پیغام رسولو سیسټمونو (اپاچی کافکا، AMQP، او نور) سره خورا اغیزمن کار کوي.

چال دا دی چې څنګه د لازمي او عکس العمل کوډ لپاره ورته عکس العمل انجن وکاروئ.

Quarkus څنګه اړین او عکس العمل پروګرامونه سره یوځای کوي

Quarkus دا په ښه توګه ترسره کوي. د لازمي او عکس العمل تر مینځ انتخاب څرګند دی - د دواړو لپاره عکس العمل دانه وکاروئ. هغه څه چې دا واقعیا ورسره مرسته کوي ګړندی ، غیر بلاک کوډ دی چې نږدې هرڅه اداره کوي چې د پیښې - لوپ تار څخه تیریږي ، عرف IO تار. مګر که تاسو کلاسیک REST یا د پیرودونکي اړخ غوښتنلیکونه لرئ ، Quarkus په چمتو کې د لازمي برنامې ماډل لري. د مثال په توګه، په Quarkus کې د HTTP ملاتړ د غیر بلاک کولو او عکس العمل انجن (Eclipse Vert.x او Netty) کارولو پر بنسټ والړ دی. ستاسو د غوښتنلیک لخوا ترلاسه شوي ټول HTTP غوښتنې لومړی د پیښې لوپ (IO Thread) له لارې تیریږي او بیا د کوډ برخې ته لیږل کیږي چې غوښتنې اداره کوي. د منزل پورې اړه لري، د غوښتنې مدیریت کوډ په جلا تار کې ویل کیدی شي (د کارګر تار په نوم یادیږي، د سرولیټونو او جاکس-RS په قضیه کې کارول کیږي) یا د سرچینې I/O تار (عکس العمل لاره) وکاروئ.

Quarkus څنګه اړین او عکس العمل پروګرامونه سره یوځای کوي

د پیغام رسولو سیسټم نښلونکي غیر بلاکونکي پیرودونکي کاروي چې د Vert.x انجن په سر کې روان دي. له همدې امله، تاسو کولی شئ په مؤثره توګه د منځني وییر سیسټمونو پیغامونو څخه پیغامونه واستوئ، ترلاسه کړئ او پروسس کړئ.

په سایټ کې Quarkus.io دلته ځینې ښه ښوونې دي چې تاسو سره د Quarkus پیل کولو کې مرسته کوي:

موږ آنلاین لاسي ټیوټوریلونه هم رامینځته کړي ترڅو تاسو ته یوازې په براوزر کې د عکس العمل پروګرام کولو مختلف اړخونه درکړي، IDE ته اړتیا نشته، او کمپیوټر ته اړتیا نشته. تاسو کولی شئ دا درسونه ومومئ دلته.

ګټورې سرچینې

د کوارکس په اړه 10 ویډیو درسونه د موضوع سره آشنا کیدو لپاره

لکه څنګه چې دوی په ویب پاڼه کې وايي Quarkus.io, کوارکوس - ده کوبنیټس- اورینټډ جاوا سټیک ، د GraalVM او OpenJDK HotSpot لپاره جوړ شوی او د جاوا غوره کتابتونونو او معیارونو څخه راټول شوی.

تاسو سره د موضوع په پوهیدو کې د مرستې لپاره، موږ 10 ویډیو ټیوټوریلونه غوره کړي چې د Quarkus مختلف اړخونه او د هغې د کارولو مثالونه پوښي:

1. د کوارکس معرفي کول: د کوبرنیټس لپاره د راتلونکي نسل جاوا چوکاټ

د توماس قوارنسټروم او جیسن ګرین لخوا
د Quarkus پروژې هدف د Kubernetes او سرور بې چاپیریال لپاره د جاوا پلیټ فارم رامینځته کول دي، او د عکس العمل او لازمي برنامه کولو ماډلونه په یو واحد چلولو چاپیریال کې یوځای کول دي ترڅو پراختیا کونکي وکولی شي د پراخه توزیع شوي غوښتنلیک آرکیټیکچرونو سره کار کولو په وخت کې د انعطاف وړ خپل چلند بدل کړي. لاندې په تعارفي لیکچر کې نور معلومات ترلاسه کړئ.

2. Quarkus: Superfast Subatomic Java

لخوا: Burr Sutter
د DevNation Live څخه دا ویډیو ټیوټوریل ښیې چې څنګه کوارکس وکاروئ ترڅو د تصدۍ جاوا غوښتنلیکونه ، APIs ، مایکرو خدمتونه ، او د کوبرنیټس/اوپین شیفټ چاپیریال کې بې سرور افعال غوره کړئ ، دوی خورا کوچني ، ګړندي او ډیر توزیع وړ کوي.

3. Quarkus او GraalVM: د هایبرنیټ ګړندی کول سوپر سرعت ته او د فرعي اتومیک اندازو ته راکښته کول

لیکوال: سان ګرینویرو
د پریزنټشن څخه تاسو به زده کړئ چې کوارکوس څنګه رامینځته شو، دا څنګه کار کوي، او دا څنګه تاسو ته اجازه درکوي پیچلي کتابتونونه جوړ کړئ، لکه د هایبرنیټ ORM، د اصلي GraalVM انځورونو سره مطابقت لري.

4. د سرور پرته غوښتنلیکونو رامینځته کول زده کړئ

لیکوال: مارتین لوتر
لاندې ویډیو ښیې چې څنګه د Quarkus په کارولو سره یو ساده جاوا اپلیکیشن رامینځته کړئ او په Knative کې د سرور پرته غوښتنلیک په توګه ځای په ځای کړئ.

5. Quarkus: د کوډ کولو خوند واخلئ

لیکوال: اډسن یاناګا
ستاسو د لومړي کوارکس پروژې رامینځته کولو لپاره ویډیو لارښود ، تاسو ته اجازه درکوي پوه شئ چې ولې کوارکس د پراختیا کونکو زړونه ګټلي.

6. جاوا او کانټینرونه - د دوی راتلونکی به څه وي

د مارک لیټل لخوا لیکل شوی
دا پریزنټشن د جاوا تاریخ معرفي کوي او تشریح کوي چې ولې کوارکوس د جاوا راتلونکی دی.

7. Quarkus: Superfast Subatomic Java

لیکوال: دیمیتریس اندرادیس
د Quarkus د ګټو یوه کتنه چې د پراختیا کونکو لخوا پیژندل شوي: سادگي، خورا لوړ سرعت، غوره کتابتونونه او معیارونه.

8. Quarkus او subatomic راکټ سیسټمونه

لیکوال: کلیمینټ ایسکوفیر
د GraalVM سره د ادغام له لارې، Quarkus د الټرا ګړندۍ پراختیا تجربه او د فرعي اټومي چلولو چاپیریال چمتو کوي. لیکوال د کوارکس د عکس العمل اړخ په اړه خبرې کوي او د عکس العمل او سټرینګ غوښتنلیکونو جوړولو لپاره یې د کارولو څرنګوالی.

9. په Eclipse MicroProfile کې Quarkus او د غوښتنلیک چټک پرمختګ

لیکوال: جان کلینګن
د Eclipse MicroProfile او Quarkus په یوځای کولو سره، پرمخ وړونکي کولی شي بشپړ ځانګړتیاوې لرونکي کانټینر شوي مایکرو پروفایل غوښتنلیکونه رامینځته کړي چې په لسګونو ملی ثانیو کې پیل کیږي. ویډیو د کوبرنیټس پلیټ فارم کې د ځای پرځای کولو لپاره د کانټینر شوي مایکرو پروفایل غوښتنلیک کوډ کولو څرنګوالي په اړه توضیحاتو ته ځي.

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

لیکوال: مارکوس بیل
لیکوال ښیې چې د کوارکس کارولو څرنګوالی د خورا کوچني ، خورا ګړندي جاوا کانټینرونو رامینځته کولو لپاره چې واقعیا پرمختګ رامینځته کوي ، په ځانګړي توګه په بې سرور چاپیریال کې.



سرچینه: www.habr.com

Add a comment