Hacker News

ነጠላ-ክር C ++ን ከብዙ-ክር ዝገት ጋር አገናኘን።

ነጠላ-ክር C ++ን ከብዙ-ክር ዝገት ጋር አገናኘን። ይህ አጠቃላይ የበይነገጽ ትንተና ዋና ክፍሎቹን እና ሰፋ ያሉ እንድምታዎችን በዝርዝር ይመረምራል። የትኩረት ቁልፍ ቦታዎች ውይይቱ የሚያተኩረው፡- ኮር ሜች...

1 min read Via antithesis.com

Mewayz Team

Editorial Team

Hacker News
የተሟላው የ SEO ብሎግ ልጥፍ ይኸውና፡

አንድ-ክር C++ን ከብዙ-ክር ዝገት ጋር አገናኘን

ባለአንድ ክር C++ ኮድን ከብዙ-ክር ዝገት ጋር ማገናኘት የሚቻል ብቻ አይደለም - ሙሉ በሙሉ እንደገና ሳይፃፍ የቆዩ ስርዓቶችን ለማዘመን በጣም ተግባራዊ ከሆኑ መንገዶች አንዱ ነው። በMewayz፣ የእኛን ባለ 207-ሞዱል የንግድ ስርዓተ ክወና ለ138,000 ተጠቃሚዎችን ስናቀርብ ይህንን ትክክለኛ ፈተና ተቋቁመናል፣ እና ውጤቶቹ በመሠረቱ ስለስርዓቶች መስተጋብር እንዴት ያለን አመለካከት ለውጠዋል።

ለምንድነው ባለ ነጠላ-ፈትል C++ ከብዙ ባለ-ክሪድ ዝገት ጋር በይነገጽ ?

አብዛኞቹ የምርት ስርዓቶች በጦርነት የተፈተነ C++ ኮድ ለዓመታት ይይዛሉ። በሩስት ውስጥ ሁሉንም ነገር እንደገና መፃፍ በወረቀት ላይ ማራኪ ይመስላል ፣ ግን ትልቅ አደጋን እና የወራት የምህንድስና ጊዜን ያስተዋውቃል። ተግባራዊ አካሄድ ተጨማሪ ጉዲፈቻ ነው - ነባሩን የC++ አመክንዮ በመጠቅለል የተመጣጠነ ከባድ የስራ ጫናዎችን ወደ Rust የባለቤትነት ሞዴል በማውረድ ላይ።

በእኛ ሁኔታ፣ የኮር ቢዝነስ ሎጂክ ሞጁሎች በነጠላ-ክር C++ ለአመታት በአስተማማኝ ሁኔታ ሲሰሩ ቆይተዋል። ተከታታይ የተግባር ሂደትን፣ የሰነድ ማመንጨትን እና የፋይናንስ ስሌቶችን ወስደዋል። ነገር ግን የተጠቃሚ መሰረታችን ከ100ሺህ በላይ ሲያድግ ትይዩ መረጃን ማቀናበር፣ በአንድ ጊዜ የኤፒአይ አያያዝ እና ደህንነቱ የተጠበቀ የጋራ ግዛት አስተዳደር እንፈልጋለን። የ Rust's ላክ እና አስምር ባህሪያት C++ ያለ ሰፊ የእጅ ኦዲት በቀላሉ ሊሰጥ እንደማይችል ዋስትና ሰጥተውናል።

ዋናው ማበረታቻ የአደጋ ቅነሳ ነው። የሚሠራውን ትጠብቃለህ፣ እና ምን ሚዛኖችን ታክላለህ — ያለ ቁማር የእርስዎን አጠቃላይ ኮድ ቤዝ በጭራሽ ሊጨርሰው በማይችል ፍልሰት ላይ።

የFFI ወሰን በትክክል እንዴት ይሰራል?

