Rejistra zaraina ho an'ny kodiarana: traikefa amin'ny lamba Hyperledger

Miarahaba, miasa ao amin'ny ekipan'ny tetikasa DRD KP aho (rejisitry ny angon-drakitra voazara ho an'ny fanaraha-maso ny tsingerin'ny fiainan'ny kodiarana). Eto aho dia te-hizara ny traikefan'ny ekipanay amin'ny famolavolana blockchain orinasa ho an'ity tetikasa ity eo ambanin'ny teritery napetraky ny teknolojia. Amin'ny ankapobeny, hiresaka momba ny Hyperledger Fabric aho, fa ny fomba fiasa voalaza eto dia azo ampidirina amin'ny blockchain nahazoana alalana. Ny tanjona faratampony amin'ny fikarohana ataontsika dia ny manomana vahaolana blockchain amin'ny orinasa amin'ny fomba izay hahafinaritra ny fampiasana ny vokatra farany ary tsy sarotra loatra ny mitazona.

Tsy hisy zavatra hita, vahaolana tsy ampoizina, ary tsy hisy fivoarana miavaka hasongadina eto (satria tsy manana aho). Te hizara ny traikefako tsotra fotsiny aho, asehoy fa "efa azo atao izany" ary, angamba, mamaky momba ny zavatra niainan'ny olona hafa momba ny fanapahan-kevitra tsara sy tsy dia tsara loatra ao amin'ny fanehoan-kevitra.

Olana: tsy mbola azo scalable ny blockchains

Amin'izao fotoana izao, ny ezaka ataon'ny mpamorona maro dia mikendry ny hahatonga ny blockchain ho teknolojia tena mety, fa tsy baomba mandatsa-dranomaso ao anaty fonosana tsara tarehy. Mety ho lasa mahazatra ny fantsonam-panjakana, ny fihodinana feno fanantenana, ny plasma ary ny sharding. Indray andro. Na mety hanemotra ny fandefasana mandritra ny enim-bolana indray ny TON, ary tsy hisy intsony ny vondrona Plasma manaraka. Afaka mino ny tondrozotra hafa isika ary mamaky taratasy fotsy mamirapiratra amin'ny alina, saingy eto ary ankehitriny dia mila manao zavatra amin'izay ananantsika isika. Vitao ny ditra.

Ny asa nomena ny ekipanay amin'ny tetikasa amin'izao fotoana izao dia toy izao amin'ny ankapobeny: misy lohahevitra maro, mahatratra an'arivony maro, izay tsy te hanorina fifandraisana amin'ny fifampitokisana; ilaina ny manangana vahaolana amin'ny DLT izay hiasa amin'ny PC tsotra tsy misy fepetra takiana manokana ary manome traikefa mpampiasa tsy ratsy noho ny rafitra kaonty foibe. Ny teknolojia ao ambadiky ny vahaolana dia tokony hanamaivana ny mety hisian'ny fanodinkodinana angon-drakitra - izany no mahatonga ny blockchain eto.

Mampanantena antsika ny teny faneva avy amin'ny taratasy fotsy sy ny haino aman-jery fa ny fivoarana manaraka dia hamela ny fifampiraharahana an-tapitrisany isan-tsegondra. Inona no tena izy?

Mainnet Ethereum dia mihazakazaka amin'ny ~30 tps amin'izao fotoana izao. Noho izany fotsiny dia sarotra ny mihevitra azy io ho blockchain izay mety amin'ny fomba rehetra mety amin'ny filan'ny orinasa. Anisan'ireo vahaolana nahazoana alalana, fantatra ny mari-pamantarana mampiseho 2000 tps (kΓ΄lejy) na 3000 tps (Hyperledger lamba, misy kely kely ao amin'ny publication, fa tadidio fa ny benchmark dia natao tamin'ny maotera marimaritra iraisana taloha). nisy fikasana hanova tanteraka ny Lamba, izay tsy nanome vokatra ratsy indrindra, 20000 tps, fa hatramin'izao dia fianarana akademika fotsiny miandry ny fampiharana azy ireo. Tsy azo inoana fa ny orinasa iray izay afaka mitazona ny departemantan'ny mpamorona blockchain dia hametraka famantarana toy izany. Saingy ny olana dia tsy eo amin'ny throughput ihany fa misy ihany koa ny latency.

Latency

Ny fahatarana manomboka amin'ny fotoana nanombohan'ny fifampiraharahana ka hatramin'ny fankatoavany farany nataon'ny rafitra dia tsy miankina amin'ny hafainganan'ny hafatra mandalo amin'ny dingana rehetra amin'ny fanamarinana sy ny famandrihana, fa koa amin'ny masontsivana fananganana sakana. Na dia mamela antsika hanolo-tena amin'ny 1000000 tps aza ny sakanantsika, saingy mila 10 minitra ny fananganana sakana 488MB, ho mora kokoa ho antsika ve izany?

Andeha hojerentsika akaiky ny tsingerin'ny fiainan'ny fifampiraharahana ao amin'ny Hyperledger Fabric mba hahatakarana ny zavatra ilana fotoana sy ny ifandraisany amin'ny fanakanana ny mari-pamantarana fananganana.

Rejistra zaraina ho an'ny kodiarana: traikefa amin'ny lamba Hyperledger
nalaina avy eto: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Manangana fifampiraharahana ny mpanjifa, mandefa izany any amin'ny mpiara-mianatra aminy, ny farany dia manao simulate ny fifampiraharahana (ampiharo ny fanovana nataon'ny chaincode amin'ny fanjakana ankehitriny, fa aza manolo-tena amin'ny ledger) ary mahazo RWSet - anarana fototra, dikan-teny ary ny soatoavina nalaina avy amin'ny fanangonana ao amin'ny CouchDB, (2) ny mpanohana dia mandefa ny RWSet voasonia hiverina amin'ny mpanjifa, (3) ny mpanjifa dia manamarina ny sonia rehetra ilaina (endorsers), ary avy eo dia mandefa ny fifampiraharahana amin'ny baiko. serivisy, na mandefa izany tsy misy fanamarinana (mbola hatao any aoriana ny fanamarinana), ny serivisy famandrihana dia mamorona sakana ary (4) mamerina amin'ny mpiara-miasa rehetra, fa tsy ny mpanohana fotsiny; ny mpiara-mianatra dia manamarina fa mifanandrify amin'ny dikan-teny ao amin'ny angon-drakitra, ny sonian'ny mpanohana rehetra ny dikan-tenin'ny lakile ao amin'ny andian-tsarimihetsika vakiana, ary amin'ny farany dia manao ny fanakanana.

