ለዊልሴቶች የተከፋፈለ መዝገብ፡ ከሃይፐርልጀር ጨርቅ ጋር ያለ ልምድ

ጤና ይስጥልኝ ፣ በ DRD KP ፕሮጀክት ቡድን ውስጥ እሰራለሁ (የተሽከርካሪ ስብስቦችን የሕይወት ዑደት ለመከታተል የተከፋፈለ የመረጃ መዝገብ)። እዚህ በቴክኖሎጂ ገደቦች ውስጥ ለዚህ ፕሮጀክት የድርጅት ብሎክቼይን በማዘጋጀት የቡድናችንን ልምድ ማካፈል እፈልጋለሁ። እኔ ባብዛኛው የማወራው ስለ ሃይፐርልጀር ጨርቅ ነው፣ ነገር ግን እዚህ የተገለጸው አካሄድ ለማንኛውም የተፈቀደ blockchain ሊገለበጥ ይችላል። የኛ የምርምር የመጨረሻ ግብ የኢንተርፕራይዝ አግድ መፍትሄዎችን ማዘጋጀት ነው ስለዚህ የመጨረሻው ምርት ለመጠቀም አስደሳች እና ለማቆየት በጣም አስቸጋሪ አይደለም.

ምንም ግኝቶች አይኖሩም, ያልተጠበቁ መፍትሄዎች, እና ምንም ልዩ እድገቶች እዚህ ይደምቃሉ (ምክንያቱም ምንም የለኝም). የእኔን መጠነኛ ተሞክሮ ማካፈል ብቻ ነው፣ “ይቻል ነበር” የሚለውን አሳይ እና ምናልባትም በአስተያየቶቹ ውስጥ ጥሩ እና ጥሩ ያልሆኑ ውሳኔዎችን ለማድረግ ስለሌሎች ሰዎች ተሞክሮ ያንብቡ።

ችግር፡ ብሎክቼይን እስካሁን አልመጣም።

ዛሬ የብዙ ገንቢዎች ጥረት blockchainን በእውነት ምቹ ቴክኖሎጂ ለማድረግ ያለመ ነው እንጂ በሚያምር መጠቅለያ ውስጥ የጊዜ ቦምብ አይደለም። የስቴት ቻናሎች፣ ብሩህ አመለካከት ያላቸው ጥቅሎች፣ ፕላዝማ እና ሻርዲንግ ምናልባት የተለመደ ነገር ይሆናል። አንዳንድ ቀን። ወይም ምናልባት ቶን እንደገና ማስጀመርን ለስድስት ወራት ያራዝመዋል፣ እና የሚቀጥለው የፕላዝማ ቡድን መኖር ያቆማል። በሚቀጥለው ፍኖተ ካርታ አምነን በሌሊት የሚያምሩ ነጭ ወረቀቶችን ማንበብ እንችላለን ነገርግን እዚህ እና አሁን ባለን ነገር ማድረግ አለብን። ጉድ ሰራ።

አሁን ባለው ፕሮጀክት ውስጥ ለቡድናችን የተቀመጠው ተግባር በአጠቃላይ ይህንን ይመስላል-በእምነት ላይ ግንኙነቶችን መገንባት የማይፈልጉ ብዙ ርዕሰ ጉዳዮች, ወደ ብዙ ሺህ የሚደርሱ; ያለ ልዩ የአፈፃፀም መስፈርቶች በመደበኛ ፒሲዎች ላይ የሚሰራ እና የተጠቃሚ ተሞክሮን ከማንኛውም የተማከለ የሂሳብ አያያዝ ስርዓቶች የበለጠ የሚያቀርብ በ DLT ላይ መፍትሄ መገንባት አስፈላጊ ነው። ከመፍትሔው በስተጀርባ ያለው ቴክኖሎጂ በተንኮል አዘል መረጃን የመጠቀም እድልን መቀነስ አለበት - ለዚህም ነው blockchain እዚህ ያለው።

የሚቀጥለው ልማት በሰከንድ በሚሊዮን የሚቆጠሩ ግብይቶችን ለማድረግ እንደሚያስችለን ከነጭ ወረቀቶች እና ከመገናኛ ብዙሃን የተሰጡ መፈክሮች ቃል ገብተውልናል። በእርግጥ ምንድን ነው?

