Clàr air a chuairteachadh airson cuibhlichean-cuibhle: Eòlas le Hyperledger Fabric

Halo, tha mi ag obair ann an sgioba pròiseact DRD KP (clàr dàta air a chuairteachadh airson sùil a chumail air cearcall beatha seataichean cuibhle). An seo tha mi airson eòlas ar sgioba a cho-roinn ann a bhith a’ leasachadh blockchain iomairt airson a’ phròiseict seo fo na cuingeadan a chuir teicneòlas an sàs. Airson a ’mhòr-chuid, bidh mi a’ bruidhinn mu dheidhinn Hyperledger Fabric, ach faodar an dòigh-obrach a tha air a mhìneachadh an seo a chuir a-mach gu blockchain ceadaichte sam bith. Is e amas deireannach an rannsachaidh againn fuasglaidhean blockchain iomairt ullachadh ann an dòigh a tha an toradh deireannach tlachdmhor a chleachdadh agus nach eil e ro dhoirbh a chumail suas.

Cha bhith lorg sam bith, fuasglaidhean ris nach robh dùil, agus cha tèid leasachaidhean sònraichte a chòmhdach an seo (seach nach eil iad agam). Tha mi dìreach airson an eòlas iriosal agam a cho-roinn, sealltainn “gu robh e comasach" agus, is dòcha, leughadh mu eòlas cuideigin eile ann a bhith a’ dèanamh cho-dhùnaidhean math agus nach robh cho math anns na beachdan.

Duilgheadas: chan eil blockchains scalable fhathast

An-diugh, tha oidhirpean mòran de luchd-leasachaidh ag amas air an blockchain a dhèanamh na theicneòlas a tha gu math goireasach, agus chan e boma tìde a th’ ann am pasgan brèagha. Is dòcha gum bi seanalan stàite, rolaigeadh dòchasach, plasma agus sharding gu bhith cumanta. Latha air choireigin. No is dòcha gun cuir TON dheth an fhoillseachadh a-rithist airson sia mìosan, agus nach bi an ath bhuidheann Plasma ann. Faodaidh sinn creidsinn ann an clàr-rathaid eile agus pàipearan geal sgoinneil a leughadh air an oidhche, ach an seo agus an-dràsta feumaidh sinn rudeigin a dhèanamh leis na th’ againn. Dèan cac.

Tha an obair a chaidh a shònrachadh don sgioba againn anns a 'phròiseact làithreach a' coimhead mar seo san fharsaingeachd: tha mòran chuspairean, a 'ruigsinn grunn mhìltean, nach eil ag iarraidh dàimhean a thogail air earbsa; feumar togail air DLT fuasgladh a dh’ obraicheas air PCan àbhaisteach gun riatanasan coileanaidh sònraichte agus a bheir seachad eòlas neach-cleachdaidh nach eil nas miosa na siostaman cunntasachd meadhanaichte sam bith. Bu chòir don teicneòlas air cùl an fhuasglaidh lùghdachadh a dhèanamh air comasachd làimhseachadh dàta droch-rùnach - is e sin as coireach gu bheil blockchain an seo.

Tha slogan bho phàipearan geala agus meadhanan a’ gealltainn dhuinn gun leig an ath leasachadh milleanan de ghnothaichean gach diog. Dè a th' ann dha-rìribh?

Tha Mainnet Ethereum an-diugh na sheasamh aig 30 tps. Air sgàth seo a-mhàin, tha e duilich a bhith ga fhaicinn mar blockchain a tha ann an dòigh sam bith a tha iomchaidh airson feumalachdan corporra. Am measg fhuasglaidhean ceadaichte, tha fios air slatan-tomhais a’ sealltainn 2000 tps (Cuòram) no 3000 tps (Fabraic Hyperledger, tha beagan nas lugha anns an fhoillseachadh, ach cumaibh cuimhne gun deach an slat-tomhais a dhèanamh air an t-seann einnsean co-aontachd). Bha oidhirp gus Fabric ath-obrachadh gu mòr, nach tug na toraidhean as miosa, 20000 tps, ach gu ruige seo chan eil annta seo ach sgrùdaidhean acadaimigeach a’ feitheamh ri am buileachadh seasmhach. Chan eil e coltach gun cuir corporra a tha comasach air roinn de luchd-leasachaidh blockchain a chumail suas ri comharran mar sin. Ach tha an duilgheadas chan ann a-mhàin ann an throughput, tha latency ann cuideachd.