Tsy izay ihany anefa. Ny teny hoe "mpanome baiko dia manafina ny baikon'ny fifampiraharahana, fa koa ny fangatahana tambajotra 3 misesy avy amin'ny mpitarika mankany amin'ny mpanaraka sy miverina: ny mpitarika dia manampy hafatra amin'ny log, mandefa izany amin'ny mpanaraka, ity farany dia manampy izany. amin'ny diarin'izy ireo, mandefa fanamafisana ny famerenana mahomby amin'ny mpitarika, mametraka ny hafatra ny mpitarika, mandefa fanamafisana fanoloran-tena amin'ny mpanaraka, manolo-tena ny mpanara-dia. Arakaraka ny kely kokoa ny haben'ny sakana sy ny fotoana, dia matetika ny serivisy famandrihana dia tsy maintsy mametraka marimaritra iraisana. Hyperledger Fabric dia manana mari-pamantarana roa ho an'ny fananganana sakana: BatchTimeout - fotoana fananganana sakana ary BatchSize - habe sakana (ny isan'ny varotra sy ny haben'ny sakana amin'ny bytes). Raha vantany vao tonga amin'ny fetra ny iray amin'ireo masontsivana dia mivoaka ny sakana vaovao. Arakaraky ny hamaroan'ny node filaharana no haharitra izany. Noho izany, mila mampitombo BatchTimeout sy BatchSize ianao. Saingy satria RWSets no dikan-teny, ny lehibe kokoa ny sakana ataontsika, ny avo kokoa ny mety hisian'ny fifandirana MVCC. Ankoatr'izay, rehefa mitombo ny BatchTimeout, dia miharatsy ny UX. Ny tetika manaraka hamahana ireo olana ireo dia toa mitombina sy mazava amiko.

Ahoana no hialana amin'ny fiandrasana ny famaranan'ny sakana ary tsy hanadino ny satan'ny fifanakalozana

Arakaraky ny halavan'ny fotoana fananganana sy ny haben'ny sakana, ny haavon'ny fidirana amin'ny blockchain. Ny iray dia tsy manaraka mivantana ny iray, fa tokony hotsarovana fa ny fametrahana ny marimaritra iraisana ao amin'ny RAFT dia mitaky fangatahana tambajotra telo avy amin'ny mpitarika mankany amin'ny mpanaraka sy aoriana. Arakaraka ny hamaroan'ny nodes ny filaharana, dia ho ela kokoa izany. Arakaraka ny kely kokoa ny habeny sy ny fotoana fananganana sakana, ny fifandraisana toy izany. Ahoana ny fampitomboana ny fotoana fananganana sy ny haben'ny sakana nefa tsy mampitombo ny fotoana famalian'ny rafitra ho an'ny mpampiasa farany?

