Tanio Grid Gwasanaeth - Ailgychwyn

Ar Chwefror 26, cynhaliwyd cyfarfod Apache Ignite GreenSource, lle siaradodd cyfranwyr i'r prosiect ffynhonnell agored Apache Tanio. Digwyddiad pwysig ym mywyd y gymuned hon oedd ailstrwythuro'r gydran Tanio Grid Gwasanaeth, sy'n eich galluogi i ddefnyddio microwasanaethau personol yn uniongyrchol i glwstwr Ignite. Siaradodd am y broses anodd hon yn y cyfarfod Vyacheslav Daradur, peiriannydd meddalwedd a chyfrannwr Apache Ignite ers dros ddwy flynedd.

Tanio Grid Gwasanaeth - Ailgychwyn

Gadewch i ni ddechrau gyda beth yw Apache Ignite yn gyffredinol. Cronfa ddata yw hon sy'n storfa Allwedd/Gwerth wedi'i dosbarthu gyda chefnogaeth ar gyfer SQL, trafodion a caching. Yn ogystal, mae Ignite yn caniatáu ichi ddefnyddio gwasanaethau personol yn uniongyrchol i glwstwr Ignite. Mae gan y datblygwr fynediad i'r holl offer y mae Ignite yn eu darparu - strwythurau data dosbarthedig, Negeseuon, Ffrydio, Cyfrifiadura a Grid Data. Er enghraifft, wrth ddefnyddio'r Grid Data, mae'r broblem o weinyddu seilwaith ar wahân ar gyfer storio data ac, o ganlyniad, mae'r costau cyffredinol yn diflannu.

Tanio Grid Gwasanaeth - Ailgychwyn

Gan ddefnyddio'r API Grid Gwasanaeth, gallwch ddefnyddio gwasanaeth trwy nodi'r cynllun lleoli ac, yn unol â hynny, y gwasanaeth ei hun yn y ffurfweddiad.

Yn nodweddiadol, mae cynllun lleoli yn arwydd o nifer yr achosion y dylid eu defnyddio ar nodau clwstwr. Mae dau gynllun defnyddio nodweddiadol. Y cyntaf yw Clwstwr Singleton: ar unrhyw adeg benodol, mae un enghraifft o wasanaeth defnyddiwr yn sicr o fod ar gael yn y clwstwr. Yr ail yw Node Singleton: mae un enghraifft o'r gwasanaeth yn cael ei ddefnyddio ar bob nod clwstwr.

Tanio Grid Gwasanaeth - Ailgychwyn

Gall y defnyddiwr hefyd nodi nifer yr achosion gwasanaeth yn y clwstwr cyfan a diffinio rhagfynegiad ar gyfer hidlo nodau addas. Yn y sefyllfa hon, bydd y Grid Gwasanaeth ei hun yn cyfrifo'r dosbarthiad gorau posibl ar gyfer defnyddio gwasanaethau.

Yn ogystal, mae nodwedd o'r fath â Gwasanaeth Affinity. Mae affinedd yn swyddogaeth sy'n diffinio perthynas allweddi â rhaniadau a pherthynas partïon â nodau yn y topoleg. Gan ddefnyddio'r allwedd, gallwch chi bennu'r prif nod y mae'r data'n cael ei storio arno. Fel hyn gallwch chi gysylltu'ch gwasanaeth eich hun â storfa allwedd a swyddogaeth affinedd. Os bydd y swyddogaeth affinedd yn newid, bydd adleoli awtomatig yn digwydd. Fel hyn, bydd y gwasanaeth bob amser wedi'i leoli'n agos at y data y mae angen iddo ei drin, ac, yn unol â hynny, yn lleihau gorbenion cyrchu gwybodaeth. Gellir galw'r cynllun hwn yn fath o gyfrifiadura cydleoli.

Nawr ein bod wedi darganfod beth yw harddwch y Grid Gwasanaeth, gadewch i ni siarad am ei hanes datblygu.

