Ukusasazwa kwe-Apache Ignite Zero: Zero ngokwenene?

Ukusasazwa kwe-Apache Ignite Zero: Zero ngokwenene?

Silisebe lophuhliso lwetekhnoloji yenethiwekhi yokuthengisa. Ngolunye usuku, abaphathi babeka umsebenzi wokukhawulezisa izibalo ezinkulu ngokusebenzisa i-Apache Ignite ngokubambisana ne-MSSQL, kwaye ibonise iwebhusayithi enemifanekiso emihle kunye nemizekelo yekhowudi yeJava. Ndayithanda ngoko nangoko isayithi Zero Ukusasazwa, inkcazo ethembisa imimangaliso: akudingeki ukuba usebenzise ngesandla iJava yakho okanye ikhowudi ye-Scala kwi-node nganye kwigridi kwaye uyibuyisele kwakhona rhoqo xa itshintsha. Njengoko umsebenzi uqhubela phambili, kwavela ukuba i-Zero Deployment inosetyenziso oluthile, iimpawu endifuna ukwabelana ngazo. Ngezantsi kokusikwa ziingcamango kunye neenkcukacha zokuphunyezwa.

1. Ingxelo yengxaki

Umongo wengxaki umi ngolu hlobo lulandelayo. Kukho indawo yokuthengisa yeSalesPoint kunye neSku (Iyunithi yokuGcina iStock) isilawuli semveliso. Indawo yokuthengisa inophawu "lweSitolo" esinamaxabiso "encinci" kunye "nomkhulu". I-assortment (uluhlu lweemveliso zendawo yokuthengisa) luqhagamshelwe kwindawo nganye yokuthengisa (ilayishwe kwi-DBMS) kwaye ulwazi lunikezelwa ukuba ukususela kumhla ochaziweyo imveliso echaziweyo.
ikhutshiwe kwi-assortment okanye yongezwe kwi-assortment.

Kuyafuneka ukuba uququzelele i-cache eyahlulayo yamanqaku okuthengisa kunye nokugcina kuyo ulwazi malunga neemveliso ezixhunyiwe kwinyanga kwangaphambili. Ukuhambelana nenkqubo yokulwa kufuna i-Ignite client node ukulayisha idatha, ukubala i-aggregate yefom (Uhlobo lweSitolo, ikhowudi yeMveliso, usuku, inombolo_ye_yexabiso_yentengiso) kwaye uyilayishe kwakhona kwi-DBMS.

2. Ukufundwa koncwadi

Andikabinawo amava okwangoku, ngoko ke ndiqala ukudanisa esitovini. Oko kukuthi, kuphononongo lweempapasho.

Inqaku lowama-2016 Ukwazisa i-Apache Ignite: Amanyathelo okuqala iqulethe ikhonkco kumaxwebhu eprojekthi ye-Apache Ignite kwaye kwangaxeshanye isingcikivo sokungacaci kolu xwebhu. Ndiphinde ndayifunda amatyeli aliqela, ingcaciso ayizi. Ndibhekisa kwisifundo esisemthethweni ndiyaqalisa, yintoni
uthembisa ngethemba β€œUza kuvuka kwaye ubaleka ngokukhawuleza!” Ndijonga useto oluguquguqukayo lokusingqongileyo, ndibukele iividiyo ezimbini ze-Apache Ignite Essentials, kodwa azizange zibe luncedo kakhulu kumsebenzi wam othile. Ndiphehlelela ngempumelelo Ignite kumgca womyalelo ngefayile eqhelekileyo β€œexample-ignite.xml”, ukwakha isicelo sokuqala. Qhuba usetyenziso usebenzisa iMaven. Isicelo sisebenza kwaye sisebenzise iZero Deployment, obunjani ubuhle!

Ndifunde ngakumbi, kwaye apho umzekelo usebenzisa kwangoko i-affinityKey (eyenziwe ngaphambili ngombuzo we-SQL), kwaye isebenzisa iBinaryObject engaqondakaliyo:

IgniteCache<BinaryObject, BinaryObject> people 
        = ignite.cache("Person").withKeepBinary(); 

Ndayifunda kancinane: ifomathi yokubini - into efana nomboniso, ukufikelela kwimimandla yento ngegama. Inokufunda ixabiso lentsimi ngaphandle kokulahla ngokupheleleyo into (ukugcina inkumbulo). Kodwa kutheni i-BinaryObject isetyenzisiwe endaweni yoMntu, kuba kukho iZero Deployment? Kutheni i-IgniteCache idluliselwe kwi-IgniteCache ? Ayikacaci okwangoku.

Ndenza kwakhona iSicelo seKhompyutha ukuze silungele imeko yam. Isitshixo esingundoqo soluhlu lwamanqaku entengiso kwi-MSSQL ichazwa njenge [id] [int] NOT NULL, ndenza i-cache ngokufanisa.

IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")

Kuqwalaselo lwe-xml ndibonisa ukuba i-cache yahlulelwe

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="spCache"/>
    <property name="cacheMode" value="PARTITIONED"/>
</bean>

Ukwahlula ngendawo yokuthengisa kucinga ukuba i-aggregate efunekayo iya kwakhiwa kwindawo nganye yeqela kwiirekhodi ze-salesPointCache ezikhoyo apho, emva koko i-node yomxhasi iya kwenza i-summary yokugqibela.

Ndifunda isifundo Okokuqala Lungisa iKhompyutha yesicelo, ndiyenza ngomzekeliso. Kwindawo nganye yeqela ndiqhuba i-IgniteRunnable (), into enje:

  @Override
  public void run() {
    SalesPoint sp=salesPointCache.get(spId);
    sp.calculateSalesPointCount();
    ..
  }