Voalohany, mila mamaha ny fifandirana MVCC vokatry ny haben'ny sakana lehibe ianao, izay mety ahitana RWSets samy hafa miaraka amin'ny dikan-teny mitovy. Mazava ho azy, eo amin'ny lafiny mpanjifa (mifandray amin'ny tambajotra blockchain, mety ho backend izany, ary ny tiako ambara) MVCC mpandrindra ady, izay mety ho serivisy misaraka na haingo mahazatra amin'ny antso fanombohana fifampiraharahana miaraka amin'ny lojika andrana indray.

Ny andrana indray dia azo ampiharina amin'ny paikadin'ny exponential, fa avy eo dia hiharatsy toy ny exponentially ny fahatarana. Noho izany dia tokony hampiasa indray mandeha kisendrasendra ao anatin'ny fetra kely sasany ianao, na tsy tapaka. Amin'ny maso amin'ny fifandonana mety hitranga amin'ny safidy voalohany.

Ny dingana manaraka dia ny fanaovana asynchronous ny fifandraisan'ny mpanjifa amin'ny rafitra mba tsy hiandry 15, 30, na 10000000 segondra, izay hapetrakay ho BatchTimeout. Saingy amin'izany fotoana izany dia ilaina ny mitazona ny fahafahana hahazoana antoka fa voarakitra / tsy voarakitra ao amin'ny blockchain ny fiovana natomboky ny fifampiraharahana.
Ny angon-drakitra dia azo ampiasaina hitehirizana ny satan'ny fifanakalozana. Ny safidy mora indrindra dia ny CouchDB noho ny fampiasana azy mora: ny angon-drakitra dia manana UI ivelan'ny boaty, REST API, ary afaka manangana replication sy sharding ho azy ianao. Azonao atao fotsiny ny mamorona fanangonana misaraka amin'ny ohatra CouchDB izay ampiasain'i Fabric hitahiry ny fanjakan'izao tontolo izao. Mila mitahiry antontan-taratasy toy izany isika.

{
 Status string // Бтатус Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: "pending", "done", "failed"
 TxID: string // ID Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ
 Error: string // optional, сообщСниС ΠΎΠ± ошибкС
}

Ity antontan-taratasy ity dia nosoratana tamin'ny angon-drakitra alohan'ny handefasana ny fifampiraharahana amin'ny mpiara-miasa, ny ID enti-manana dia averina amin'ny mpampiasa (ny ID iray ihany no ampiasaina ho fanalahidy) raha toa ka asa famoronana ity, ary avy eo ny sahan'ny Status, TxID ary Error dia havaozina rehefa misy fampahalalana mifandraika amin'izany azo avy amin'ny mpiara-mianatra.

Rejistra zaraina ho an'ny kodiarana: traikefa amin'ny lamba Hyperledger

Amin'ity tetika ity, ny mpampiasa dia tsy miandry mandra-pahatongan'ny farany ny sakana, mijery ny kodiarana mihodina eo amin'ny efijery mandritra ny 10 segondra, dia mahazo valiny avy hatrany avy amin'ny rafitra izy ary manohy miasa.

Nisafidy ny BoltDB izahay mba hitahiry ny satan'ny fifampiraharahana satria mila mitahiry fahatsiarovana ary tsy te handany fotoana amin'ny fifandraisana amin'ny tambajotra miaraka amin'ny mpizara angon-drakitra mitokana, indrindra rehefa mitranga ity fifandraisana ity amin'ny alΓ lan'ny protocole texte tsotra. Raha ny tokony ho izy, na mampiasa CouchDB ianao mba hampiharana ny tetika voalaza etsy ambony na hitahiry ny fanjakan'izao tontolo izao, na ahoana na ahoana, dia misy dikany ny manatsara ny fomba fitehirizana ny data ao amin'ny CouchDB. Amin'ny alΓ lan'ny default, ao amin'ny CouchDB, ny haben'ny node b-tree dia 1279 bytes, izay kely kokoa noho ny haben'ny sehatra amin'ny kapila, izay midika fa na ny famakiana sy ny famerenana indray ny hazo dia mitaky fidirana kapila ara-batana bebe kokoa. Mahafeno ny fenitra ny habeny tsara indrindra endrika mandroso ary 4 kilobyte. Ho an'ny fanatsarana dia mila mametraka ny parameter isika btree_chunk_size mitovy amin'ny 4096 ao amin'ny rakitra fanamafisana CouchDB. Ho an'ny BoltDB fidirana an-tsehatra toy izany tsy ilaina.

Fanerena lamosina: paikady buffer

