Iforukọsilẹ Pinpin fun Wheelsets: Iriri pẹlu Ọṣọ Hyperledger

Kaabo, Mo ṣiṣẹ ni ẹgbẹ ti iṣẹ akanṣe DRD KP (igbasilẹ data pinpin fun mimojuto igbesi-aye igbesi aye ti awọn ipilẹ kẹkẹ). Nibi Mo fẹ lati pin iriri ẹgbẹ wa ni idagbasoke blockchain ile-iṣẹ kan fun iṣẹ akanṣe yii labẹ awọn idiwọ ti imọ-ẹrọ. Emi yoo sọrọ pupọ julọ nipa Aṣọ Hyperledger, ṣugbọn ọna ti a ṣapejuwe nibi le ṣe afikun si eyikeyi blockchain igbanilaaye. Ibi-afẹde ti o ga julọ ti iwadii wa ni lati mura awọn solusan blockchain ile-iṣẹ ki ọja ikẹhin jẹ dídùn lati lo ati pe ko nira pupọ lati ṣetọju.

Ko si awọn awari, awọn solusan airotẹlẹ, ati pe ko si awọn idagbasoke alailẹgbẹ yoo jẹ afihan nibi (nitori Emi ko ni eyikeyi). Mo kan fẹ lati pin iriri irẹwọn mi, fihan pe “o ṣee ṣe” ati, boya, ka nipa awọn iriri awọn eniyan miiran ti ṣiṣe awọn ipinnu ti o dara ati kii ṣe bẹ ninu awọn asọye.

Isoro: Blockchains ko ṣe iwọn sibẹsibẹ

Loni, awọn akitiyan ti ọpọlọpọ awọn Difelopa ti wa ni ifọkansi lati jẹ ki blockchain jẹ imọ-ẹrọ ti o rọrun nitootọ, kii ṣe bombu akoko kan ni ipari ti o lẹwa. Awọn ikanni ipinlẹ, yipo ireti, pilasima ati sharding yoo ṣee di ibi ti o wọpọ. Ọjọ kan. Tabi boya TON yoo tun sun ifilọlẹ naa siwaju fun oṣu mẹfa, ati pe Ẹgbẹ Plasma ti nbọ yoo dẹkun lati wa. A le gbagbọ ninu maapu ọna atẹle ati ka awọn iwe funfun didan ni alẹ, ṣugbọn nihin ati ni bayi a nilo lati ṣe nkan pẹlu ohun ti a ni. Gba nik ṣe.

Iṣẹ-ṣiṣe ti a ṣeto fun ẹgbẹ wa ni iṣẹ-ṣiṣe lọwọlọwọ n wo ni apapọ bi eleyi: ọpọlọpọ awọn koko-ọrọ, ti o de ọdọ awọn ẹgbẹrun, ti ko fẹ lati kọ awọn ibasepọ lori igbẹkẹle; O jẹ dandan lati kọ ojutu kan lori DLT ti yoo ṣiṣẹ lori awọn PC lasan laisi awọn ibeere iṣẹ ṣiṣe pataki ati pese iriri olumulo ko buru ju eyikeyi awọn ọna ṣiṣe iṣiro aarin. Imọ-ẹrọ lẹhin ojutu gbọdọ dinku iṣeeṣe ti ifọwọyi irira ti data - iyẹn ni idi ti blockchain wa nibi.

Awọn gbolohun ọrọ lati awọn iwe funfun ati awọn media ṣe ileri fun wa pe idagbasoke ti nbọ yoo gba wa laaye lati ṣe awọn miliọnu awọn iṣowo ni iṣẹju-aaya. Kini gan-an?