Mainnet Ethereum በአሁኑ ጊዜ በ ~ 30 tps እየሰራ ነው። በዚህ ምክንያት ብቻ ለድርጅታዊ ፍላጎቶች ተስማሚ በሆነ መንገድ እንደ blockchain መገንዘብ አስቸጋሪ ነው. ከተፈቀዱ መፍትሄዎች መካከል 2000 ቲፒኤስ (XNUMX ቲፒኤስ) የሚያሳዩ መለኪያዎች አሉ።ቡድን አባል) ወይም 3000 ቲፒኤስ (አሻንጉሊት ጫማ, በህትመቱ ውስጥ ትንሽ ትንሽ አለ, ነገር ግን መለኪያው በአሮጌው የጋራ መግባባት ሞተር ላይ መደረጉን ግምት ውስጥ ማስገባት አለብዎት). ነበር። ራዲካል የጨርቅ ማቀነባበሪያ ሙከራ, ይህም የከፋ ውጤት አልሰጠም, 20000 tps, ነገር ግን እስካሁን ድረስ ይህ ብቻ ትምህርታዊ ምርምር ነው, በውስጡ የተረጋጋ ትግበራ በመጠባበቅ ላይ. የብሎክቼይን ገንቢዎች ክፍልን ማቆየት የሚችል ኮርፖሬሽን እንደነዚህ ያሉትን ጠቋሚዎች መያዙ የማይመስል ነገር ነው። ችግሩ ግን የውጤት መጠን ብቻ ሳይሆን መዘግየትም አለ።

ያቆበቆበ

ግብይቱ ከተጀመረበት ጊዜ አንስቶ በስርአቱ እስከ መጨረሻው ይሁንታ ድረስ ያለው መዘግየት መልእክቱ በሁሉም የማረጋገጫ እና የማዘዣ ደረጃዎች ውስጥ በሚያልፉበት ፍጥነት ላይ ብቻ ሳይሆን በብሎክ ምስረታ መለኪያዎች ላይም ይወሰናል። የኛ ብሎክቼይን በ1000000 ቲፒኤስ ፍጥነት እንድንፈጽም ቢፈቅድልንም ነገር ግን 10 ሜባ ብሎክ ለማመንጨት 488 ደቂቃ ቢፈጅም ቀላል ይሆንልናል?

ጊዜ የት እንደሚያጠፋ እና ከትውልድ መመዘኛዎች ጋር እንዴት እንደሚገናኝ ለመረዳት በሃይፐርለጀር ጨርቅ ያለውን የግብይት የሕይወት ዑደት በዝርዝር እንመልከት።

ለዊልሴቶች የተከፋፈለ መዝገብ፡ ከሃይፐርልጀር ጨርቅ ጋር ያለ ልምድ
ከዚህ የተወሰደ: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) ደንበኛው ግብይት ፈጠረ ፣ ወደ ድጋፍ ሰጪ እኩዮች ይልካል ፣ የኋለኛው ግብይቱን አስመስሎ (በቼይንኮድ የተደረጉ ለውጦችን አሁን ባለው ሁኔታ ላይ ይተግብሩ ፣ ግን ለሂሳብ ደብተር አይውሰዱ) እና RWSet ይቀበሉ - ቁልፍ ስሞች ፣ ስሪቶች እና እሴቶች በ CouchDB ውስጥ ካለው ስብስብ የተወሰደ፣ (2) ደጋፊዎች የተፈረመ RWSet ለደንበኛው መልሰው ይልካሉ፣ (3) ደንበኛው የሁሉም አስፈላጊ እኩዮች (ደጋፊዎች) ፊርማ መኖሩን ካጣራ በኋላ ግብይቱን ወደ ትእዛዝ አገልግሎት ይልካል። , ወይም ያለ ማረጋገጫ ይልካል (ቼኩ አሁንም በኋላ ይከናወናል), የማዘዣ አገልግሎቱ እገዳን ይፈጥራል እና ( 4) ደጋፊዎችን ብቻ ሳይሆን ለሁሉም እኩዮች ይልካል; እኩዮች በተነበበው ስብስብ ውስጥ ያሉት ቁልፍ ስሪቶች በመረጃ ቋቱ ውስጥ ካሉት ስሪቶች ጋር እንደሚዛመዱ፣ ሁሉም ደጋፊዎች ፊርማ እንዳላቸው እና በመጨረሻም እገዳውን እንደሚፈጽሙ ያረጋግጣሉ።

