ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሞችን እንዴት እንደሚያጣምር

በዚህ ዓመት የመያዣ ጭብጦችን በቁም ነገር ለማዳበር አቅደናል ፣ ክላውድ-ቤተኛ ጃቫ и ኩባንያቶች. የእነዚህ ርእሶች አመክንዮአዊ ቀጣይነት ስለ ኳርኩስ ማዕቀፍ ታሪክ ይሆናል፣ አስቀድሞ ግምት ውስጥ ይገባል ሀበሬ ላይ። የዛሬው መጣጥፍ ስለ "ሱባቶሚክ ሱፐርፋስት ጃቫ" ዲዛይን እና ኳርኩስ ለኢንተርፕራይዝ ስለሚያመጣው ተስፋ ያነሰ ነው።

ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሞችን እንዴት እንደሚያጣምር

ጃቫ እና ጄቪኤም አሁንም እጅግ በጣም ተወዳጅ ናቸው ነገር ግን ከአገልጋይ አልባ ቴክኖሎጂዎች እና ከዳመና-ተወላጅ ማይክሮ ሰርቪስ ጋር ሲሰሩ ጃቫ እና ሌሎች JVM ቋንቋዎች በጣም ብዙ የማስታወሻ ቦታ ስለሚወስዱ እና ለመጫን በጣም ቀርፋፋ ስለሆኑ ጥቅም ላይ ይውላሉ. ለአጭር ጊዜ መያዣዎች ለመጠቀም በጣም ተስማሚ ያልሆነ። እንደ እድል ሆኖ, ይህ ሁኔታ አሁን ለኳርኩስ ምስጋና ይግባው መለወጥ ጀምሯል.

እጅግ በጣም ፈጣን ሱባቶሚክ ጃቫ አዲስ ደረጃ ላይ ደርሷል!

42 የተለቀቁት፣ የ8 ወራት የማህበረሰብ ስራ እና 177 አስገራሚ ገንቢዎች - የሁሉም ውጤት በህዳር 2019 የተለቀቀው ኳርኩስ 1.0, በፕሮጀክቱ እድገት ውስጥ ወሳኝ ምዕራፍን የሚያመለክት እና ብዙ ጥሩ ባህሪያትን እና ችሎታዎችን የሚያቀርብ ልቀት (ስለእነሱ የበለጠ ማንበብ ይችላሉ በ ውስጥ ማስታወቂያ).

ዛሬ ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሚንግ ሞዴሎችን ወደ አንድ ምላሽ ሰጪ ኮር እንዴት እንደሚያዋህድ እናሳይዎታለን። በአጭሩ ታሪክ እንጀምራለን ከዚያም የኳርኩስ ምላሽ ሰጪ ኮር ምንታዌነት ምን እንደሆነ እና እንዴት እንደሆነ በዝርዝር እንገልፃለን። ጃቫ- ገንቢዎች እነዚህን ጥቅሞች መጠቀም ይችላሉ።

የማይክሮ አገልግሎቶች, የክስተት አርክቴክቸር и አገልጋይ ያልያዘ-ተግባራት - ይህ ሁሉ እነሱ እንደሚሉት, ዛሬ እየጨመረ ነው. በቅርብ ጊዜ, ደመናን ያማከለ አርክቴክቸር መፍጠር በጣም ቀላል እና የበለጠ ተደራሽ ሆኗል, ነገር ግን ችግሮች አሁንም አሉ - በተለይ ለጃቫ ገንቢዎች. ለምሳሌ አገልጋይ አልባ ተግባራትን እና ማይክሮ ሰርቪሶችን በተመለከተ የጅምር ጊዜን መቀነስ ፣የማስታወስ ፍጆታን መቀነስ እና አሁንም እድገታቸውን የበለጠ ምቹ እና አስደሳች ማድረግ ያስፈልጋል። ጃቫ በቅርብ ዓመታት ውስጥ በርካታ ማሻሻያዎችን አድርጓል፣ ለምሳሌ የተሻሻለ ergonomics ለኮንቴይነሮች እና የመሳሰሉት። ሆኖም ጃቫን በኮንቴይነር ውስጥ በትክክል እንዲሰራ ማድረግ አሁንም ፈታኝ ነው። ስለዚህ አንዳንድ የጃቫን ውስብስብ ነገሮች በመመልከት እንጀምራለን።