በC++ እና Rust መካከል ያለው የውጭ ተግባር በይነገጽ (ኤፍኤፍአይ) የሚሰራው በ C-ተኳሃኝ የተግባር ፊርማዎች ነው። Rust's extern "C" C++ በቀጥታ ሊጠራቸው የሚችላቸውን ተግባራት ያግዳል እና በተቃራኒው። የRust ባለብዙ-ክር የሩጫ ጊዜ ነጠላ-ክር ያለው C++ ኮድ ደህንነቱ በተጠበቀ ሁኔታ መጥራት ሲፈልግ ወሳኙ ፈተና ይመጣል።

ይህንን በልዩ አርክቴክቸር በመጠቀም ፈትተናል፡

  • በክር የተከለለ C++ አስፈፃሚ፡ ሁሉም የC++ ጥሪዎች የሚተላለፉት መልእክትን የሚያስተላልፍ ቻናል በመጠቀም በአንድ የተወሰነ ክር ነው፣ ይህም ነጠላ-ክር ያለው ተለዋዋጭነት ፈጽሞ እንደማይጣስ ያረጋግጣል።
  • ዝገት አሲኒክ ድልድይ ንብርብር፡ የቶኪዮ ተግባራት ስራን ለC++ አስፈፃሚ ያቅርቡ እና የመጠባበቅውጤቶችን በአንድ ትኩስ ቻናሎች በኩል ያስረክባሉ፣ ይህም የዛገቱ ጎን ሙሉ በሙሉ እንዳይመሳሰል ያደርገዋል።
  • ግልጽ ያልሆነ የጠቋሚ አስተዳደር፡ C++ ነገሮች በቋንቋ ወሰን ላይ የማህደረ ትውስታ ፍንጣቂዎችን ለመከላከል Dropን የሚተገብሩ በዝገት መዋቅሮች ተጠቅልለዋል።
  • በድንበሩ ላይ ተከታታይ ማድረግ፡ የተወሳሰቡ የመረጃ አወቃቀሮች በFFI ንብርብር ወደ FlatBuffers በተከታታይ ተቀምጠዋል፣ ይህም በቀላሉ የማይበላሽ የስትራክት አቀማመጥን ማዛመድን በማስቀረት እና የእያንዳንዱ ወገን ዝግመተ ለውጥን ያስችላል።
  • የድንጋጤ ማግለል፡ የዝገት መያዝ_unwind እያንዳንዱን የFFI መግቢያ ነጥብ ያጠቃልላል ስለዚህ ድንጋጤ የቋንቋውን ድንበር ፈጽሞ እንዳያልፈው፣ ይህም ያልተገለጸ ባህሪ ይሆናል።

ይህ ስርዓተ-ጥለት የባለብዙ-ክር ዝገትን ከተረጋገጠ የC++ አመክንዮ አስተማማኝነት ጋር - የመጀመሪያውን የንግድ ደንቦችን አንድ መስመር እንደገና ሳንጽፍ ረድቶናል።

መራቅ የሌለባቸው ዋና ዋና ጥፋቶች ምንድን ናቸው?

በጣም አደገኛ የሆነው ስህተት የC++ ኮድ በማይሆንበት ጊዜ በክር-አስተማማኝ ነው ብሎ ማሰብ ነው። የአለምአቀፍ ሁኔታ፣ የማይለዋወጡ ተለዋዋጮች እና ዳግም የማይገቡ የቤተ መፃህፍት ጥሪዎች የRust's compiler በFFI ወሰን ላይ ሊያገኛቸው የማይችላቸውን የውሂብ ዘሮች ያስከትላሉ። የዝገት ደህንነት ዋስትናዎች በደህንነቱ ያልተጠበቀ እገዳ ላይ ይቆማሉ - ሁሉም ነገር የእርስዎ ኃላፊነት ነው።

ቁልፍ ግንዛቤ፡ ዝገት የማህደረ ትውስታን ደህንነት በራሱ ኮድ ዋስትና ይሰጣል፣ ነገር ግን የFFI ድንበርን ወደ C++ በተሻገሩበት ጊዜ፣ C++ ያለበትን እያንዳንዱን የክር-ደህንነት ችግር ይወርሳሉ። በዚያ ወሰን ዙሪያ ያለው አርክቴክቸር በሁለቱም በኩል ካለው ኮድ የበለጠ አስፈላጊ ነው።

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