ግን ያ ብቻ አይደለም። "አዘዛዥ አግድ" የሚሉት ቃላት የግብይቶችን ቅደም ተከተል ብቻ ሳይሆን ከመሪው ለተከታዮቹ እና ወደ ኋላ የሚቀርቡ 3 ተከታታይ የአውታረ መረብ ጥያቄዎችን ይደብቃሉ-መሪው ወደ ማስታወሻው መልእክት ይጨምረዋል ፣ ለተከታዮቹ ይልካል ፣ ሁለተኛው ይጨምራል ። ወደ ምዝግብ ማስታወሻቸው ፣ ለመሪው የተሳካ ማባዛት ማረጋገጫ ይልካል ፣ መሪው መልእክቱን ይልካል ፣ ለተከታዮች የቃል ማረጋገጫ ይልካል ፣ ተከታዮች ይፈፅማሉ ። የማገጃ ምስረታ መጠኑ እና ጊዜ ባነሰ መጠን ፣የትእዛዝ አገልግሎት ብዙ ጊዜ መግባባትን መፍጠር አለበት።. Hyperledger ጨርቅ የማገጃ ምስረታ ሁለት መለኪያዎች አሉት: BatchTimeout - የማገጃ ምስረታ ጊዜ እና BatchSize - የማገጃ መጠን (የግብይቶች ብዛት እና ብሎክ ራሱ ባይት ውስጥ መጠን). ልክ አንዱ መመዘኛዎች ገደቡ ላይ እንደደረሱ አዲስ እገዳ ይለቀቃል. ብዙ የትዕዛዝ አንጓዎች፣ ይህ ረዘም ያለ ጊዜ ይወስዳል። ስለዚህ, BatchTimeout እና BatchSizeን መጨመር ያስፈልግዎታል. ግን RWSets ስለተቀየረ፣ የምንሰራው ትልቅ ብሎክ፣ የ MVCC ግጭቶች እድላቸው ከፍ ያለ ይሆናል። በተጨማሪም BatchTimeout ሲጨምር UX በአሰቃቂ ሁኔታ ይቀንሳል። እነዚህን ችግሮች ለመፍታት የሚከተለው እቅድ ለእኔ ምክንያታዊ እና ግልጽ ይመስላል።

የማገጃ ማጠናቀቅን መጠበቅን እንዴት ማስወገድ እንደሚቻል እና የግብይት ሁኔታን የመከታተል ችሎታ እንዳያጡ

የምስረታ ጊዜ እና የማገጃው መጠን በረዘመ ቁጥር የብሎክቼይን መጠን ከፍ ይላል። አንዱ ከሌላው በቀጥታ አይከተልም ነገር ግን በ RAFT ውስጥ መግባባትን ለመፍጠር ከመሪው ለተከታዮቹ እና ወደ ኋላ ሶስት የኔትወርክ ጥያቄዎችን እንደሚያስፈልግ መታወስ አለበት. ብዙ የትዕዛዝ አንጓዎች፣ ይህ ረዘም ያለ ጊዜ ይወስዳል። የማገጃ ምስረታ ትንሽ መጠን እና ጊዜ, ተጨማሪ እንዲህ ያሉ መስተጋብሮች አሉ. ለዋና ተጠቃሚ የስርዓት ምላሽ ጊዜን ሳይጨምር የትውልድ ጊዜን እንዴት መጨመር እና መጠኑን ማገድ ይቻላል?

