Rajistan Rarraba don Kayan Wuta: Ƙwarewa tare da Fabric Hyperledger

Sannu, Ina aiki a cikin ƙungiyar aikin DRD KP (rarrabuwar rajistar bayanan don sa ido kan yanayin rayuwa na saitin ƙafafun). Anan ina so in raba kwarewar ƙungiyarmu wajen haɓaka blockchain na kasuwanci don wannan aikin a ƙarƙashin ƙaƙƙarfan fasaha. Yawancin zan yi magana ne game da Fabric na Hyperledger, amma hanyar da aka kwatanta a nan za a iya fitar da ita zuwa kowane blockchain da aka ba da izini. Babban makasudin bincikenmu shine shirya hanyoyin magance blockchain na kasuwanci ta yadda samfurin ƙarshe ya kasance mai daɗi don amfani kuma baya da wahala a kiyaye.

Ba za a sami abubuwan ganowa ba, mafita ba zato ba tsammani, kuma babu wani ci gaba na musamman da za a haskaka a nan (saboda ba ni da komai). Ina so kawai in raba kwarewa ta tawali'u, nuna cewa "yana yiwuwa" kuma, watakila, karanta game da abubuwan da wasu mutane suka samu na yin yanke shawara mai kyau kuma ba haka ba ne a cikin sharhi.

Matsala: Blockchains ba su yi girma ba tukuna

A yau, ƙoƙarce-ƙoƙarcen masu haɓakawa da yawa suna da nufin sanya blockchain ya zama fasaha mai dacewa da gaske, kuma ba bam na lokaci ba a cikin kyakkyawan kundi. Tashoshin jihohi, naɗa kyakkyawan fata, plasma da sharding tabbas za su zama ruwan dare gama gari. Wata rana. Ko watakila TON zai sake jinkirta ƙaddamarwa na tsawon watanni shida, kuma Rukunin Plasma na gaba zai daina wanzuwa. Za mu iya yin imani da taswirar hanya ta gaba kuma mu karanta manyan farar takarda da dare, amma a nan da kuma yanzu muna buƙatar yin wani abu da abin da muke da shi. Yi shit.

Ayyukan da aka saita don ƙungiyarmu a cikin aikin na yanzu ya dubi gabaɗaya kamar haka: akwai batutuwa da yawa, sun kai dubunnan da yawa, waɗanda ba sa so su gina dangantaka akan amana; Wajibi ne a gina wani bayani akan DLT wanda zai yi aiki akan kwamfutoci na yau da kullun ba tare da buƙatun aiki na musamman ba kuma ya ba da ƙwarewar mai amfani ba mafi muni fiye da kowane tsarin lissafin tsakiya ba. Fasahar da ke bayan maganin dole ne ta rage yiwuwar yin amfani da muggan bayanai - shi ya sa blockchain yake nan.

Taken daga farar takarda da kafofin watsa labarai sun yi mana alkawarin cewa ci gaba na gaba zai ba mu damar yin miliyoyin ma'amala a cikin sakan daya. Menene gaske?