Mainnet Ethereum nṣiṣẹ lọwọlọwọ ni ~ 30 tps. Nitori eyi nikan, o ṣoro lati ṣe akiyesi rẹ bi blockchain ni eyikeyi ọna ti o dara fun awọn aini ile-iṣẹ. Lara awọn ipinnu igbanilaaye awọn aami aṣepari wa ti o nfihan 2000 tps (Igbimọtabi 3000 tps (Ṣelọpọ Hyperledger, diẹ kere si ninu atẹjade, ṣugbọn o nilo lati ṣe akiyesi pe a ti ṣe ala-ilẹ lori ẹrọ isọdọkan atijọ). je igbiyanju kan sisẹ Fabric ti ipilẹṣẹ, eyi ti ko fun awọn esi ti o buruju, 20000 tps, ṣugbọn titi di isisiyi eyi jẹ iwadi iwadi nikan, nduro fun imuse iduroṣinṣin rẹ. Ko ṣee ṣe pe ile-iṣẹ ti o le ni anfani lati ṣetọju ẹka kan ti awọn olupilẹṣẹ blockchain yoo fi iru awọn itọkasi bẹ. Ṣugbọn iṣoro naa kii ṣe iṣelọpọ nikan, lairi tun wa.

lairi

Idaduro lati akoko ti iṣowo kan ti bẹrẹ si ifọwọsi ikẹhin nipasẹ eto naa ko da lori iyara ti ifiranṣẹ naa n kọja ni gbogbo awọn ipele ti afọwọsi ati aṣẹ, ṣugbọn tun lori awọn aye idasile Àkọsílẹ. Paapa ti blockchain wa ba gba wa laaye lati ṣe ni iyara ti 1000000 tps, ṣugbọn o nilo iṣẹju mẹwa 10 lati ṣe agbekalẹ bulọọki 488 MB kan, ṣe yoo rọrun fun wa bi?

Jẹ ki a wo ni pẹkipẹki ni igbesi-aye igbesi-aye idunadura ni Hyperledger Fabric lati loye ibiti akoko ti lo ati bii o ṣe ni ibatan si awọn ayeraye iran.

Iforukọsilẹ Pinpin fun Wheelsets: Iriri pẹlu Ọṣọ Hyperledger
ya lati ibi: hyperledger-fabric.readthedocs.io/en/release-1.4/arch-deep-dive.html#swimlane

(1) Onibara ṣẹda idunadura kan, firanṣẹ si awọn ẹlẹgbẹ ti o fọwọsi, igbehin ṣe adaṣe idunadura naa (fi awọn iyipada ti a ṣe nipasẹ chaincode si ipo lọwọlọwọ, ṣugbọn ko ṣe adehun si iwe-ipamọ) ati gba RWSet - awọn orukọ bọtini, awọn ẹya ati awọn iye Ti o gba lati inu ikojọpọ ni CouchDB, (2) awọn olufowosi firanṣẹ RWSet ti o fowo si pada si alabara, (3) alabara boya ṣayẹwo wiwa awọn ibuwọlu ti gbogbo awọn ẹlẹgbẹ pataki (awọn olufowosi), ati lẹhinna firanṣẹ idunadura naa si iṣẹ aṣẹ , tabi firanṣẹ laisi ijẹrisi (ayẹwo yoo tun waye nigbamii), iṣẹ aṣẹ n ṣe apẹrẹ kan ati (4) firanṣẹ pada si gbogbo awọn ẹlẹgbẹ, kii ṣe awọn alafowosi nikan; Awọn ẹlẹgbẹ ṣayẹwo pe awọn ẹya bọtini ninu eto kika ni ibamu pẹlu awọn ẹya ti o wa ninu ibi ipamọ data, pe gbogbo awọn olufowosi ni awọn ibuwọlu, ati nikẹhin ṣe bulọki naa.

Ṣugbọn iyẹn ko pẹ. Awọn ọrọ naa “oluṣeto fọọmu bulọọki” tọju kii ṣe pipaṣẹ awọn iṣowo nikan, ṣugbọn tun awọn ibeere nẹtiwọọki lẹsẹsẹ 3 lati ọdọ oludari si awọn ọmọlẹyin ati ẹhin: oludari ṣafikun ifiranṣẹ kan si log, firanṣẹ si awọn ọmọlẹyin, igbehin naa ṣafikun rẹ. si wọn log, rán ìmúdájú ti aseyori ẹda si awọn olori, awọn olori dá awọn ifiranṣẹ , rán ifẹsẹmulẹ ifẹsẹmulẹ si omoleyin, omoleyin dá. Iwọn ti o kere si ati akoko ti idasile Àkọsílẹ, diẹ sii nigbagbogbo iṣẹ aṣẹ yoo ni lati fi idi ipohunpo mulẹ.. Hyperledger Fabric ni awọn aye meji fun idasile Àkọsílẹ: BatchTimeout - akoko idasile Àkọsílẹ ati BatchSize - iwọn Àkọsílẹ (nọmba awọn iṣowo ati iwọn ti Àkọsílẹ funrararẹ ni awọn baiti). Ni kete ti ọkan ninu awọn paramita ti de opin, bulọọki tuntun kan ti tu silẹ. Awọn apa ibere diẹ sii, to gun eyi yoo gba. Nitorinaa, o nilo lati mu BatchTimeout pọ si ati BatchSize. Sugbon niwon RWSets ti wa ni ti ikede, ti o tobi awọn Àkọsílẹ a ṣe, awọn ti o ga awọn ti o ṣeeṣe ti MVCC rogbodiyan. Ni afikun, bi BatchTimeout n pọ si, UX catastrophically degrades. Ilana ti o tẹle lati yanju awọn iṣoro wọnyi dabi ohun ti o tọ ati han gbangba fun mi.

Bii o ṣe le yago fun iduro fun ipari ipari Àkọsílẹ ati pe ko padanu agbara lati tọpa ipo idunadura

Awọn gun awọn Ibiyi akoko ati Àkọsílẹ iwọn, awọn ti o ga awọn losi ti blockchain. Ọkan ko tẹle taara lati ekeji, ṣugbọn o yẹ ki o ranti pe idasile ipohunpo ni RAFT nilo awọn ibeere nẹtiwọọki mẹta lati ọdọ oludari si awọn ọmọlẹyin ati ẹhin. Awọn apa ibere diẹ sii, to gun eyi yoo gba. Iwọn ti o kere ju ati akoko idasile Àkọsílẹ, diẹ sii iru awọn ibaraẹnisọrọ wa. Bii o ṣe le mu akoko iran pọ si ati iwọn dina laisi jijẹ akoko esi eto fun olumulo ipari?

Ni akọkọ, a nilo lati bakan yanju awọn ija MVCC ti o ṣẹlẹ nipasẹ iwọn bulọọki nla, eyiti o le pẹlu awọn oriṣiriṣi RWSets pẹlu ẹya kanna. O han ni, ni ẹgbẹ alabara (ni ibatan si nẹtiwọọki blockchain, eyi le jẹ ẹhin, ati pe Mo tumọ si) o nilo MVCC rogbodiyan olutọju, eyi ti o le jẹ boya iṣẹ ti o yatọ tabi oluṣọṣọ deede loke ipe ti o bẹrẹ iṣowo naa pẹlu iṣaro atunṣe.

Tun gbiyanju le jẹ imuse pẹlu ilana alapin, ṣugbọn lẹhinna lairi yoo dinku gẹgẹ bi iwọn. Nitorinaa o yẹ ki o lo boya atunwi laileto laarin awọn opin kekere kan, tabi ọkan igbagbogbo. Pẹlu ohun oju lori ṣee ṣe collisions ni akọkọ aṣayan.

Igbesẹ ti o tẹle ni lati jẹ ki ibaraenisepo alabara pẹlu eto asynchronous ki o ko duro fun awọn aaya 15, 30 tabi 10000000, eyiti a yoo ṣeto bi BatchTimeout. Ṣugbọn ni akoko kanna, o jẹ dandan lati ṣetọju agbara lati rii daju pe awọn iyipada ti o bẹrẹ nipasẹ idunadura naa jẹ / ko gba silẹ ni blockchain.
A le lo aaye data lati tọju ipo iṣowo. Aṣayan ti o rọrun julọ jẹ CouchDB nitori irọrun ti lilo: data data ni UI lati inu apoti, API REST kan, ati pe o le ni rọọrun ṣeto atunwi ati pinpin fun rẹ. O le jiroro ṣẹda ikojọpọ lọtọ ni apẹẹrẹ CouchDB kanna ti o nlo Aṣọ lati tọju ipo agbaye rẹ. A nilo lati tọju iru awọn iwe aṣẹ wọnyi.

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

A ti kọ iwe yii si ibi ipamọ data ṣaaju ki iṣowo naa ti firanṣẹ si awọn ẹlẹgbẹ, ID nkan ti o pada si olumulo (ID kanna ni a lo bi bọtini) ti eyi ba jẹ iṣẹ ẹda, ati lẹhinna ipo, TxID ati awọn aaye aṣiṣe jẹ imudojuiwọn bi alaye ti o yẹ ti gba lati ọdọ awọn ẹlẹgbẹ.

Iforukọsilẹ Pinpin fun Wheelsets: Iriri pẹlu Ọṣọ Hyperledger

Ninu ero yii, olumulo ko duro fun bulọki lati dagba nikẹhin, wiwo kẹkẹ alayipo loju iboju fun iṣẹju-aaya 10, o gba esi lẹsẹkẹsẹ lati eto ati tẹsiwaju lati ṣiṣẹ.

A yan BoltDB lati tọju awọn ipo iṣowo nitori a nilo lati fi iranti pamọ ati pe a ko fẹ lati padanu akoko lori ibaraenisepo nẹtiwọọki pẹlu olupin data lọtọ, paapaa nigbati ibaraenisepo yii ba waye nipa lilo ilana ọrọ itele kan. Nipa ọna, boya o lo CouchDB lati ṣe imuse ero ti a ṣalaye loke tabi nirọrun lati tọju ipo agbaye, ni eyikeyi ọran o jẹ oye lati mu ọna ti data ti wa ni ipamọ ni CouchDB. Nipa aiyipada, ni CouchDB, awọn iwọn ti b-igi apa jẹ 1279 awọn baiti, eyi ti o jẹ Elo kere ju awọn eka iwọn lori disk, eyi ti o tumo mejeeji kika ati rebalancing igi yoo beere diẹ ti ara wiwọle si awọn disk. Iwọn to dara julọ ni ibamu si boṣewa To ti ni ilọsiwaju kika ati ki o jẹ 4 kilobytes. Lati je ki a nilo lati ṣeto paramita btree_chunk_size dogba si 4096 ninu faili iṣeto ni CouchDB. Fun BoltDB iru kikọlu ọwọ ko nilo.

Backpressure: saarin nwon.Mirza

Ṣugbọn ọpọlọpọ awọn ifiranṣẹ le wa. Diẹ ẹ sii ju eto naa le mu, pinpin awọn orisun pẹlu awọn iṣẹ mejila mejila yatọ si awọn ti o han ninu aworan atọka - ati pe gbogbo eyi yẹ ki o ṣiṣẹ lainidi paapaa lori awọn ẹrọ lori eyiti ṣiṣiṣẹ Intellij Idea yoo jẹ aapọn pupọ.

Iṣoro ti agbara oriṣiriṣi ti awọn ọna ṣiṣe ibaraẹnisọrọ, olupilẹṣẹ ati olumulo, ni ipinnu ni awọn ọna oriṣiriṣi. Jẹ ká wo ohun ti a le se.

Sisọ: A le beere pe a ni agbara lati ṣiṣẹ ni ọpọlọpọ awọn iṣowo X ni awọn aaya T. Gbogbo awọn ibeere ti o kọja opin yii jẹ asonu. Eyi jẹ ohun rọrun, ṣugbọn lẹhinna o le gbagbe nipa UX.

Ṣakoso: olumulo gbọdọ ni diẹ ninu iru wiwo nipasẹ eyiti, da lori fifuye, o le ṣakoso TPS ti olupese. Ko buru, ṣugbọn o fa awọn adehun lori awọn olupilẹṣẹ ti alabara ti o ṣẹda ẹru lati ṣe imuse wiwo yii. Eyi jẹ itẹwẹgba fun wa, nitori blockchain yoo ni ọjọ iwaju wa ni iṣọpọ si nọmba nla ti awọn ọna ṣiṣe ti o wa tẹlẹ.

Idapọmọra: Dipo igbiyanju lati koju ṣiṣan data titẹ sii, a le ṣe idaduro ṣiṣan yii ki o ṣe ilana ni iyara ti o nilo. O han ni eyi ni ojutu ti o dara julọ ti a ba fẹ lati pese iriri olumulo to dara. A ṣe imuse ifipamọ nipa lilo isinyi ni RabbitMQ.

Iforukọsilẹ Pinpin fun Wheelsets: Iriri pẹlu Ọṣọ Hyperledger

Awọn iṣe tuntun meji ni a ti ṣafikun si ero naa: (1) lẹhin ibeere kan si API ti de, ifiranṣẹ kan pẹlu awọn paramita pataki lati pe idunadura kan ni a gbe sinu isinyi, ati pe alabara gba ifiranṣẹ kan pe idunadura naa ti gba nipasẹ awọn eto, (2) backend ka data ni iyara pato ninu awọn konfigi lati isinyi; pilẹṣẹ idunadura ati awọn imudojuiwọn data ninu awọn ipo itaja.
Bayi o le mu akoko idasile pọ si ati dina agbara bi o ṣe fẹ, fifipamọ awọn idaduro lati ọdọ olumulo.

Awọn irinṣẹ miiran

Ko si ohun ti a sọ nibi nipa chaincode, nitori, bi ofin, ko si nkankan lati mu dara julọ ninu rẹ. Chaincode yẹ ki o rọrun ati aabo bi o ti ṣee - iyẹn ni gbogbo ohun ti o nilo fun rẹ. Ilana naa ṣe iranlọwọ fun wa lati kọ chaincode ni irọrun ati lailewu CCKit lati S7 Techlab ati atupale aimi sọji^CC.

Ni afikun, ẹgbẹ wa n ṣe agbekalẹ eto awọn ohun elo lati jẹ ki ṣiṣẹ pẹlu Fabric rọrun ati igbadun: blockchain oluwakiri, a IwUlO fun laifọwọyi nẹtiwọki iṣeto ni ayipada (fikun / yiyọ ajo, RAFT apa), IwUlO fun fifagilee awọn iwe-ẹri ati yiyọ idanimọ. Ti o ba fẹ lati ṣe alabapin, o ṣe itẹwọgba.

ipari

Ọna yii ngbanilaaye lati ni rọọrun rọpo Hyperledger Fabric pẹlu Quorum, awọn nẹtiwọki Ethereum aladani miiran (PoA tabi paapaa PoW), dinku iwọn lilo gangan, ṣugbọn ni akoko kanna ṣetọju UX deede (mejeeji fun awọn olumulo ninu ẹrọ aṣawakiri ati fun awọn eto iṣọpọ). Nigbati o ba rọpo Aṣọ pẹlu Ethereum ninu ero naa, iwọ yoo nilo nikan lati yi imọ-ọrọ ti iṣẹ igbiyanju/oluṣeto pada lati sisẹ awọn ija MVCC si atomiki nonce increment and resending. Ifipamọ ati ibi ipamọ ipo jẹ ki o ṣee ṣe lati decouple akoko idahun lati akoko idasile Àkọsílẹ. Bayi o le ṣafikun ẹgbẹẹgbẹrun awọn apa aṣẹ ati ki o ma bẹru pe awọn bulọọki ti ṣẹda nigbagbogbo ati fifuye iṣẹ aṣẹ naa.

Ni ipilẹ, iyẹn ni gbogbo ohun ti Mo fẹ lati pin. Emi yoo dun ti eyi ba ṣe iranlọwọ fun ẹnikan ninu iṣẹ wọn.

orisun: www.habr.com

Fi ọrọìwòye kun