Ignite Service Grid - Pag-reboot

Niadtong Pebrero 26, nagpahigayon kami og Apache Ignite GreenSource meetup, diin ang mga kontribyutor sa open source nga proyekto misulti Apache Ignite. Usa ka importante nga panghitabo sa kinabuhi niini nga komunidad mao ang restructuring sa component Ignite Service Grid, nga nagtugot kanimo sa pag-deploy sa mga custom nga microservice direkta ngadto sa usa ka Ignite cluster. Naghisgot siya bahin niining lisud nga proseso sa miting Vyacheslav Daradur, software engineer ug Apache Ignite contributor sulod sa kapin sa duha ka tuig.

Ignite Service Grid - Pag-reboot

Magsugod kita kung unsa ang Apache Ignite sa kinatibuk-an. Kini usa ka database nga usa ka giapod-apod nga Key/Value storage nga adunay suporta alang sa SQL, transactionality ug caching. Dugang pa, gitugotan ka sa Ignite nga i-deploy ang mga kostumbre nga serbisyo direkta sa usa ka cluster sa Ignite. Ang developer adunay access sa tanan nga mga himan nga gihatag sa Ignite - gipang-apod-apod nga mga istruktura sa datos, Messaging, Streaming, Compute ug Data Grid. Pananglitan, kung gamiton ang Data Grid, ang problema sa pagdumala sa usa ka bulag nga imprastraktura alang sa pagtipig sa datos ug, ingon usa ka sangputanan, ang sangputanan nga gasto sa overhead mawala.

Ignite Service Grid - Pag-reboot

Gamit ang Service Grid API, mahimo nimong i-deploy ang usa ka serbisyo pinaagi lamang sa pagpiho sa deployment scheme ug, sa ingon, ang serbisyo mismo sa configuration.

Kasagaran, ang usa ka laraw sa pag-deploy usa ka timailhan sa gidaghanon sa mga higayon nga kinahanglan i-deploy sa mga cluster node. Adunay duha ka tipikal nga deployment scheme. Ang una mao ang Cluster Singleton: sa bisan unsang oras, usa ka higayon sa usa ka serbisyo sa gumagamit ang gigarantiyahan nga magamit sa cluster. Ang ikaduha mao ang Node Singleton: usa ka pananglitan sa serbisyo ang gibutang sa matag cluster node.

Ignite Service Grid - Pag-reboot

Mahimo usab nga itakda sa user ang gidaghanon sa mga instance sa serbisyo sa tibuok cluster ug itakda ang usa ka predicate alang sa pagsala sa angay nga mga node. Niini nga senaryo, ang Service Grid mismo ang magkalkula sa labing maayo nga pag-apod-apod alang sa pag-deploy sa mga serbisyo.

Dugang pa, adunay usa ka bahin sama sa Affinity Service. Ang affinity usa ka function nga naghubit sa relasyon sa mga yawe sa mga partisyon ug ang relasyon sa mga partido sa mga node sa topology. Gamit ang yawe, mahimo nimong mahibal-an ang panguna nga node diin gitipigan ang datos. Niining paagiha mahimo nimong i-associate ang imong kaugalingon nga serbisyo sa usa ka yawe ug affinity function cache. Kung mausab ang function sa affinity, mahitabo ang awtomatikong pag-redeploy. Niining paagiha, ang serbisyo kanunay nga mahimutang duol sa datos nga kinahanglan nga manipulahon, ug, sa ingon, makunhuran ang overhead sa pag-access sa kasayuran. Kini nga laraw mahimong tawgon nga usa ka matang sa collocated computing.

Karon nga nahibal-an na naton kung unsa ang katahum sa Service Grid, hisgutan naton ang kasaysayan sa pag-uswag niini.

Ang nahitabo kaniadto

Ang miaging pagpatuman sa Service Grid gibase sa transactional replicated system cache sa Ignite. Ang pulong nga "cache" sa Ignite nagtumong sa pagtipig. Sa ato pa, dili kini temporaryo, sama sa imong gihunahuna. Bisan pa sa kamatuoran nga ang cache gisundog ug ang matag node naglangkob sa tibuok data set, sulod sa cache kini adunay partitioned representation. Kini tungod sa pag-optimize sa pagtipig.

Ignite Service Grid - Pag-reboot

Unsa ang nahitabo kung gusto sa tiggamit nga i-deploy ang serbisyo?

  • Ang tanang node sa cluster nag-subscribe sa pag-update sa datos sa storage gamit ang built-in nga Continuous Query mechanism.
  • Ang initiating node, ubos sa usa ka read-committed nga transaksyon, naghimo og usa ka rekord sa database nga naglangkob sa configuration sa serbisyo, lakip ang serialized nga pananglitan.
  • Kung gipahibalo sa usa ka bag-ong entry, gikalkulo sa coordinator ang pag-apod-apod base sa configuration. Ang resulta nga butang gisulat balik sa database.
  • Kung ang usa ka node bahin sa pag-apod-apod, kinahanglan nga i-deploy kini sa coordinator.

Unsa ang dili angay kanamo