Beth ddigwyddodd o'r blaen

Roedd gweithrediad blaenorol y Grid Gwasanaeth yn seiliedig ar storfa system drafodol ddyblygedig Ignite. Mae'r gair "cache" yn Ignite yn cyfeirio at storio. Hynny yw, nid rhywbeth dros dro yw hyn, fel y gallech feddwl. Er gwaethaf y ffaith bod y storfa yn cael ei ailadrodd a bod pob nod yn cynnwys y set ddata gyfan, y tu mewn i'r storfa mae ganddo gynrychiolaeth rhanedig. Mae hyn oherwydd optimeiddio storio.

Tanio Grid Gwasanaeth - Ailgychwyn

Beth ddigwyddodd pan oedd y defnyddiwr eisiau defnyddio'r gwasanaeth?

  • Tanysgrifiodd pob nod yn y clwstwr i ddiweddaru data yn y storfa gan ddefnyddio'r mecanwaith Ymholiad Parhaus adeiledig.
  • Gwnaeth y nod cychwyn, o dan drafodiad darllen-ymrwymedig, gofnod yn y gronfa ddata a oedd yn cynnwys ffurfweddiad y gwasanaeth, gan gynnwys yr enghraifft cyfresol.
  • Pan gafodd ei hysbysu am gofnod newydd, cyfrifodd y cydlynydd y dosbarthiad yn seiliedig ar y ffurfweddiad. Ysgrifennwyd y gwrthrych canlyniadol yn ôl i'r gronfa ddata.
  • Os oedd nod yn rhan o'r dosbarthiad, roedd yn rhaid i'r cydlynydd ei ddefnyddio.

Beth nad oedd yn addas i ni

Ar ryw adeg daethom i’r casgliad: nid dyma’r ffordd i weithio gyda gwasanaethau. Roedd sawl rheswm.

Pe bai rhyw wall yn digwydd yn ystod y defnydd, yna dim ond o logiau'r nod lle digwyddodd popeth y gellid ei ddarganfod. Dim ond lleoli asyncronaidd oedd, felly ar ôl dychwelyd rheolaeth i'r defnyddiwr o'r dull lleoli, roedd angen peth amser ychwanegol i gychwyn y gwasanaeth - ac yn ystod yr amser hwn ni allai'r defnyddiwr reoli unrhyw beth. Er mwyn datblygu’r Grid Gwasanaeth ymhellach, creu nodweddion newydd, denu defnyddwyr newydd a gwneud bywyd pawb yn haws, mae angen i rywbeth newid.

Wrth ddylunio'r Grid Gwasanaeth newydd, roeddem yn gyntaf oll eisiau darparu gwarant o ddefnydd cydamserol: cyn gynted ag y byddai'r defnyddiwr yn dychwelyd rheolaeth o'r API, gallai ddefnyddio'r gwasanaethau ar unwaith. Roeddwn hefyd eisiau rhoi'r gallu i'r cychwynnwr ymdrin â gwallau lleoli.

Yn ogystal, roeddwn i eisiau symleiddio'r gweithredu, sef dianc rhag trafodion ac ail-gydbwyso. Er gwaethaf y ffaith bod y storfa'n cael ei ailadrodd ac nad oes unrhyw gydbwyso, cododd problemau yn ystod defnydd mawr gyda llawer o nodau. Pan fydd y topoleg yn newid, mae angen i nodau gyfnewid gwybodaeth, a chyda defnydd mawr, gall y data hwn bwyso llawer.

Pan oedd y topoleg yn ansefydlog, roedd angen i'r cydlynydd ailgyfrifo dosbarthiad y gwasanaethau. Ac yn gyffredinol, pan fydd yn rhaid i chi weithio gyda thrafodion ar dopoleg ansefydlog, gall hyn arwain at wallau anodd eu rhagweld.

Problemau