ሌላው የተለመደ ወጥመድ የህይወት ዘመን አስተዳደር ነው። የC++ ነገሮች በሩስት ብድር መፈተሻ ውስጥ አይሳተፉም። C++ አሁንም ጠቋሚ ሲይዝ Rust ማጣቀሻን ከጣለ፣ ከጥቅም ውጪ የሆኑ ሳንካዎች በጭካኔ ለመመርመር ይቸገራሉ። ይህንን የጠበቀ የባለቤትነት ትርጉምን በማስፈጸም መፍታት ችለናል፡ C++ ነገሮች ሁል ጊዜ በትክክል በአንድ ዝገት መጠቅለያ የተያዙ ናቸው፣ እና የተጋራ መዳረሻ በአርክ ላይ የተመሰረተ በዝገት በኩል ቆጠራ ነው።

ከአፈጻጸም አንፃር ከመጠን በላይ የFFI ጥሪዎች ከአውድ መቀያየር እና ተከታታይነት በላይ ትርፍ ይፈጥራሉ። በተቻለ መጠን ኦፕሬሽኖችን እናዘጋጃለን፣የስራ እቃዎችን ወረፋ ወደ C++ ፈጻሚው በመላክ በግል ቋንቋ አቋራጭ ጥሪዎችን ከማድረግ ይልቅ።

ይህ አቀራረብ በምርት ላይ እንዴት ተከናወነ?

የድብልቅ አርክቴክቸርን በመድረክ ላይ ካሰማራነው በኋላ ተጨባጭ ማሻሻያዎችን ለካን። ከዚህ ቀደም በቅደም ተከተል C++ ሂደት ላይ ችግር ላጋጠማቸው ሞጁሎች የጥያቄ ግብአት በ3.4x ጨምሯል። የጭራ መዘግየት (p99) በ61% ቀንሷል ምክንያቱም Rust's async Runtime ነፃ ጥያቄዎችን በአንድ ጊዜ ማስተናገድ ስለሚችል C++ በተሰጠው ክር ላይ ስሌት-ከባድ ስራዎችን ሲሰራ።

ከሁሉም በላይ፣ በመጀመሪያዎቹ ስድስት ወራት ምርት ውስጥ ዜሮ የሚዛመዱ ትሎች ነበሩን። የክር-መያዣ ጥለት ሲ++ ኮድ ከበርካታ ክሮች ለመጥራት በመዋቅራዊ ሁኔታ የማይቻል አድርጎታል፣ የ Rust አይነት ሲስተም ግን በድንበሩ በኩል የውሂብ ውድድርን ከልክሏል። ይህ በአንድ ሩብ ጊዜ ውስጥ ሶስት የዘር ሁኔታ ሁኔታዎችን ከፈጠረው ከሙቲክስ ጋር ወደ C++ ክርክሮችን ለመጨመር ከሞከርንበት ከቀደምት አቀራረባችን ላይ ትልቅ መሻሻል ነበር።

የኢንጂነሪንግ ቡድኑ ፈጣን የመድገም ዑደቶችንም ሪፖርት አድርጓል። አዲስ ባህሪያት በሩስት ውስጥ ከሙሉ ተመሳሳይ ድጋፍ ጋር ሊገነቡ ይችላሉ፣ ነባር የC++ ሞጁሎች ግን ሳይሻሻሉ መስራታቸውን ቀጥለዋል። ይህ የመጨመሪያ ስልት ማለት ከፍተኛ ስጋት ያለው "ትልቅ ባንግ" ፍልሰት በጭራሽ አላጋጠመንም ማለት ነው - ልክ የተረጋጋ፣ ሊለካ የሚችል መሻሻል።

ብዙ ጊዜ የሚጠየቁ ጥያቄዎች

ዝገት ባለ ነጠላ ክር C++ ቤተ-መጻሕፍት ያለ ማሻሻያ ሊጠራ ይችላል?