Ndiyongeza i-aggregation kunye nokulayisha ingqiqo kwaye ndiyiqhube kwiseti yedatha yovavanyo. Yonke into isebenza ekuhlaleni kwiseva yophuhliso.

Ndisungula iiseva ezimbini zovavanyo ze-CentOs, khankanya iidilesi ze-IP kwi-default-config.xml, phumeza nganye

./bin/ignite.sh config/default-config.xml

Zombini iindawo ze-Ignite ziyasebenza kwaye ziyakwazi ukubonana. Ndicacisa iidilesi ezifunekayo kwi-xml config yesicelo somthengi, iqala, yongeza i-node yesithathu kwi-topology kwaye ngokukhawuleza kukho iindawo ezimbini kwakhona. Ilog ibonisa "ClassNotFoundException: model.SalesPoint" emgceni

SalesPoint sp=salesPointCache.get(spId);

I-StackOverflow ithi isizathu sempazamo kukuba akukho klasi ye-SalesPoint yesiko kwiiseva ze-CentOs. Sifikile. Kuthekani "akunyanzelekanga ukuba usebenzise ngesandla ikhowudi yakho yeJava kwindawo nganye" njalo njalo? Okanye ngaba "ikhowudi yakho yeJava" ayikho malunga neSalesPoint?

Mhlawumbi kukho into endiyiphosileyo - ndiqala ukukhangela kwakhona, ndifunde kwaye ndikhangele kwakhona. Emva kwexesha, ndiziva ndifunde yonke into ngesihloko, akusekho nto intsha. Ngoxa ndandikhangela, ndafumana amagqabaza anomdla.

Valentin Kulichenko, uMyili weNkokheli kwiiNkqubo zeGridGain, mpendulo kwi-StackOverflow, ngo-Epreli 2016:

Model classes are not peer deployed, but you can use withKeepBinary() flag
on the cache and query BinaryObjects. This way you will avoid deserialization
on the server side and will not get ClassNotFoundException.

Olunye uluvo olugunyazisiweyo: UDenis Magda, UMlawuli wolawulo lwemveliso, IiNkqubo zeGridGain.

Inqaku kuHabrΓ© malunga neenkonzo ezincinci ireferensi amanqaku amathathu nguDenis Magda: Microservices Icandelo I, Microservices Icandelo II, Microservices Icandelo III 2016-2017. Kwinqaku lesibini, uDenis ucebisa ukuqala i-node ye-cluster nge-MaintenanceServiceNodeStartup.jar. Unokusebenzisa ukuqaliswa ngoqwalaselo lwe-xml kunye nomgca womyalelo, kodwa ke kufuneka ubeke iiklasi zesiko ngesandla kwindawo nganye yeqela elibekiweyo:

That's it. Start (..)  node using MaintenanceServiceNodeStartup file or pass
maintenance-service-node-config.xml to Apache Ignite's ignite.sh/bat scripts.
If you prefer the latter then make sure to build a jar file that will contain
all the classes from java/app/common and java/services/maintenance directories.
The jar has to be added to the classpath of every node where the service
might be deployed.

Ngokwenene, yiloo nto. Apha kuvela, kutheni, le fomati yokubini engaqondakaliyo!

3.SingleJar

UDenis uthathe indawo yokuqala kumlinganiso wam, i-IMHO esona sifundo siluncedo kuzo zonke ezikhoyo. Kweyakhe MicroServicesExample I-Github iqulethe umzekelo osele ulungele ngokupheleleyo wokuseta ii-cluster nodes, eziqokelela ngaphandle kokugquma okongeziweyo.

Ndenza ngendlela efanayo kwaye ndifumana ifayile yejagi enye eqalisa "indawo yedatha" okanye "indawo yomthengi" ngokuxhomekeke kwingxoxo yomgca womyalelo. Indibano iyaqala kwaye isebenze. I-Zero Deployment yoyisiwe.

Ukutshintsha ukusuka kwi-megabytes yedatha yovavanyo ukuya kumashumi eegigabhayithi zedatha yokulwa kubonise ukuba ifomathi yokubini ikhona ngesizathu. Kwakuyimfuneko ukwandisa ukusetyenziswa kwememori kwiindawo, kwaye kulapho i-BinaryObject yajika yaba luncedo kakhulu.

4. Izigqibo

Ingcikivo yokuqala efunyenweyo malunga nokungacaci kwamaxwebhu eprojekthi ye-Apache Ignite iye yabonakala ilungile; kuncinci okutshintshileyo ukusukela ngo-2016. Akulula kumntu oqalayo ukudibanisa iprototype esebenzayo esekelwe kwiwebhusayithi kunye / okanye indawo yokugcina.

Ngokusekelwe kwiziphumo zomsebenzi owenziweyo, ingcamango yayikukuba iZero Deployment isebenza, kodwa kuphela kwinqanaba lenkqubo. Into efana nale: I-BinaryObject isetyenziselwa ukufundisa ii-nodes ze-cluster ezikude ukuze zisebenze ngeeklasi eziqhelekileyo; Zero Deployment - indlela yangaphakathi
I-Apache Ignite ngokwayo kwaye isasaze izinto zenkqubo kulo lonke iqela.

Ndiyathemba ukuba amava am aya kuba luncedo kubasebenzisi abatsha be-Apache Ignite.

umthombo: www.habr.com

Yongeza izimvo