በመጀመሪያ ታሪክን እንመልከት።

ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሞችን እንዴት እንደሚያጣምር

ጅረቶች እና መያዣዎች

ከስሪት 8u131 ጀምሮ ጃቫ በergonomics ተግባር መሻሻሎች ምክንያት ብዙ ወይም ያነሰ የድጋፍ መያዣዎችን ጀመረ። በተለይም JVM አሁን ምን ያህል ፕሮሰሰር ኮሮች እየሰራ እንደሆነ ያውቃል እና የክር ገንዳዎችን -በተለይ ሹካ/መቀላቀል ገንዳዎችን ማዋቀር ይችላል። በእርግጥ ይህ በጣም ጥሩ ነው፣ ግን የኤችቲቲፒ አገልጋዮችን የሚጠቀም እና በቶምካት፣ ጄቲ፣ ወዘተ የሚሰራ ባህላዊ የድር መተግበሪያ አለን እንበል። በዚህ ምክንያት ይህ አፕሊኬሽን ለእያንዳንዱ ጥያቄ የተለየ ክር ይሰጠዋል እና የ I/O ስራዎችን በመጠባበቅ ላይ እያለ ይህን ክር እንዲያግድ ያስችለዋል, ለምሳሌ የውሂብ ጎታውን, ፋይሎችን ወይም ሌሎች አገልግሎቶችን ሲደርሱ. ያም ማለት የእንደዚህ አይነት አፕሊኬሽኑ መጠን በተገኙ ኮሮች ብዛት ላይ የተመካ አይደለም, ነገር ግን በአንድ ጊዜ ጥያቄዎች ብዛት ላይ. በተጨማሪም, ይህ ማለት በኩበርኔትስ ውስጥ በኩሬዎች ብዛት ላይ ያሉ ኮታዎች ወይም ገደቦች እዚህ ብዙም አይረዱም, እና ጉዳዩ በመጨረሻ በስሮትል ውስጥ ያበቃል.

የማስታወስ ድካም

ክሮች ትውስታ ናቸው. እና የውስጠ-ኮንቴይነር የማስታወስ ውሱንነቶች በምንም መልኩ መድሃኒት አይደሉም። የመተግበሪያዎች እና ክሮች ብዛት መጨመር ብቻ ይጀምሩ፣ እና ፈጥኖም ሆነ ዘግይቶ የመቀያየር ድግግሞሽ እና በውጤቱም የአፈፃፀም ውድቀት ላይ ወሳኝ ጭማሪ ያጋጥምዎታል። እንዲሁም፣ አፕሊኬሽንዎ ባህላዊ ማይክሮ ሰርቪስ ማዕቀፎችን የሚጠቀም ከሆነ ወይም ከዳታቤዝ ጋር ከተገናኘ ወይም መሸጎጫ የሚጠቀም ከሆነ ወይም በሌላ መንገድ ማህደረ ትውስታን የሚጠቀም ከሆነ JVM ውስጥ እንዲመለከቱ እና ማህደረ ትውስታን ሳይገድሉ እንዴት እንደሚቆጣጠሩ ለማየት የሚያስችል መሳሪያ ያስፈልግዎታል። JVM ራሱ (ለምሳሌ XX:+ UseCGroupMemoryLimitForHeap)። እና ምንም እንኳን ከጃቫ 9 ጀምሮ JVM ስብስቦችን መቀበል እና በዚህ መሰረት መላመድን ተምሯል፣ ማህደረ ትውስታን ማቆየት እና ማስተዳደር በጣም የተወሳሰበ ጉዳይ ነው።

ኮታዎች እና ገደቦች