በመጀመሪያ፣ በትልቅ የማገጃ መጠን ምክንያት የሚከሰቱ የ MVCC ግጭቶችን እንደምንም መፍታት አለብን፣ ይህም ተመሳሳይ ስሪት ያላቸው የተለያዩ RWSetsን ሊያካትት ይችላል። በግልጽ ለማየት እንደሚቻለው, በደንበኛው በኩል (ከ blockchain አውታረ መረብ ጋር በተያያዘ, ይህ ጥሩ የጀርባ ጀርባ ሊሆን ይችላል, እና እኔ ማለቴ ነው) ያስፈልግዎታል የ MVCC ግጭት ተቆጣጣሪ, ይህም ወይ የተለየ አገልግሎት ወይም ከጥሪው በላይ መደበኛ ማስዋቢያ ሊሆን ይችላል ይህም ግብይቱን እንደገና በመሞከር አመክንዮ ያስጀምራል።

ድጋሚ ሞክር ገላጭ በሆነ ስልት ሊተገበር ይችላል፣ነገር ግን የቆይታ ጊዜ ልክ እንደዚሁ እያሽቆለቆለ ይሄዳል። ስለዚህ በዘፈቀደ የተደረገ ድጋሚ ሙከራ በተወሰኑ ትንንሽ ገደቦች ውስጥ ወይም በቋሚ ጊዜ መጠቀም አለብዎት። በመጀመሪያው አማራጭ ውስጥ ሊከሰቱ የሚችሉ ግጭቶችን በመመልከት.

ቀጣዩ እርምጃ ደንበኛው ከስርዓቱ ጋር ያለው ግንኙነት ለ15፣ 30 ወይም 10000000 ሰከንድ እንዳይቆይ ማድረግ ሲሆን ይህም እንደ BatchTimeout እናዘጋጃለን። ግን በተመሳሳይ ጊዜ በግብይቱ የተጀመሩ ለውጦች በብሎክቼን ውስጥ ያልተመዘገቡ መሆናቸውን የማረጋገጥ ችሎታን መጠበቅ ያስፈልጋል ።
የውሂብ ጎታ የግብይት ሁኔታን ለማከማቸት ጥቅም ላይ ሊውል ይችላል. በጣም ቀላሉ አማራጭ CouchDB በአጠቃቀም ቀላልነት ምክንያት ነው፡ ዳታቤዙ ከሳጥን ውስጥ UI አለው፣ REST API፣ እና ለእሱ ማባዛትን እና መጋራትን በቀላሉ ማዘጋጀት ይችላሉ። የዓለም ሁኔታውን ለማከማቸት ጨርቅን የሚጠቀም በተመሳሳዩ CouchDB ምሳሌ ውስጥ በቀላሉ የተለየ ስብስብ መፍጠር ይችላሉ። እነዚህን አይነት ሰነዶች ማከማቸት አለብን.

{
 Status string // Статус транзакции: "pending", "done", "failed"
 TxID: string // ID транзакции
 Error: string // optional, сообщение Ой Ошийко
}

ይህ ሰነድ ወደ ዳታቤዝ የተፃፈው ግብይቱ ወደ እኩዮች ከመላኩ በፊት ነው ፣የህጋዊ አካል መታወቂያው ወደ ተጠቃሚው ይመለሳል (ተመሳሳይ መታወቂያ እንደ ቁልፍ ጥቅም ላይ ይውላል) ይህ የመፍጠር ሥራ ከሆነ እና ከዚያ የሁኔታ ፣ TxID እና የስህተት መስኮች ጠቃሚ መረጃ ከእኩዮች ሲደርሰው ተዘምኗል።

ለዊልሴቶች የተከፋፈለ መዝገብ፡ ከሃይፐርልጀር ጨርቅ ጋር ያለ ልምድ

በዚህ እቅድ ውስጥ ተጠቃሚው እገዳው እስኪፈጠር ድረስ አይጠብቅም, በስክሪኑ ላይ የሚሽከረከረውን ጎማ ለ 10 ሰከንድ በመመልከት, ከስርዓቱ ፈጣን ምላሽ ይቀበላል እና መስራቱን ይቀጥላል.