Leudachadh

Tha an dàil bhon mhionaid a thèid malairt a thòiseachadh chun a chead deireannach leis an t-siostam an urra chan ann a-mhàin air astar an teachdaireachd a tha a’ dol tro gach ìre de dhearbhadh agus òrdachadh, ach cuideachd air na paramadairean cruthachadh blocaichean. Eadhon ged a leigeas ar blockchain leinn gealltainn aig 1000000 tps, ach gun toir e 10 mionaidean bloc 488MB a chruthachadh, am bi e nas fhasa dhuinn?

Bheir sinn sùil nas mionaidiche air cearcall beatha malairt ann an Hyperledger Fabric gus tuigsinn dè a bheir ùine agus mar a tha e a’ buntainn ri paramadairean cruthachadh blocaichean.

Clàr air a chuairteachadh airson cuibhlichean-cuibhle: Eòlas le Hyperledger Fabric
air a thoirt às an seo: hyperledger-fabric.readthedocs.io/ga/release-1.4/arch-deep-dive.html#swimlane

(1) Bidh an neach-dèiligidh a’ dèanamh malairt, ga chuir gu co-aoisean taiceil, bidh an tè mu dheireadh a ’dèanamh atharrais air a’ ghnothach (cuir na h-atharrachaidhean a rinn an còd-slabhraidh ris an stàit làithreach, ach na bi a ’gealltainn don leabhar-cunntais) agus a’ faighinn RWSet - prìomh ainmean, dreachan agus luachan air an toirt bhon chruinneachadh ann an CouchDB, (2) bidh luchd-taic a’ cur RWSet le ainm sgrìobhte air ais chun neach-dèiligidh, (3) bidh an neach-dèiligidh an dàrna cuid a’ dèanamh sgrùdadh airson ainmean-sgrìobhte nan co-aoisean (luchd-taic) riatanach, agus an uairsin a’ cur a’ ghnothaich chun an òrduigh seirbheis, no ga chuir às aonais dearbhadh (bidh an dearbhadh fhathast a 'tachairt nas fhaide air adhart), bidh an t-seirbheis òrdachaidh a' cruthachadh bloc agus (4) a 'cur air ais chun a h-uile co-aoisean, chan e dìreach luchd-taic; bidh co-aoisean a’ dèanamh cinnteach gu bheil na dreachan de na h-iuchraichean ann an seata leughaidh a’ freagairt ris na dreachan san stòr-dàta, ainmean-sgrìobhte gach neach-taic, agus mu dheireadh a’ gealltainn a’ bhloc.

Ach chan e sin uile. Air cùl nam faclan tha “òrdugh a’ cruthachadh bloc ”falach chan e a-mhàin òrdachadh ghnothaichean, ach cuideachd 3 iarrtasan lìonra leantainneach bhon stiùiriche gu luchd-leantainn agus air ais: bidh an stiùiriche a’ cur teachdaireachd ris a ’log, a’ cur chun luchd-leantainn, bidh an tè mu dheireadh a ’cur ris an log aca, cuir dearbhadh air ath-riochdachadh soirbheachail chun stiùiriche, bidh an stiùiriche a’ gealltainn an teachdaireachd , a ’cur gealltanas gealltanas gu luchd-leantainn, bidh luchd-leantainn a’ gealltainn. Mar as lugha meud agus ùine a’ bhloc, is ann as trice a dh’ fheumas an t-seirbheis òrdachaidh co-aontachd a stèidheachadh. Tha dà pharamadair cruthachadh bloc aig Hyperledger Fabric: BatchTimeout - ùine cruthachadh blocaichean agus BatchSize - meud bloc (an àireamh de ghnothaichean agus meud a ’bhloc fhèin ann am bytes). Cho luath ‘s a ruigeas aon de na paramadairean a’ chrìoch, thèid bloc ùr a chuir a-mach. Mar as motha de nodan òrduigh, is ann as fhaide a bheir seo. Mar sin, feumaidh tu BatchTimeout agus BatchSize àrdachadh. Ach leis gu bheil RWSets air an tionndadh, mar as motha a nì sinn am bloc, is ann as àirde a tha coltachd còmhstri MVCC. A bharrachd air an sin, le àrdachadh ann an BatchTimeout, bidh UX a’ lughdachadh gu tubaisteach. Tha e coltach riumsa reusanta agus follaiseach an sgeama a leanas airson fuasgladh fhaighinn air na duilgheadasan sin.

Mar a sheachnas tu feitheamh airson crìoch a chuir air bloc agus gun a bhith a’ call sùil air inbhe malairt

Mar as fhaide an ùine cruthachaidh agus meud a’ bhloc, is ann as àirde a bhios an t-slighe a-steach don blockchain. Chan eil aon a 'leantainn gu dìreach bhon fhear eile, ach bu chòir cuimhneachadh gu bheil feum air co-aontachd ann an RAFT trì iarrtasan lìonra bhon stiùiriche chun an luchd-leantainn agus air ais. Mar as motha de nodan òrduigh, is ann as fhaide a bheir e. Mar as lugha meud agus ùine cruthachadh blocaichean, is ann as motha a bhios eadar-obrachadh mar sin. Mar a mheudaicheas tu an ùine cruthachaidh agus meud a ’bhloc gun a bhith ag àrdachadh ùine freagairt an t-siostaim airson an neach-cleachdaidh deireannach?

An toiseach, feumaidh tu dòigh air choireigin fuasgladh fhaighinn air còmhstri MVCC air adhbhrachadh le meud bloca mòr, a dh’ fhaodadh a bhith a ’toirt a-steach diofar RWSets leis an aon dreach. Gu dearbh, air taobh an neach-dèiligidh (a thaobh lìonra blockchain, is dòcha gur e backend a tha seo, agus tha mi a’ ciallachadh e) Làimhseachadh còmhstri MVCC, a dh’ fhaodadh a bhith na sheirbheis air leth no na sgeadachadh cunbhalach thairis air gairm tòiseachaidh malairt le loidsig ath-fheuchainn.

Faodar ath-thagradh a chuir an gnìomh le ro-innleachd eas-chruthach, ach an uairsin bidh an latency a’ dol sìos gu h-obann cuideachd. Mar sin bu chòir dhut an dàrna cuid ath-thagradh air thuaiream a chleachdadh taobh a-staigh crìochan beaga sònraichte, no fear seasmhach. Le sùil ri tubaistean a dh’fhaodadh a bhith anns a’ chiad chaochladh.

Is e an ath cheum eadar-obrachadh an neach-dèiligidh leis an t-siostam a dhèanamh asyncronach gus nach fuirich e airson 15, 30, no 10000000 diogan, a shuidhicheas sinn mar BatchTimeout. Ach aig an aon àm, feumar an comas a chumail gus dèanamh cinnteach gu bheil na h-atharrachaidhean a thòisich an gnothach air an clàradh / nach eil air an clàradh anns an blockchain.
Faodar stòr-dàta a chleachdadh gus inbhe gnothaichean a stòradh. Is e CouchDB an roghainn as fhasa air sgàth cho furasta ‘s a tha e a chleachdadh: tha UI a-mach às a’ bhogsa aig an stòr-dàta, API REST, agus is urrainn dhut ath-riochdachadh agus sharding a stèidheachadh air a shon gu furasta. Faodaidh tu dìreach cruinneachadh air leth a chruthachadh anns an aon eisimpleir CouchDB a bhios Fabric a’ cleachdadh gus a staid cruinne a stòradh. Feumaidh sinn sgrìobhainnean den t-seòrsa seo a stòradh.

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

Tha an sgrìobhainn seo air a sgrìobhadh chun stòr-dàta mus tèid an gnothach a chuir gu co-aoisean, thèid ID an eintiteas a thilleadh chun neach-cleachdaidh (tha an aon ID air a chleachdadh mar iuchair) mas e gnìomhachd cruthachaidh a tha seo, agus an uairsin tha na raointean Inbhe, TxID agus Mearachd ùrachadh mar a gheibhear fiosrachadh iomchaidh bho cho-aoisean.

Clàr air a chuairteachadh airson cuibhlichean-cuibhle: Eòlas le Hyperledger Fabric

Anns an sgeama seo, chan eil an neach-cleachdaidh a 'feitheamh ris a' bhloc a bhith a 'cruthachadh mu dheireadh, a' coimhead air a 'chuibhle-shnìomh air an sgrion airson 10 diogan, bidh e a' faighinn freagairt sa bhad bhon t-siostam agus a 'leantainn air adhart ag obair.

Thagh sinn BoltDB airson inbhean malairt a stòradh oir feumaidh sinn cuimhne a shàbhaladh agus chan eil sinn airson ùine a chaitheamh air eadar-obrachadh lìonra le frithealaiche stòr-dàta leis fhèin, gu sònraichte nuair a bhios an eadar-obrachadh seo a’ gabhail àite a’ cleachdadh a’ phròtacal teacsa shìmplidh. Co-dhiù, co-dhiù a chleachdas tu CouchDB gus an sgeama a tha air a mhìneachadh gu h-àrd a chuir an gnìomh no dìreach airson staid an t-saoghail a stòradh, co-dhiù, tha e ciallach an dòigh as fheàrr air dàta a stòradh ann an CouchDB. Gu gnàthach, ann an CouchDB, is e meud nodan b-craobhan 1279 bytes, a tha mòran nas lugha na meud na roinne air diosc, a tha a’ ciallachadh gum feum an dà chuid leughadh agus ath-chothromachadh na craoibhe barrachd ruigsinneachd diosc corporra. Tha am meud as fheàrr a 'coinneachadh ris an ìre àbhaisteach Cruth adhartach agus tha e 4 kilobytes. Airson optimization, feumaidh sinn am paramadair a shuidheachadh btree_chunk_size co-ionann ri 4096 ann am faidhle rèiteachaidh CouchDB. Airson BoltDB leithid eadar-theachd làimhe chan eil feum air.

Bruthadh cùil: ro-innleachd bufair

Ach faodaidh tòrr teachdaireachdan a bhith ann. Barrachd na as urrainn don t-siostam a làimhseachadh, a’ roinneadh ghoireasan le dusan seirbheis eile a bharrachd air an fheadhainn a chithear san dealbh - agus bu chòir seo uile obrachadh gu sgiobalta eadhon air innealan air am biodh ruith Intellij Idea gu math tedious.

Tha an duilgheadas a thaobh trochur eadar-dhealaichte de shiostaman conaltraidh, riochdaire agus neach-cleachdaidh, air fhuasgladh ann an diofar dhòighean. Chì sinn dè as urrainn dhuinn a dhèanamh.

A ’leigeil às: faodaidh sinn tagradh gun urrainn dhuinn X gnothaichean aig a’ char as motha a ghiullachd ann an T diogan. Tha a h-uile iarrtas a tha nas àirde na a’ chrìoch seo air a leigeil seachad. Tha e gu math sìmplidh, ach an uairsin faodaidh tu dìochuimhneachadh mu UX.

Smachd: feumaidh eadar-aghaidh a bhith aig an neach-cleachdaidh tro am faod e, a rèir an luchd, smachd a chumail air tps an riochdaire. Chan eil e dona, ach tha e a’ cur dleastanas air luchd-leasachaidh an luchd-dèiligidh an eadar-aghaidh seo a chuir an gnìomh. Dhuinne, tha seo neo-iomchaidh, leis gum bi an blockchain san àm ri teachd air fhilleadh a-steach do àireamh mhòr de shiostaman a tha ann o chionn fhada.

buffering: an àite a bhith a’ feuchainn ri seasamh an aghaidh an t-sruth dàta cuir a-steach, is urrainn dhuinn an t-sruth seo a bhufair agus a phròiseasadh aig an astar a tha a dhìth. Gu dearbh, is e seo am fuasgladh as fheàrr ma tha sinn airson eòlas cleachdaiche math a thoirt seachad. Chuir sinn am bufair an gnìomh a’ cleachdadh ciudha ann an RabbitMQ.

Clàr air a chuairteachadh airson cuibhlichean-cuibhle: Eòlas le Hyperledger Fabric

Chaidh dà ghnìomh ùr a chur ris an sgeama: (1) às deidh iarrtas API fhaighinn, tha teachdaireachd air a chiudha leis na paramadairean a tha riatanach gus an gnothach a ghairm, agus gheibh an neach-dèiligidh teachdaireachd gu bheil an siostam air gabhail ris a’ ghnothach, ( 2) bidh an backend a’ leughadh dàta aig astar a tha air a shònrachadh anns an rèiteachadh bhon ciudha; a’ tòiseachadh malairt agus ag ùrachadh an dàta anns a’ bhùth inbhe.
A-nis faodaidh tu an ùine togail àrdachadh agus comas a bhacadh cho mòr ‘s a tha thu ag iarraidh, a’ falach dàil bhon neach-cleachdaidh.

Innealan eile

Cha deach dad a ràdh an seo mu chòd slabhraidh, oir mar as trice chan eil dad ri dhèanamh ann. Bu chòir don chòd-slabhraidh a bhith cho sìmplidh agus cho tèarainte sa ghabhas - sin a h-uile càil a tha a dhìth air. Tha am frèam gar cuideachadh gu mòr gus còd-slabhraidh a sgrìobhadh gu sìmplidh agus gu sàbhailte. CSKit bho S7 Techlab agus anailisiche statach ath-bheothachadh^ CC.

A bharrachd air an sin, tha an sgioba againn a’ leasachadh seata de ghoireasan gus a bhith ag obair le Fabric sìmplidh agus tlachdmhor: Lorgaire blockchain, goireas airson ath-rèiteachadh lìonra fèin-ghluasadach (cuir ris / thoir air falbh buidhnean, nodan RAFT), goireas airson toirt air falbh teisteanais agus toirt air falbh dearbh-aithne. Ma tha sibh airson cur ris, fàilte oirbh.

co-dhùnadh

Tha an dòigh-obrach seo ga dhèanamh furasta a chuir an àite Hyperledger Fabric le Quorum, bidh lìonraidhean prìobhaideach Ethereum eile (PoA no eadhon PoW), a’ lughdachadh gu mòr trochur fìor, ach aig an aon àm cumail suas UX àbhaisteach (an dà chuid airson luchd-cleachdaidh sa bhrobhsair agus bho thaobh siostaman aonaichte. ). Nuair a thèid Ethereum a chuir an àite Fabric san sgeama, cha bhith feum ach air loidsig an t-seirbheis ath-thilleadh / sgeadachadh bho bhith a’ làimhseachadh còmhstri MVCC gu àrdachadh nonce atamach agus ath-dhìoladh. Rinn buffering agus stòradh inbhe e comasach an ùine freagairt a dhì-cheangal bhon àm cruthachadh blocaichean. A-nis faodaidh tu na mìltean de nodan òrduigh a chuir ris agus na biodh eagal ort gu bheil blocaichean air an cruthachadh ro thric agus an t-seirbheis òrdachaidh a luchdachadh.

San fharsaingeachd, is e seo a h-uile dad a bha mi airson a roinn. Bidh mi toilichte ma chuidicheas e cuideigin san obair aca.

Source: www.habr.com

Cuir beachd ann