Beth yw newidiadau byd-eang heb broblemau cysylltiedig? Y cyntaf o'r rhain oedd newid mewn topoleg. Mae angen ichi ddeall y gall nod fynd i mewn neu adael y clwstwr ar unrhyw adeg, hyd yn oed ar adeg defnyddio'r gwasanaeth. Ar ben hynny, os yw'r nod yn ymuno â'r clwstwr ar adeg ei ddefnyddio, bydd angen trosglwyddo'r holl wybodaeth am y gwasanaethau i'r nod newydd yn gyson. Ac rydym yn siarad nid yn unig am yr hyn sydd eisoes wedi'i ddefnyddio, ond hefyd am y defnydd presennol ac yn y dyfodol.

Dyma un yn unig o’r problemau y gellir eu casglu mewn rhestr ar wahân:

  • Sut i ddefnyddio gwasanaethau sydd wedi'u ffurfweddu'n statig wrth gychwyn nod?
  • Gadael nod o'r clwstwr - beth i'w wneud os yw'r nod yn cynnal gwasanaethau?
  • Beth i'w wneud os yw'r cydlynydd wedi newid?
  • Beth i'w wneud os bydd y cleient yn ailgysylltu â'r clwstwr?
  • A oes angen prosesu ceisiadau ysgogi/dadactifadu a sut?
  • Beth petaent yn galw am ddinistrio celc, a bod gennym wasanaethau affinedd ynghlwm wrtho?

Ac nid dyna'r cyfan.

penderfyniad

Fel targed, fe wnaethom ddewis y dull a yrrir gan Ddigwyddiad gyda gweithredu cyfathrebu proses gan ddefnyddio negeseuon. Mae Ignite eisoes yn gweithredu dwy gydran sy'n caniatáu i nodau anfon negeseuon ymlaen ymhlith ei gilydd - cyfathrebu-spi a darganfod-spi.

Tanio Grid Gwasanaeth - Ailgychwyn

Mae cyfathrebu-spi yn caniatáu i nodau gyfathrebu'n uniongyrchol ac anfon negeseuon ymlaen. Mae'n addas iawn ar gyfer anfon llawer iawn o ddata. Mae Discovery-spi yn caniatáu ichi anfon neges i bob nod yn y clwstwr. Yn y gweithredu safonol, gwneir hyn gan ddefnyddio topoleg cylch. Mae integreiddio hefyd â Zookeeper, yn yr achos hwn defnyddir topoleg seren. Pwynt pwysig arall sy'n werth ei nodi yw bod Discover-spi yn gwarantu y bydd y neges yn bendant yn cael ei chyflwyno yn y drefn gywir i bob nod.

Gadewch i ni edrych ar y protocol lleoli. Anfonir pob cais defnyddiwr am leoli a dadleoli trwy Discover-spi. Mae hyn yn rhoi'r canlynol gwarantau:

  • Bydd y cais yn cael ei dderbyn gan bob nod yn y clwstwr. Bydd hyn yn caniatáu i'r cais barhau i brosesu pan fydd y cydlynydd yn newid. Mae hyn hefyd yn golygu, mewn un neges, y bydd gan bob nod yr holl fetadata angenrheidiol, megis cyfluniad y gwasanaeth a'i enghraifft gyfresol.
  • Mae trefn gaeth ar anfon neges yn helpu i ddatrys gwrthdaro cyfluniad a cheisiadau sy'n cystadlu.
  • Gan fod mynediad y nod i'r topoleg hefyd yn cael ei brosesu trwy ddarganfod-spi, bydd y nod newydd yn derbyn yr holl ddata angenrheidiol ar gyfer gweithio gyda gwasanaethau.

Pan dderbynnir cais, mae nodau yn y clwstwr yn ei ddilysu ac yn creu tasgau prosesu. Mae'r tasgau hyn yn cael eu ciwio ac yna'n cael eu prosesu mewn edefyn arall gan weithiwr ar wahân. Fe'i gweithredir fel hyn oherwydd gall y defnydd gymryd cryn dipyn o amser ac oedi'r llif darganfod drud yn annioddefol.