አዎ፣ ግን ወደዚያ ቤተ-መጽሐፍት የሚደረጉ ጥሪዎች ከአንድ ነጠላ ክር መከሰታቸውን ማረጋገጥ አለቦት። መደበኛ ስርዓተ ጥለቱ ሁሉንም የC++ ጥሪዎች በሰርጥ የሚይዝ ራሱን የቻለ አስፈፃሚ ክር መፍጠር ነው። የሩስት አስምር ተግባራት ብዙ ባለ ብዙ ክር ያለው የሩጫ ጊዜን ሳይገድቡ ጥያቄዎችን ያስገባሉ እና ምላሾችን ይጠብቃሉ። የC++ ኮድ እራሱ ምንም አይነት ለውጥ አያስፈልገውም - የደህንነት ገደቡ ሙሉ በሙሉ በዝገቱ በኩል ተፈጻሚ ነው።

የኤፍኤፍአይ ትርፍ የመተግበሪያ አፈጻጸም ላይ ተጽዕኖ ለማድረግ በቂ ነው?

የግለሰብ የFFI ጥሪዎች ዝቅተኛ ክፍያ አላቸው - በተለይ ለቀላል ተግባር ጥሪ ከ10 nanoseconds በታች። ነገር ግን፣ የተወሳሰቡ የውሂብ አወቃቀሮች ተከታታይነት እና የክር ማመሳሰል ድንበር ላይ በሺዎች የሚቆጠሩ ጥሩ ጥራት ያላቸውን ጥሪዎች ካደረጉ ይጨምራሉ። የማጣመር ስራዎች እና እንደ FlatBuffers ወይም Cap'n Proto ያሉ ዜሮ-ቅዳ ተከታታይ ቅርጸቶችን መጠቀም ከመጠን በላይ በሚዛን ደረጃ እንኳን ቸልተኛ ያደርገዋል።

የእኛን C++ ኮድ ቤዝ ከመጠላለፍ ይልቅ በሩስት ውስጥ እንደገና መፃፍ አለብን?

ለአብዛኛዎቹ ቡድኖች ተጨማሪ መስተጋብር ይበልጥ ደህንነቱ የተጠበቀ እና ፈጣን መንገድ ነው። ሙሉ ድጋሚ መፃፍ እስኪጠናቀቅ ድረስ ምንም አይነት የተጠቃሚ-ተኮር እሴት ሳይኖረው የወራት የምህንድስና ስጋትን ያስተዋውቃል። መስተጋብር ማሻሻያዎችን ወዲያውኑ እንዲልኩ፣ በምርት ውስጥ ያለውን የዝገት አካሄድ እንዲያረጋግጡ እና ሞጁሎችን አንድ በአንድ እንዲሰደዱ ያስችልዎታል ኮንፈረንስ ከፍተኛውን ተፅእኖ በሚያመጣበት ቦታ ላይ በመመስረት። የFFI ወሰንን ለመጠበቅ የሚወጣው ወጪ እንደገና ለመፃፍ ከሚወጣው ወጪ በላይ የሆኑ ሞጁሎችን ብቻ ይፃፉ።


በመዋይዝ፣ ሚዛኑን የጠበቁ መሠረተ ልማቶችን እንገነባለን - በቴክኒክም ሆነ በተግባር። የእኛ ባለ 207-ሞዱል ቢዝነስ ኦኤስ 138,000 ቡድኖች ከ$19 በወር ጀምሮ ብልህ የስራ ፍሰቶችን እንዲያካሂዱ ይረዳል። ፕሮጄክቶችን እያስተዳደረህ፣ ኦፕሬሽንን በራስ-ሰር እያደረግክ ወይም ንግድህን እየሰፋህ ከሆነ Mewayz ከምትሰራበት መንገድ ጋር ይስማማል። የነጻ ሙከራዎን በapp.mewayz.com ይጀምሩ እና ዘመናዊ የንግድ ስርዓተ ክወና ለቡድንዎ ምን እንደሚያደርግ ይመልከቱ።