Saingy mety misy hafatra be dia be. Mihoatra noho ny zakain'ny rafitra, mizara loharano amin'ny serivisy am-polony hafa ankoatry ny aseho amin'ny kisary - ary izany rehetra izany dia tokony hiasa tsy misy kilema na dia amin'ny milina izay mandreraka be aza ny Intellij Idea.

Voavaha amin'ny fomba samy hafa ny olan'ny fifindran'ny rafitra fifandraisana, ny mpamokatra sy ny mpanjifa. Andeha hojerentsika izay azontsika atao.

ny rano mitete: afaka milaza isika fa afaka mandrindra ny ankamaroan'ny fifanakalozana X ao anatin'ny segondra T. Ny fangatahana rehetra mihoatra io fetra io dia ajanona. Tsotra be izany, fa afaka manadino momba ny UX ianao.

mifehy: ny mpanjifa dia tsy maintsy manana interface tsara izay ahafahany mifehy ny tps an'ny mpamokatra, arakaraka ny entana. Tsy ratsy, fa mametraka adidy amin'ny mpamorona ny mpanjifa entana hampihatra ity interface ity. Ho anay dia tsy azo ekena izany, satria ny blockchain amin'ny ho avy dia hampidirina ao anatin'ny rafitra maro efa ela.

buffering: raha tokony ho tetika hanohitra ny fampidiran-dresaka, dia azontsika atao ny mametaka an'io renirano io ary manodina azy amin'ny hafainganam-pandeha ilaina. Mazava ho azy fa ity no vahaolana tsara indrindra raha te-hanome traikefa mpampiasa tsara izahay. Nametraka ny buffer izahay tamin'ny alΓ lan'ny filaharana ao amin'ny RabbitMQ.

Rejistra zaraina ho an'ny kodiarana: traikefa amin'ny lamba Hyperledger

Hetsika roa vaovao no nampiana tao amin'ilay tetika: (1) rehefa voaray ny fangatahana API, misy hafatra milahatra miaraka amin'ny masontsivana ilaina hiantsoana ny fifampiraharahana, ary ny mpanjifa dia mahazo hafatra fa neken'ny rafitra ny fifampiraharahana, ( 2) ny backend dia mamaky angon-drakitra amin'ny hafainganam-pandeha voafaritra ao amin'ny config avy amin'ny filaharana; manomboka fifampiraharahana ary manavao ny angon-drakitra ao amin'ny fivarotana status.
Azonao atao izao ny mampitombo ny fotoana fananganana sy manakana ny fahafaha-manao araka izay tianao, manafina ny fahatarana amin'ny mpampiasa.

Fitaovana hafa

Tsy nisy na inona na inona nolazaina teto momba ny chaincode, satria, raha ny fitsipika, dia tsy misy na inona na inona azo amboarina ao. Ny Chaincode dia tokony ho tsotra sy azo antoka araka izay azo atao - izay ihany no takiana amin'izany. Ny rafitra dia manampy antsika hanoratra chaincode tsotra sy azo antoka CSKit avy amin'ny S7 Techlab sy mpanadihady static hamelona^CC.

Ho fanampin'izany, ny ekipanay dia mamolavola andiana fitaovana mba hahatonga ny fiaraha-miasa amin'ny Fabric ho tsotra sy mahafinaritra: blockchain mpikaroka, utility ho an'ny automatique reconfiguration ny tambajotra (fanampiana/fanesorana ny fikambanana, RAFT nodes), utility for fanafoanana ny taratasy fanamarinana sy fanesorana ny maha-izy azy. Raha te handray anjara ianao dia tongava.

famaranana

Ity fomba fiasa ity dia manamora ny fanoloana ny Hyperledger Fabric amin'ny Quorum, tambajotra Ethereum tsy miankina hafa (PoA na PoW mihitsy aza), mampihena be ny fampandehanana tena izy, saingy amin'ny fotoana iray dia mitazona ny UX mahazatra (na ho an'ny mpampiasa ao amin'ny navigateur na avy amin'ny sisin'ny rafitra mitambatra. ). Rehefa manolo ny Fabric amin'ny Ethereum ao amin'ny rafitra, ny lojikan'ny serivisy / haingon-trano ihany no mila ovaina amin'ny fitantanana ny fifandirana MVCC mankany amin'ny fitomboana tsy misy atomika sy fandefasana indray. Ny buffering sy ny fitehirizana sata dia nahafahana nanala ny fotoana famaliana tamin'ny fotoana fananganana sakana. Ankehitriny ianao dia afaka manampy an'arivony ny baiko nodes ary aza matahotra fa ny sakana dia miforona matetika loatra ary mameno ny serivisy famandrihana.

Amin'ny ankapobeny, ity ihany no tiako hozaraina. Ho faly aho raha manampy olona amin'ny asany izany.

Source: www.habr.com

Add a comment