Java 11 ለሲፒዩ ኮታዎች ድጋፍ አስተዋውቋል (እንደ PreferContainerQuotaForCPUCount)። ኩበርኔትስ ገደብ እና ኮታዎችን ይደግፋል። አዎ ፣ ይህ ሁሉ ትርጉም ይሰጣል ፣ ግን አፕሊኬሽኑ እንደገና ከተመደበው ኮታ በላይ ከሆነ ፣ እንደገና መጠኑን እንጨርሳለን - እንደ ባህላዊ የጃቫ አፕሊኬሽኖች - በኮር ብዛት እና ለእያንዳንዱ የተለየ ክር በመመደብ ይወሰናል ። ጥያቄ ፣ ከዚያ በዚህ ሁሉ ውስጥ ትንሽ ስሜት አለ።
በተጨማሪም ፣ ኮታዎችን እና ገደቦችን ከተጠቀሙ ወይም የመድረክን የ Kubernetes መመዘኛ ተግባራትን ከተጠቀሙ ችግሩ እንዲሁ በራሱ አይፈታም። ዋናውን ችግር ለመፍታት በቀላሉ ተጨማሪ ሀብቶችን እናጠፋለን ወይም መጨረሻ ላይ ከመጠን በላይ ወጪን እናወጣለን። እና በይፋዊ ደመና ውስጥ ባለ ከፍተኛ ጭነት ስርዓት ከሆነ፣ በእርግጠኝነት ከምንፈልገው በላይ ብዙ ሀብቶችን እንጠቀማለን።

እና ከዚህ ሁሉ ጋር ምን ይደረግ?

በቀላሉ ለማስቀመጥ ያልተመሳሰሉ እና የማይከለክሉ I/O ቤተ-መጻሕፍትን እና እንደ Netty ያሉ ማዕቀፎችን ይጠቀሙ። Vert.x ወይም አካ. በተቀላጠፈ ባህሪያቸው ምክንያት በእቃ መያዣዎች ውስጥ ለመሥራት በጣም የተሻሉ ናቸው. I/Oን ላልከለከለው ምስጋና ይግባውና ተመሳሳዩ ክር ብዙ በአንድ ጊዜ ጥያቄዎችን ማስተናገድ ይችላል። አንድ ጥያቄ የI/O ውጤቶችን በመጠባበቅ ላይ እያለ፣ የክር ሂደቱ ይለቀቃል እና በሌላ ጥያቄ ይወሰዳል። እና በመጨረሻ የI/O ውጤቶች ሲመጡ፣የመጀመሪያው ጥያቄ ሂደት ይቀጥላል። በተመሳሳዩ ክር ውስጥ የተጠላለፉ ጥያቄዎችን በማስተናገድ አጠቃላይ የክሮችን ብዛት መቀነስ እና ጥያቄዎችን ለማስኬድ የግብዓት ፍጆታን መቀነስ ይችላሉ።

በማይከለክለው I/O፣ የኮርሶች ቁጥር በትይዩ የሚፈፀሙ የ I/O ክሮች ብዛት ስለሚወስን የቁልፍ መለኪያ ይሆናል። በትክክል ጥቅም ላይ ሲውል, ይህ ሸክሙን በኮሮች መካከል ውጤታማ በሆነ መንገድ ለማሰራጨት እና ከፍተኛ የስራ ጫናዎችን በትንሽ ሀብቶች እንዲቆጣጠሩ ያስችልዎታል.

እንዴት ነው ያ ሁሉ?

አይ፣ ሌላም ነገር አለ። ሪአክቲቭ ፕሮግራሚንግ ሃብቶችን በተሻለ ሁኔታ ለመጠቀም ይረዳል፣ነገር ግን ዋጋ ያስከፍላል። በተለይም ኮዱ ያለመከልከል መርሆዎችን መሰረት በማድረግ እንደገና መፃፍ እና የ I/O ክሮች እንዳይታገድ ማድረግ ያስፈልጋል። እና ይህ ሙሉ ለሙሉ የተለየ የእድገት እና የአፈፃፀም ሞዴል ነው. እና ምንም እንኳን እዚህ ብዙ ጠቃሚ ቤተ-መጻሕፍት ቢኖሩም በተለመደው የአስተሳሰብ መንገድ ሥር ነቀል ለውጥ ነው.