Mainnet Ethereum yana gudana a ~ 30 tps. Saboda wannan kadai, yana da wuya a gane shi azaman blockchain a kowace hanya da ta dace da bukatun kamfanoni. Daga cikin hanyoyin da aka ba da izini akwai alamomin da ke nuna 2000 tps (cikasa wakilcinko 3000 tps (Kayan aikin Hyperledger, akwai kadan kadan a cikin wallafe-wallafen, amma kuna buƙatar la'akari da cewa an gudanar da ma'auni a kan tsohuwar injin yarjejeniya). Was yunƙurin sarrafa Fabric mai tsattsauran ra'ayi, wanda bai ba da sakamako mafi muni ba, 20000 tps, amma ya zuwa yanzu wannan binciken ne kawai na ilimi, yana jiran ingantaccen aiwatar da shi. Yana da wuya cewa kamfani wanda zai iya samun damar kula da sashen masu haɓaka blockchain zai sa irin waɗannan alamu. Amma matsalar ba kawai kayan aiki ba ne, akwai kuma latency.

rashin laka

Jinkiri daga lokacin da aka fara ma'amala zuwa amincewarsa ta ƙarshe ta tsarin ya dogara ba kawai akan saurin da saƙon ke wucewa ta duk matakan tabbatarwa da oda ba, har ma a kan matakan ƙirƙira toshe. Ko da blockchain ɗinmu ya ba mu damar yin aiki da sauri na 1000000 tps, amma yana buƙatar minti 10 don samar da block 488 MB, shin zai zama mana sauƙi?

Bari mu dubi yanayin rayuwar mu'amala a cikin Hyperledger Fabric don fahimtar inda ake kashe lokaci da kuma yadda yake da alaƙa da toshe sigogin tsarawa.

Rajistan Rarraba don Kayan Wuta: Ƙwarewa tare da Fabric Hyperledger
dauka daga nan: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Abokin ciniki ya ƙirƙira ma'amala, aika shi zuwa abokan haɗin gwiwa, na ƙarshe yana kwatankwacin ma'amala (yi amfani da canje-canjen da aka yi ta hanyar sarƙoƙi zuwa halin yanzu, amma kar a ƙaddamar da jagorar) kuma karɓar RWSet - sunaye masu mahimmanci, sigogin da dabi'u An karɓa daga tarin a cikin CouchDB, (2) masu ba da tallafi suna aika da mayar da RWSet da aka sanya hannu ga abokin ciniki, (3) abokin ciniki ko dai ya bincika kasancewar sa hannun duk takwarorinsu masu dacewa (masu yarda), sannan aika ma'amala zuwa sabis na oda. , ko aika shi ba tare da tabbatarwa ba (cak ɗin zai ci gaba da gudana daga baya), sabis ɗin yin oda ya zama toshe kuma ( 4) yana aikawa ga duk takwarorinsu, ba kawai masu yarda ba; takwarorinsu suna duba cewa maɓallan maɓalli a cikin saitin karantawa sun dace da nau'ikan da ke cikin ma'ajin bayanai, cewa duk masu goyon baya suna da sa hannu, kuma a ƙarshe sun aikata toshe.

Amma ba haka kawai ba. Kalmomin "mai yin oda yana ba da toshe" suna ɓoye ba kawai odar ma'amaloli ba, har ma da buƙatun hanyar sadarwa guda 3 daga jagora zuwa mabiya da baya: jagora yana ƙara saƙo zuwa log ɗin, aika shi ga mabiyan, ƙarshen yana ƙara shi. zuwa ga log ɗin su, yana aika tabbatar da nasarar kwafi ga jagora, jagora ya aika saƙon, aika tabbatarwa ga mabiya, mabiyan aikatawa. Karamin girman da lokacin toshewa, mafi yawan lokuta sabis ɗin oda zai kafa yarjejeniya. Hyperledger Fabric yana da sigogi guda biyu don ƙirƙirar toshe: BatchTimeout - lokacin ƙirƙirar toshe da BatchSize - girman toshe (yawan ma'amaloli da girman toshe kanta a cikin bytes). Da zaran ɗaya daga cikin sigogin ya kai iyaka, ana fitar da sabon toshe. Yawan oda nodes, mafi tsayi wannan zai ɗauki. Don haka, kuna buƙatar ƙara BatchTimeout da BatchSize. Amma tunda RWSets suna sigar, girman toshe da muke yi, mafi girman yiwuwar rikice-rikice na MVCC. Bugu da ƙari, yayin da BatchTimeout ke ƙaruwa, UX yana raguwa sosai. Tsarin da ke gaba don magance waɗannan matsalolin yana da ma'ana kuma a bayyane yake a gare ni.

Yadda za a guje wa jiran ƙarewar toshewa kuma kada ku rasa ikon waƙa da matsayin ma'amala

Tsawon lokacin samuwar da girman toshe, mafi girman abin da ake samu na blockchain. Daya ba ya bi kai tsaye daga ɗayan, amma ya kamata a tuna cewa kafa yarjejeniya a cikin RAFT yana buƙatar buƙatun hanyar sadarwa guda uku daga jagora zuwa mabiya da baya. Yawan oda nodes, mafi tsayi wannan zai ɗauki. Karamin girman da lokacin toshewa, yawancin irin wannan hulɗar akwai. Yadda za a ƙara lokacin tsarawa da toshe girman ba tare da ƙara lokacin amsawar tsarin don mai amfani na ƙarshe ba?