የግብይት ሁኔታዎችን ለማከማቸት BoltDBን መርጠናል ምክንያቱም ማህደረ ትውስታን መቆጠብ ስለምንፈልግ እና ከተለየ የውሂብ ጎታ አገልጋይ ጋር በአውታረ መረብ ግንኙነት ጊዜ ማጥፋት ስለማንፈልግ በተለይም ይህ መስተጋብር ግልጽ የሆነ የጽሑፍ ፕሮቶኮልን በመጠቀም ሲከሰት። በነገራችን ላይ, ከላይ የተገለጸውን እቅድ ለመተግበር CouchDB ን ተጠቅመው ወይም በቀላሉ የዓለምን ሁኔታ ለማከማቸት, በማንኛውም ሁኔታ በ CouchDB ውስጥ ውሂብ የሚከማችበትን መንገድ ማመቻቸት ምክንያታዊ ነው. በነባሪ, በ CouchDB ውስጥ, የ b-tree nodes መጠን 1279 ባይት ነው, ይህም በዲስክ ላይ ካለው የሴክተሩ መጠን በጣም ያነሰ ነው, ይህም ማለት ሁለቱም ማንበብ እና ማመጣጠን ዛፉን ወደ ዲስክ የበለጠ አካላዊ መዳረሻን ይጠይቃል. በጣም ጥሩው መጠን ከመደበኛው ጋር ይዛመዳል የላቀ ቅርጸት እና 4 ኪሎባይት ነው. ለማመቻቸት መለኪያውን ማዘጋጀት ያስፈልገናል btree_chunk_መጠን 4096 እኩል ነው። በ CouchDB ውቅር ፋይል ውስጥ። ለቦልትዲቢ እንደዚህ አይነት የእጅ ጣልቃገብነት አያስፈልግም.

የኋላ ግፊት፡ የማቆያ ስልት

ግን ብዙ መልዕክቶች ሊኖሩ ይችላሉ. ስርዓቱ ሊቋቋመው ከሚችለው በላይ፣ በስዕሉ ላይ ከሚታዩት በተጨማሪ ሃብቶችን ከሌሎች ደርዘን አገልግሎቶች ጋር መጋራት - እና ይህ ሁሉ ኢንቴልሊጅ ሀሳብን ማስኬድ እጅግ በጣም አሰልቺ በሆነባቸው ማሽኖች ላይ እንኳን ያለምንም እንከን መስራት አለበት።

የግንኙነት ስርዓቶች, የአምራች እና የሸማቾች የተለያዩ አቅም ችግር በተለያየ መንገድ ይፈታል. ምን ማድረግ እንደምንችል እንይ።

መጣል፦ ቢበዛ የX ግብይቶችን በቲ ሰከንድ ለማስኬድ እንደቻልን ልንጠይቅ እንችላለን። ከዚህ ገደብ በላይ የሆኑ ሁሉም ጥያቄዎች ተጥለዋል። ይህ በጣም ቀላል ነው፣ ግን ከዚያ ስለ UX መርሳት ይችላሉ።

በመቆጣጠርሸማቹ እንደ ሸክሙ ላይ በመመስረት የአምራቹን TPS መቆጣጠር የሚችልበት አንድ ዓይነት በይነገጽ ሊኖረው ይገባል። መጥፎ አይደለም, ነገር ግን ይህንን በይነገጽ ለመተግበር ሸክሙን በሚፈጥሩ ደንበኛው ገንቢዎች ላይ ግዴታዎችን ይጥላል. ይህ ለኛ ተቀባይነት የለውም ምክንያቱም blockchain ወደፊት ከብዙ ረጅም ነባር ስርዓቶች ጋር ይጣመራል።

ማቋትየግቤት ዳታ ዥረቱን ለመቃወም ከመሞከር ይልቅ ይህንን ዥረት ጠብቀን በሚፈለገው ፍጥነት ልናስኬደው እንችላለን። ጥሩ የተጠቃሚ ተሞክሮ ማቅረብ ከፈለግን ይህ በጣም ጥሩው መፍትሄ እንደሆነ ግልጽ ነው። በ RabbitMQ ውስጥ ወረፋ በመጠቀም ቋቱን ተግባራዊ አድርገናል።