Sa pila ka punto nakahinapos kami: dili kini ang paagi sa pagtrabaho sa mga serbisyo. Adunay daghang mga hinungdan.

Kung adunay usa ka sayup nga nahitabo sa panahon sa pag-deploy, nan kini mahibal-an lamang gikan sa mga log sa node kung diin nahitabo ang tanan. Adunay lamang asynchronous deployment, mao nga human sa pagbalik sa kontrol ngadto sa user gikan sa deployment nga pamaagi, pipila ka dugang nga panahon gikinahanglan sa pagsugod sa serbisyo - ug sa niini nga panahon ang user dili makakontrol sa bisan unsa. Aron mapalambo pa ang Service Grid, paghimo og bag-ong mga feature, pagdani sa bag-ong mga tiggamit ug paghimo sa kinabuhi sa tanan nga mas sayon, adunay kinahanglan nga usbon.

Kung nagdisenyo sa bag-ong Grid sa Serbisyo, una sa tanan gusto namon nga maghatag usa ka garantiya sa dungan nga pag-deploy: sa diha nga ang user mibalik sa kontrol gikan sa API, mahimo dayon niyang gamiton ang mga serbisyo. Gusto usab nako nga hatagan ang initiator og katakus sa pagdumala sa mga sayup sa pag-deploy.

Dugang pa, gusto nako nga pasimplehon ang pagpatuman, nga mao, pagpalayo sa mga transaksyon ug pagbalanse. Bisan pa sa kamatuoran nga ang cache gisundog ug walay pagbalanse, ang mga problema mitungha sa panahon sa usa ka dako nga deployment nga adunay daghang mga node. Kung nabag-o ang topology, ang mga node kinahanglan nga magbinayloay og kasayuran, ug sa usa ka dako nga pag-deploy, kini nga datos mahimong motimbang og daghan.

Sa diha nga ang topology dili lig-on, ang coordinator kinahanglan nga kalkulahon pag-usab ang pag-apod-apod sa mga serbisyo. Ug sa kinatibuk-an, kung kinahanglan nimo nga magtrabaho sa mga transaksyon sa usa ka dili lig-on nga topology, mahimo’g mosangput kini sa lisud nga pagtagna nga mga sayup.

Mga problema

Unsa ang mga pagbag-o sa kalibutan nga wala’y kauban nga mga problema? Ang una niini mao ang pagbag-o sa topology. Kinahanglan nimong masabtan nga sa bisan unsang orasa, bisan sa oras sa pag-deploy sa serbisyo, ang usa ka node mahimong mosulod o mobiya sa cluster. Dugang pa, kung sa panahon sa pag-deploy ang node moapil sa cluster, kinahanglan nga kanunay nga ibalhin ang tanan nga kasayuran bahin sa mga serbisyo sa bag-ong node. Ug naghisgot kami dili lamang bahin sa kung unsa ang na-deploy na, apan usab bahin sa karon ug umaabot nga mga pag-deploy.

Usa lang kini sa mga problema nga mahimong kolektahon sa bulag nga lista:

  • Giunsa ang pag-deploy sa statically configured nga mga serbisyo sa pagsugod sa node?
  • Pagbiya sa usa ka node gikan sa cluster - unsa ang buhaton kung ang node nag-host sa mga serbisyo?
  • Unsa ang buhaton kung ang coordinator nausab?
  • Unsa ang buhaton kung ang kliyente magkonektar pag-usab sa cluster?
  • Kinahanglan ba nga iproseso ang mga hangyo sa pagpaaktibo/pag-deactivate ug unsaon?
  • Unsa kaha kung nanawagan sila alang sa pagkaguba sa cache, ug kami adunay mga serbisyo sa affinity nga nahigot niini?

Ug dili lang kana.

desisyon

Isip target, gipili namo ang Event Driven approach sa pagpatuman sa proseso sa komunikasyon gamit ang mga mensahe. Ang Ignite nagpatuman na sa duha ka mga sangkap nga nagtugot sa mga node sa pagpasa sa mga mensahe sa ilang kaugalingon - komunikasyon-spi ug discovery-spi.

Ignite Service Grid - Pag-reboot

Gitugotan sa komunikasyon-spi ang mga node nga direktang makigkomunikar ug magpadala sa mga mensahe. Maayo kini alang sa pagpadala sa daghang mga datos. Gitugotan ka sa Discovery-spi nga magpadala usa ka mensahe sa tanan nga mga node sa cluster. Sa standard nga pagpatuman, kini gihimo gamit ang usa ka ring topology. Adunay usab panagsama sa Zookeeper, sa kini nga kaso gigamit ang topology sa bituon. Ang laing importante nga punto nga angay hinumdoman mao nga ang discovery-spi naghatag og mga garantiya nga ang mensahe siguradong ipadala sa husto nga han-ay sa tanan nga mga node.