Na farko, muna buƙatar ko ta yaya warware rikice-rikice na MVCC da ke haifar da babban girman toshe, wanda zai iya haɗawa da RWSets daban-daban tare da sigar iri ɗaya. A bayyane yake, a gefen abokin ciniki (dangane da hanyar sadarwar blockchain, wannan na iya zama ƙarshen baya, kuma ina nufin shi) kuna buƙatar. Mai sarrafa rikici MVCC, wanda zai iya zama ko dai sabis na daban ko mai kayan ado na yau da kullum sama da kira wanda ya fara ciniki tare da sake gwadawa.

Sake gwadawa za a iya aiwatar da shi tare da dabara mai ma'ana, amma sai latency zai ƙasƙantar da shi kamar yadda ba a faɗi ba. Don haka ya kamata ku yi amfani da ko dai sake gwadawa bazuwar cikin ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun iyaka, ko kuma na dindindin. Tare da ido kan yiwuwar karo a cikin zaɓi na farko.

Mataki na gaba shine sanya hulɗar abokin ciniki tare da tsarin asynchronous don kada ya jira daƙiƙa 15, 30 ko 10000000, wanda zamu saita azaman BatchTimeout. Amma a lokaci guda, yana da mahimmanci don kula da ikon tabbatar da cewa canje-canjen da aka fara ta hanyar ciniki ba a rubuta su a cikin blockchain ba.
Ana iya amfani da bayanan bayanai don adana matsayin ciniki. Zaɓin mafi sauƙi shine CouchDB saboda sauƙin amfani: bayanan yana da UI daga cikin akwatin, API REST, kuma zaka iya saita kwafi da sharewa cikin sauƙi. Kuna iya ƙirƙirar tarin daban a cikin misalin CouchDB iri ɗaya wanda ke amfani da Fabric don adana yanayin duniya. Muna buƙatar adana waɗannan nau'ikan takaddun.

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

An rubuta wannan takarda zuwa ma'ajin bayanai kafin a aika ma'amala ga takwarorinsu, an mayar da ID ɗin mahaluƙi ga mai amfani (ana amfani da ID iri ɗaya azaman maɓalli) idan wannan aikin ƙirƙira ne, sannan wuraren Status, TxID da Kuskure. sabunta kamar yadda dacewa bayanai aka samu daga takwarorina.

Rajistan Rarraba don Kayan Wuta: Ƙwarewa tare da Fabric Hyperledger

A cikin wannan makirci, mai amfani ba ya jira don toshewa a ƙarshe ya samar, yana kallon motar mai juyawa akan allon don 10 seconds, yana karɓar amsa nan take daga tsarin kuma ya ci gaba da aiki.

Mun zaɓi BoltDB don adana matsayin ma'amala saboda muna buƙatar adana ƙwaƙwalwar ajiya kuma ba ma son ɓata lokaci akan hulɗar cibiyar sadarwa tare da sabar bayanan daban, musamman lokacin da wannan hulɗar ta faru ta amfani da ka'idar rubutu bayyananne. Af, ko kuna amfani da CouchDB don aiwatar da makircin da aka bayyana a sama ko kuma kawai don adana yanayin duniya, a kowane hali yana da ma'ana don inganta yadda ake adana bayanai a cikin CouchDB. Ta hanyar tsoho, a cikin CouchDB, girman nodes na b-itace shine 1279 bytes, wanda ya fi ƙanƙanta da girman sassan akan faifai, wanda ke nufin duka karantawa da sake daidaita bishiyar zai buƙaci ƙarin damar jiki zuwa faifai. Mafi kyawun girman yayi daidai da ma'auni Babban Tsarin kuma 4 kilobytes. Don ingantawa muna buƙatar saita siga btree_chunk_size daidai da 4096 a cikin fayil ɗin sanyi na CouchDB. Don BoltDB irin wannan sa hannun hannu ba a buƙata ba.

Backpressure: dabarun buffer

Amma ana iya samun saƙonni da yawa. Fiye da tsarin zai iya ɗauka, raba albarkatu tare da dozin wasu ayyuka ban da waɗanda aka nuna a cikin zane - kuma duk wannan yakamata yayi aiki ba tare da lahani ba har ma akan injunan da sarrafa Intellij Idea zai zama mai ban sha'awa.