ለዊልሴቶች የተከፋፈለ መዝገብ፡ ከሃይፐርልጀር ጨርቅ ጋር ያለ ልምድ

በእቅዱ ላይ ሁለት አዳዲስ ድርጊቶች ተጨምረዋል፡ (1) ለኤፒአይ ጥያቄ ከመጣ በኋላ ግብይቱን ለመጥራት አስፈላጊ የሆኑትን መለኪያዎች የያዘ መልእክት በወረፋው ላይ ይደረጋል እና ደንበኛው ግብይቱ ተቀባይነት እንዳገኘ መልእክት ይደርሰዋል። ስርዓቱ, (2) የጀርባው መረጃ ከወረፋው ላይ በተጠቀሰው ፍጥነት በተገለጸው ፍጥነት ያነባል; ግብይት ይጀምራል እና በሁኔታ መደብር ውስጥ ያለውን ውሂብ ያዘምናል።
አሁን ከተጠቃሚው መዘግየቶችን በመደበቅ የፈለጉትን ያህል የምስረታ ጊዜን ማሳደግ እና አቅምን ማገድ ይችላሉ።

ሌሎች መሣሪያዎች

ስለ ቼይንኮድ እዚህ ምንም አልተነገረም, ምክንያቱም እንደ አንድ ደንብ, በውስጡ ለማመቻቸት ምንም ነገር የለም. Chaincode በተቻለ መጠን ቀላል እና ደህንነቱ የተጠበቀ መሆን አለበት - ከሱ የሚፈለገው ያ ብቻ ነው። ክፈፉ በቀላሉ እና ደህንነቱ በተጠበቀ ሁኔታ ቼይንኮድ እንድንጽፍ ይረዳናል። CCKit ከ S7 Techlab እና static analyzer ማነቃቃት^CC.

በተጨማሪም ቡድናችን ከጨርቃ ጨርቅ ጋር መስራት ቀላል እና አስደሳች እንዲሆን የተለያዩ መገልገያዎችን በማዘጋጀት ላይ ነው። blockchain አሳሽ, መገልገያ ለ ራስ-ሰር የአውታረ መረብ ውቅር ለውጦች (ድርጅቶችን መጨመር/ማስወገድ፣ RAFT nodes)፣ መገልገያ ለ የምስክር ወረቀቶችን መሻር እና ማንነትን ማስወገድ. ማበርከት ከፈለጉ እንኳን ደህና መጣችሁ።

መደምደሚያ

ይህ አቀራረብ የሃይፐርልጀር ጨርቅን በቀላሉ በQuorum, ሌሎች የግል የኤቲሬም ኔትወርኮች (PoA ወይም PoW) ለመተካት ያስችላል, ትክክለኛውን የውጤት መጠን በእጅጉ ይቀንሳል, ግን በተመሳሳይ ጊዜ መደበኛ UX (በአሳሹ ውስጥ ላሉ ተጠቃሚዎች እና ለተቀናጁ ስርዓቶች) መደበኛ እንዲሆን ያድርጉ. በእቅዱ ውስጥ ጨርቅን በኤቲሬም በምትተካበት ጊዜ የድጋሚ ሙከራ አገልግሎት/ዲኮርን የ MVCC ግጭቶችን ከማስኬድ ወደ አቶሚክ የማይጨምር እና እንደገና ወደ መላክ አመክንዮ መቀየር ብቻ ያስፈልግዎታል። ማቋት እና የሁኔታ ማከማቻ የምላሽ ሰዓቱን ከእገዳው ምስረታ ጊዜ ለማላቀቅ አስችሏል። አሁን በሺዎች የሚቆጠሩ የትዕዛዝ አንጓዎችን ማከል እና ብሎኮች ብዙ ጊዜ እንደሚፈጠሩ እና የማዘዣ አገልግሎቱን መጫን ይችላሉ ብለው አይፍሩ።

በመሠረቱ፣ ለማካፈል የፈለኩት ያ ብቻ ነው። ይህ አንድ ሰው በስራው ውስጥ ቢረዳ ደስተኛ ነኝ።

ምንጭ: hab.com

አስተያየት ያክሉ