በመጀመሪያ ፣ ባልተመሳሰል ሁኔታ የሚሰራ ኮድ እንዴት እንደሚፃፍ መማር ያስፈልግዎታል። አንዴ አለማገድ I/Oን መጠቀም ከጀመርክ ለጥያቄው ምላሽ ሲደርሰው ምን መሆን እንዳለበት በግልፅ መግለጽ አለብህ። ዝም ብሎ ማገድ እና መጠበቅ ከአሁን በኋላ አይሰራም። በምትኩ፣ መልሶ ጥሪዎችን ማለፍ፣ ምላሽ ሰጪ ፕሮግራሞችን ወይም ቀጣይን መጠቀም ይችላሉ። ነገር ግን ያ ብቻ አይደለም፡ የማይከለክል I/Oን ለመጠቀም፣ ሁለቱንም የማያግድ አገልጋይ እና ደንበኛ ያስፈልግዎታል፣ በተለይም በሁሉም ቦታ። በኤችቲቲፒ ጉዳይ ሁሉም ነገር ቀላል ነው፣ ግን የውሂብ ጎታዎች፣ የፋይል ስርዓቶች እና ሌሎችም አሉ።

እና ምንም እንኳን አጠቃላይ ከጫፍ እስከ ጫፍ ምላሽ መስጠት ቅልጥፍናን ቢያሳድግም፣ እንዲህ ዓይነቱ ለውጥ በተግባር ሆድ ውስጥ አስቸጋሪ ሊሆን ይችላል። ስለዚህ፣ ምላሽ ሰጪ እና አስፈላጊ ኮድን የማጣመር ችሎታ የሚከተሉትን ለማድረግ ቅድመ ሁኔታ ይሆናል።

  1. በሶፍትዌር ስርዓቱ ውስጥ በጣም በተጫኑ ቦታዎች ውስጥ ሀብቶችን በብቃት መጠቀም;
  2. በቀሪ ክፍሎቹ ውስጥ ቀላል የቅጥ ኮድ ይጠቀሙ።

ኳርኩስን በማስተዋወቅ ላይ

በእውነቱ ይህ የኳርኩስ ይዘት ነው - ምላሽ ሰጪ እና አስፈላጊ ሞዴሎችን በአንድ የሩጫ ጊዜ ውስጥ ማዋሃድ።

ኳርኩስ በVert.x እና Netty ላይ የተመሰረተ ነው፣ ገንቢውን ለማገዝ በርካታ ምላሽ ሰጪ ማዕቀፎች እና ቅጥያዎች አሉት። ኳርኩስ የተነደፈው የኤችቲቲፒ ማይክሮ ሰርቪስ ብቻ ሳይሆን በክስተት ላይ የተመሰረቱ አርክቴክቸርዎችን ለመገንባት ነው። በባህሪው ምላሽ ሰጪ በመሆኑ፣ ከመልዕክት መላላኪያ ስርዓቶች (Apache Kafka፣ AMQP፣ ወዘተ) ጋር በጣም ውጤታማ በሆነ መልኩ ይሰራል።

ዘዴው ተመሳሳዩን ምላሽ ሰጪ ሞተር ለሁለቱም አስፈላጊ እና ምላሽ ሰጪ ኮድ እንዴት መጠቀም እንደሚቻል ነው።

ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሞችን እንዴት እንደሚያጣምር

ኳርኩስ ይህንን በግሩም ሁኔታ ይሠራል። በአስፈላጊ እና ምላሽ ሰጪ መካከል ያለው ምርጫ ግልጽ ነው - ለሁለቱም ምላሽ ሰጪ ከርነል ይጠቀሙ። በእውነቱ የሚረዳው በክስተት-ሉፕ ክር፣ aka IO ክር ውስጥ የሚያልፈውን ሁሉንም ነገር የሚያስተናግድ ፈጣን፣ የማያግድ ኮድ ነው። ነገር ግን ክላሲክ REST ወይም ደንበኛ-ጎን አፕሊኬሽኖች ካሉዎት፣ ኳርኩስ በጣም አስፈላጊ የሆነ የፕሮግራም አወጣጥ ሞዴል ተዘጋጅቶለታል። ለምሳሌ፣ በኳርኩስ ውስጥ ያለው የኤችቲቲፒ ድጋፍ የማያግድ እና ምላሽ ሰጪ ሞተር (Eclipse Vert.x እና Netty) በመጠቀም ላይ የተመሰረተ ነው። በመተግበሪያዎ የተቀበሉት ሁሉም የኤችቲቲፒ ጥያቄዎች በመጀመሪያ በክስተት loop (IO Thread) በኩል ይለፋሉ እና ከዚያ ጥያቄዎቹን ወደሚያስተዳድረው ኮድ ክፍል ይላካሉ። እንደ መድረሻው ፣ የጥያቄው አስተዳደር ኮድ በተለየ ክር ውስጥ ሊጠራ ይችላል (የሠራተኛ ክር ተብሎ የሚጠራው ፣ በ servlets እና Jax-RS ውስጥ ጥቅም ላይ የሚውለው) ወይም የ I/O ክር (reactive route) ምንጭን ይጠቀሙ።