Mae pob cais o'r ciw yn cael ei brosesu gan y rheolwr lleoli. Mae ganddo weithiwr arbennig sy'n tynnu tasg o'r ciw hwn ac yn ei gychwyn i ddechrau defnyddio. Ar ôl hyn, mae'r camau gweithredu canlynol yn digwydd:

  1. Mae pob nod yn cyfrifo'r dosbarthiad yn annibynnol diolch i swyddogaeth aseiniad penderfyniaethol newydd.
  2. Mae nodau'n cynhyrchu neges gyda chanlyniadau'r defnydd ac yn ei hanfon at y cydlynydd.
  3. Mae'r cydlynydd yn agregu'r holl negeseuon ac yn cynhyrchu canlyniad y broses leoli gyfan, a anfonir trwy ddarganfod-spi i bob nod yn y clwstwr.
  4. Pan dderbynnir y canlyniad, daw'r broses leoli i ben, ac ar ôl hynny caiff y dasg ei thynnu o'r ciw.

Tanio Grid Gwasanaeth - Ailgychwyn
Dyluniad newydd a yrrir gan ddigwyddiad: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java

Os bydd gwall yn digwydd yn ystod y defnydd, mae'r nod yn cynnwys y gwall hwn ar unwaith mewn neges y mae'n ei hanfon at y cydlynydd. Ar ôl agregu negeseuon, bydd gan y cydlynydd wybodaeth am yr holl wallau yn ystod y defnydd a bydd yn anfon y neges hon trwy Discover-spi. Bydd gwybodaeth gwallau ar gael ar unrhyw nod yn y clwstwr.

Mae'r holl ddigwyddiadau pwysig yn y Grid Gwasanaeth yn cael eu prosesu gan ddefnyddio'r algorithm gweithredu hwn. Er enghraifft, mae newid topoleg hefyd yn neges trwy ddarganfod-spi. Ac yn gyffredinol, o'i gymharu â'r hyn oedd o'r blaen, trodd y protocol yn eithaf ysgafn a dibynadwy. Digon i drin unrhyw sefyllfa yn ystod y defnydd.

Beth fydd yn digwydd nesaf

Nawr am y cynlluniau. Mae unrhyw newid mawr i brosiect Ignite yn cael ei gwblhau fel menter gwella Ignite, a elwir yn IEP. Mae gan yr ailgynllunio Grid Gwasanaeth CAU hefyd - CAU #17 gyda'r teitl ffug “Ole change in the Service Grid”. Ond mewn gwirionedd, ni wnaethom newid yr olew injan, ond yr injan gyfan.

Rhannwyd y tasgau yn y CAU yn 2 gam. Mae'r cyntaf yn gam mawr, sy'n cynnwys ail-weithio'r protocol lleoli. Mae eisoes wedi'i gynnwys yn y meistr, gallwch chi roi cynnig ar y Grid Gwasanaeth newydd, a fydd yn ymddangos yn fersiwn 2.8. Mae'r ail gam yn cynnwys llawer o dasgau eraill:

  • Adleoli poeth
  • Fersiynau gwasanaeth
  • Mwy o oddefgarwch namau
  • Cleient tenau
  • Offer ar gyfer monitro a chyfrifo metrigau amrywiol

Yn olaf, gallwn eich cynghori ar Grid Gwasanaeth ar gyfer adeiladu systemau sy'n gallu goddef diffygion ac sydd ar gael yn fawr. Rydym hefyd yn eich gwahodd i ymweld â ni yn dev-rhestr и rhestr defnyddwyr rhannu eich profiad. Mae eich profiad yn bwysig iawn i'r gymuned; bydd yn eich helpu i ddeall ble i symud nesaf, sut i ddatblygu'r gydran yn y dyfodol.

Ffynhonnell: hab.com

Ychwanegu sylw