Atong tan-awon ang deployment protocol. Ang tanan nga mga hangyo sa user alang sa pag-deploy ug pag-undeploy gipadala pinaagi sa discovery-spi. Kini naghatag sa mosunod garantiya:

  • Ang hangyo madawat sa tanang node sa cluster. Kini magtugot sa hangyo sa pagpadayon sa pagproseso sa diha nga ang coordinator mausab. Nagpasabot usab kini nga sa usa ka mensahe, ang matag node adunay tanan nga gikinahanglan nga metadata, sama sa configuration sa serbisyo ug ang serialized nga instance niini.
  • Ang estrikto nga pag-order sa paghatud sa mensahe makatabang sa pagsulbad sa mga panagsumpaki sa pag-configure ug mga hangyo nga nakigkompetensya.
  • Tungod kay ang pagsulod sa node sa topology giproseso usab pinaagi sa discovery-spi, ang bag-ong node makadawat sa tanan nga datos nga gikinahanglan alang sa pagtrabaho sa mga serbisyo.

Kung madawat ang usa ka hangyo, ang mga node sa cluster mag-validate niini ug maghimo mga buluhaton sa pagproseso. Kini nga mga buluhaton gipila ug dayon giproseso sa lain nga hilo sa usa ka lahi nga trabahante. Gipatuman kini sa ingon niini nga paagi tungod kay ang pag-deploy mahimo’g mogahin ug daghang oras ug malangan ang pag-agos sa mahal nga pagkadiskobre nga dili maagwanta.

Ang tanan nga mga hangyo gikan sa pila giproseso sa deployment manager. Kini adunay usa ka espesyal nga trabahante nga nagbira sa usa ka buluhaton gikan sa kini nga pila ug nagsugod kini aron magsugod sa pag-deploy. Human niini, ang mosunod nga mga aksyon mahitabo:

  1. Ang matag node independente nga nagkalkula sa pag-apod-apod salamat sa usa ka bag-ong deterministic nga function sa assignment.
  2. Ang mga node makamugna og mensahe nga adunay mga resulta sa pag-deploy ug ipadala kini sa coordinator.
  3. Ang coordinator nag-aggregate sa tanang mensahe ug nagmugna sa resulta sa tibuok proseso sa pag-deploy, nga gipadala pinaagi sa discovery-spi sa tanang node sa cluster.
  4. Kung madawat ang resulta, matapos ang proseso sa pag-deploy, pagkahuman makuha ang buluhaton gikan sa pila.

Ignite Service Grid - Pag-reboot
Bag-ong disenyo nga gipatuyok sa panghitabo: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java

Kung adunay usa ka sayup nga mahitabo sa panahon sa pag-deploy, ang node gilakip dayon kini nga sayup sa usa ka mensahe nga gipadala niini sa coordinator. Human sa aggregation sa mensahe, ang coordinator adunay impormasyon mahitungod sa tanang mga sayop sa panahon sa deployment ug ipadala kini nga mensahe pinaagi sa discovery-spi. Ang kasayuran sa sayup mahimong magamit sa bisan unsang node sa cluster.

Ang tanang importanteng panghitabo sa Service Grid giproseso gamit kining operating algorithm. Pananglitan, ang pagbag-o sa topology usa usab ka mensahe pinaagi sa discovery-spi. Ug sa kinatibuk-an, kung itandi sa kaniadto, ang protocol nahimo nga gaan ug kasaligan. Igo na sa pagdumala sa bisan unsang sitwasyon sa panahon sa pag-deploy.

Unsa ang sunod nga mahitabo

Karon mahitungod sa mga plano. Ang bisan unsang dagkong kausaban sa proyekto sa Ignite makompleto isip usa ka inisyatibo sa pagpaayo sa Ignite, nga gitawag ug IEP. Ang pagdesinyo pag-usab sa Service Grid adunay IEP - IEP #17 uban sa pagbugal-bugal nga titulo nga "Pagbag-o sa lana sa Serbisyo Grid". Apan sa pagkatinuod, wala namo usbon ang lana sa makina, apan ang tibuok makina.

Among gibahin ang mga buluhaton sa IEP ngadto sa 2 ka hugna. Ang una mao ang usa ka mayor nga hugna, nga naglangkob sa reworking sa deployment protocol. Nalakip na kini sa agalon, mahimo nimong sulayan ang bag-ong Service Grid, nga makita sa bersyon 2.8. Ang ikaduhang hugna naglakip sa daghang uban pang mga buluhaton:

  • Mainit nga redeploy
  • Serbisyo nga bersyon
  • Dugang nga pagtugot sa sayup
  • Nipis nga kliyente
  • Mga himan alang sa pagmonitor ug pagkalkula sa lainlaing mga sukatan

Sa katapusan, makatambag kami kanimo sa Service Grid alang sa pagtukod sa mga fault-tolerant, high-availability nga mga sistema. Gidapit ka usab namo sa pagbisita kanamo sa dev-lista ΠΈ lista sa tiggamit ipaambit ang imong kasinatian. Ang imong kasinatian hinungdanon kaayo alang sa komunidad; kini makatabang kanimo nga masabtan kung asa mobalhin sunod, kung giunsa ang pagpalambo sa sangkap sa umaabot.

Source: www.habr.com

Idugang sa usa ka comment