ኳርኩስ አስፈላጊ እና ምላሽ ሰጪ ፕሮግራሞችን እንዴት እንደሚያጣምር

የመልእክት መላላኪያ ሲስተም ማገናኛዎች በVert.x ሞተር ላይ የሚሰሩ የማይከለክሉ ደንበኞችን ይጠቀማሉ። ስለዚህ፣ ከመሃል ዌር ሲስተሞች መልዕክቶችን በብቃት መላክ፣ መቀበል እና ማስኬድ ይችላሉ።

በጣቢያው ላይ Quarcus.io በኳርኩስ እንዲጀምሩ የሚያግዙዎት አንዳንድ ጥሩ አጋዥ ስልጠናዎች እዚህ አሉ።

እንዲሁም የተለያዩ የሪአክቲቭ ፕሮግራሞችን በአሳሽ ብቻ ለማስተማር፣ IDE አያስፈልግም እና ኮምፒውተር አያስፈልግም ለማስተማር በመስመር ላይ የሚሰሩ አጋዥ ስልጠናዎችን ፈጥረናል። እነዚህን ትምህርቶች ማግኘት ይችላሉ እዚህ.

ጠቃሚ ሀብቶች

ከርዕሱ ጋር ለመተዋወቅ በኳርኩስ ላይ 10 የቪዲዮ ትምህርቶች

በድረ-ገጹ ላይ እንዳሉት Quarcus.io, ኩርኩስ - ነው ኩባንያቶች-ተኮር የጃቫ ቁልል፣ ለ GraalVM እና OpenJDK HotSpot የተዘጋጀ እና ከምርጥ የጃቫ ቤተ-መጻሕፍት እና ደረጃዎች የተሰበሰበ።

ርዕሱን ለመረዳት እንዲረዳን የኳርኩስን የተለያዩ ገጽታዎች እና የአጠቃቀም ምሳሌዎችን የሚሸፍኑ 10 የቪዲዮ ትምህርቶችን መርጠናል፡-

1. ኳርኩስን ማስተዋወቅ፡ የሚቀጥለው ትውልድ ጃቫ መዋቅር ለኩበርኔትስ

በቶማስ Qvarnstrom እና ጄሰን ግሪን
የኳርኩስ ፕሮጀክት ግብ ለኩበርኔትስ እና አገልጋይ አልባ አካባቢዎች የጃቫ መድረክ መፍጠር እና አጸፋዊ እና አስፈላጊ የፕሮግራሚንግ ሞዴሎችን ወደ አንድ የሩጫ ጊዜ አካባቢ በማጣመር ገንቢዎች ከተለያዩ የተከፋፈሉ አፕሊኬሽንስ አርክቴክቸር ጋር ሲሰሩ አቀራረባቸውን በተለዋዋጭ መንገድ መቀየር ነው። ከዚህ በታች ባለው የመግቢያ ንግግር የበለጠ ይወቁ።

2. ኳርኩስ፡ እጅግ በጣም ፈጣን ሱባቶሚክ ጃቫ

በ: Burr Sutter
ይህ የዴቭኔሽን ቀጥታ ስርጭት የኢንተርፕራይዝ ጃቫ አፕሊኬሽኖችን፣ ኤፒአይዎችን፣ ማይክሮ ሰርቪስ እና አገልጋይ አልባ ተግባራትን በኩበርኔትስ/OpenShift አካባቢ ለማመቻቸት Quarkusን እንዴት መጠቀም እንደሚቻል ያሳያል፣ይህም በጣም ትንሽ፣ፈጣን እና የበለጠ ሊሰፋ የሚችል ያደርጋቸዋል።