Matsalolin iya aiki daban-daban na tsarin sadarwa, masu samarwa da mabukaci, ana warware su ta hanyoyi daban-daban. Bari mu ga abin da za mu iya yi.

Faduwa: Za mu iya da'awar cewa muna da ikon sarrafawa a yawancin ma'amaloli na X a cikin dakika T. Duk buƙatun da suka wuce wannan iyaka ana zubar da su. Wannan abu ne mai sauqi qwarai, amma sannan zaku iya mantawa da UX.

Gudanarwa: dole ne mabukaci ya sami wani nau'i na dubawa ta hanyar wanda, dangane da kaya, zai iya sarrafa TPS na mai samarwa. Ba mummuna ba, amma yana sanya wajibai a kan masu haɓaka abokin ciniki suna ƙirƙirar kaya don aiwatar da wannan ƙirar. Wannan ba shi da karbuwa a gare mu, tun da blockchain zai kasance a nan gaba za a haɗa shi cikin adadi mai yawa na tsarin da aka daɗe.

Ƙaddamarwa: Maimakon ƙoƙarin yin tsayayya da rafin bayanan shigarwa, za mu iya ajiye wannan rafi kuma mu sarrafa shi a saurin da ake buƙata. Babu shakka wannan shine mafi kyawun bayani idan muna son samar da kyakkyawar ƙwarewar mai amfani. Mun aiwatar da buffer ta amfani da jerin gwano a cikin RabbitMQ.

Rajistan Rarraba don Kayan Wuta: Ƙwarewa tare da Fabric Hyperledger

An ƙara sabbin ayyuka guda biyu zuwa tsarin: (1) bayan buƙatar API ɗin ta zo, ana sanya saƙo tare da sigogi masu mahimmanci don kiran ma'amala a cikin jerin gwanon, kuma abokin ciniki ya karɓi saƙon cewa ciniki ya karɓi saƙon. tsarin, (2) mai baya yana karanta bayanai a cikin saurin da aka ƙayyade a cikin saitin daga layi; fara ciniki da sabunta bayanai a cikin ma'ajin hali.
Yanzu zaku iya ƙara lokacin samarwa da toshe ƙarfin gwargwadon yadda kuke so, ɓoye jinkiri daga mai amfani.

Sauran kayan aikin

Babu wani abu da aka ce a nan game da chaincode, saboda, a matsayin mai mulkin, babu wani abu don ingantawa a ciki. Chaincode yakamata ya zama mai sauƙi kuma amintacce gwargwadon yuwuwar - wannan shine duk abin da ake buƙata dashi. Tsarin yana taimaka mana rubuta lambar sarƙoƙi cikin sauƙi da aminci CCKit daga S7 Techlab da static analyzer farfado^CC.

Bugu da ƙari, ƙungiyarmu tana haɓaka saitin abubuwan amfani don yin aiki tare da Fabric mai sauƙi da jin daɗi: blockchain Explorer, mai amfani ga canje-canjen saitin hanyar sadarwa ta atomatik (ƙara/cire ƙungiyoyi, RAFT nodes), mai amfani don soke takaddun shaida da cire ainihi. Idan kuna son bayar da gudummawa, kuna maraba.

ƙarshe

Wannan tsarin yana ba ku damar sauƙin maye gurbin Hyperledger Fabric tare da Quorum, sauran cibiyoyin sadarwar Ethereum masu zaman kansu (PoA ko ma PoW), rage yawan kayan aiki na ainihi, amma a lokaci guda kula da UX na al'ada (duka masu amfani a cikin mai bincike da kuma tsarin haɗin gwiwar). Lokacin maye gurbin Fabric tare da Ethereum a cikin makircin, kawai kuna buƙatar canza dabaru na sabis na sake gwadawa / kayan ado daga sarrafa rikice-rikice na MVCC zuwa haɓakar atomatik da sake sakewa. Buffering da ma'ajin matsayi sun ba da damar ɓata lokacin amsawa daga lokacin ƙirƙirar toshe. Yanzu za ka iya ƙara dubban oda nodes kuma kada ka ji tsoro cewa tubalan an kafa sau da yawa da kuma load da oda sabis.

Ainihin, wannan shine kawai abin da nake so in raba. Zan yi farin ciki idan wannan ya taimaka wa wani a cikin aikinsa.

source: www.habr.com

Add a comment