3. ኳርኩስ እና ግራአልቪኤም፡ Hibernateን ወደ እጅግ በጣም ፍጥነቶች በማፋጠን እና ወደ ንዑስ-አቶሚክ መጠኖች መቀነስ።

ደራሲ: Sanne Grinovero
ከዝግጅት አቀራረቡ ኳርኩስ እንዴት እንደመጣ፣ እንዴት እንደሚሰራ እና እንዴት እንደ Hibernate ORM ያሉ ውስብስብ ቤተ-ፍርግሞችን ለመስራት እንደሚያስችል ከGalVM ምስሎች ጋር ተኳሃኝ ሆነው ይማራሉ።

4. አገልጋይ አልባ መተግበሪያዎችን ማዘጋጀት ይማሩ

ደራሲ: ማርቲን ሉተር
ከታች ያለው ቪዲዮ ኳርኩስን በመጠቀም ቀላል የጃቫ አፕሊኬሽን መፍጠር እና እንደ አገልጋይ አልባ አፕሊኬሽን በKnative ላይ እንደሚያሰማራ ያሳያል።

5. ኳርኩስ: ኮድ ማድረግ ይዝናኑ

ደራሲ: ኤድሰን ያናጋ
ኳርኩስ የገንቢዎችን ልብ ለምን እንደሚያሸንፍ እንዲረዱ የሚያስችልዎ የመጀመሪያውን የኳርኩስ ፕሮጀክት ለመፍጠር የቪዲዮ መመሪያ።

6. ጃቫ እና ኮንቴይነሮች - የወደፊት ሕይወታቸው አንድ ላይ ምን እንደሚሆን

በማርክ ሊትል ተለጠፈ
ይህ የዝግጅት አቀራረብ የጃቫን ታሪክ ያስተዋውቃል እና ለምን ኳርኩስ የጃቫ የወደፊት እንደሚሆን ያብራራል።

7. ኳርኩስ፡ እጅግ በጣም ፈጣን ሱባቶሚክ ጃቫ

ደራሲ: Dimitris Andreadis
ከገንቢዎች እውቅና ያገኘው የኳርኩስ ጥቅሞች አጠቃላይ እይታ ቀላልነት ፣ እጅግ በጣም ከፍተኛ ፍጥነት ፣ ምርጥ ቤተ-መጽሐፍት እና ደረጃዎች።

8. የኳርኩስ እና የሱባቶሚክ ሮኬት ስርዓቶች

ደራሲ፡ ክሌመንት ኢስኮፈር
ከግራልቪኤም ጋር በመዋሃድ፣ ኳርኩስ እጅግ በጣም ፈጣን የሆነ የእድገት ተሞክሮ እና የሱባቶሚክ የሩጫ ጊዜ አካባቢን ይሰጣል። ደራሲው ስለ ኳርኩስ ምላሽ ሰጪ ጎን እና ምላሽ ሰጪ እና ዥረት አፕሊኬሽኖችን ለመገንባት እንዴት እንደሚጠቀሙበት ይናገራል።

9. በ Eclipse ማይክሮፕሮፋይል ውስጥ የኳርኩስ እና ፈጣን የመተግበሪያ እድገት

ደራሲ: John Clingan
Eclipse MicroProfile እና Quarkusን በማጣመር ገንቢዎች በአስር ሚሊሰከንዶች የሚጀምሩ ሙሉ ባህሪ ያላቸው በኮንቴይነር የተሰሩ የማይክሮ ፕሮፋይል መተግበሪያዎችን መፍጠር ይችላሉ። ቪዲዮው በኩበርኔትስ መድረክ ላይ ለማሰማራት በኮንቴይነር የተያዘ የማይክሮ ፕሮፋይል መተግበሪያን እንዴት ኮድ ማድረግ እንደሚቻል በዝርዝር ያሳያል።

10. Java, "Turbo" ስሪት

ደራሲ: ማርከስ Biel
ደራሲው ኳርኩስን እንዴት መጠቀም እንደሚቻል ያሳያል እጅግ በጣም ትንሽ ፣ እጅግ በጣም ፈጣን የጃቫ ኮንቴይነሮች እውነተኛ ግኝቶችን የሚያነቃቁ ፣በተለይ አገልጋይ በሌለው አከባቢ።



ምንጭ: hab.com

አስተያየት ያክሉ