Apache Ignite Zero Deployment: Da gaske Zero?

Apache Ignite Zero Deployment: Da gaske Zero?

Mu ne sashen haɓaka fasaha na cibiyar sadarwar dillali. Wata rana, gudanarwa ta saita aikin haɓaka ƙididdiga masu girma ta hanyar amfani da Apache Ignite tare da MSSQL, kuma ya nuna gidan yanar gizon tare da kyawawan misalai da misalai na lambar Java. Nan take naji dadin shafin Aiwatar da Sifili, bayanin wanda yayi alkawalin mu'ujizai: ba dole ba ne ka tura Java ko Scala code da hannu akan kowane kumburi a cikin grid kuma sake tura shi duk lokacin da ya canza. Yayin da aikin ya ci gaba, ya nuna cewa Zero Deployment yana da takamaiman amfani, abubuwan da nake so in raba. A ƙasa da yanke akwai tunani da cikakkun bayanan aiwatarwa.

1. Bayanin matsalar

Asalin matsalar shine kamar haka. Akwai kundin adireshi na SalesPoint na wuraren tallace-tallace da kuma tsarin samfurin Sku (Sashen Tsayar da Hannun jari). Batun siyarwa yana da sifa "Nau'in Store" tare da ƙimar "kananan" da "manyan". An haɗa nau'i-nau'i (jerin samfuran wurin siyarwa) zuwa kowane wurin siyarwa (wanda aka ɗora daga DBMS) kuma an ba da bayanin cewa daga ƙayyadadden kwanan wata samfurin da aka ƙayyade.
keɓe daga nau'in ko ƙara zuwa nau'in.

Ana buƙatar shirya ɓoyayyen cache na wuraren siyarwa da adana bayanai a ciki game da samfuran da aka haɗa na wata ɗaya gaba. Daidaitawa tare da tsarin fama yana buƙatar kullin abokin ciniki Ignite don loda bayanai, ƙididdige jimlar sigar (nau'in kantin sayar da kayayyaki, lambar samfur, rana, lambar_of_sales_points) kuma loda shi zuwa DBMS.

2. Nazarin adabi

Ba ni da kwarewa tukuna, don haka na fara rawa daga murhu. Wato daga bitar wallafe-wallafe.

Labarin 2016 Gabatar da Apache Ignite: Matakan Farko ya ƙunshi hanyar haɗi zuwa takaddun aikin Apache Ignite kuma a lokaci guda zargi ga rashin fahimtar wannan takaddun. Na sake karanta shi sau biyu, tsabta ba ta zuwa. Ina nufin koyawa na hukuma farawa, wanda
cikin kyakkyawan zato ya yi alƙawari "Za ku tashi da gudu cikin jin daɗi!" Ina gano saitunan madaidaicin yanayi, kallon bidiyo biyu na Apache Ignite Essentials, amma ba su da amfani sosai ga takamaiman aiki na. Na yi nasarar ƙaddamar da Ignite daga layin umarni tare da daidaitaccen fayil "example-ignite.xml", gina aikace-aikacen farko Lissafin Aikace-aikacen amfani da Maven. Aikace-aikacen yana aiki kuma yana amfani da Zero Deployment, menene kyakkyawa!

Na kara karantawa, kuma a can misalin nan da nan yana amfani da affinityKey (wanda aka ƙirƙira a baya ta hanyar tambayar SQL), har ma yana amfani da BinaryObject mai ban mamaki:

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

Na karanta shi kadan: tsarin binary - wani abu kamar tunani, samun dama ga filayen abu da suna. Zai iya karanta ƙimar filin ba tare da lalata abu gaba ɗaya ba (ajiye ƙwaƙwalwar ajiya). Amma me yasa ake amfani da BinaryObject maimakon Mutum, tunda akwai Zero Deployment? Me yasa IgniteCache canja wurin zuwa IgniteCache ? Ba a bayyana ba tukuna.

Ina sake yin Compute Application don dacewa da shari'ata. Maɓallin farko na kundin adireshi na tallace-tallace a cikin MSSQL an bayyana shi azaman [id] [int] BA NULL ba, Na ƙirƙiri cache ta misali.

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

A cikin tsarin xml na nuna cewa an raba cache

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

Rarraba ta wurin siyarwa yana ɗauka cewa za a gina jimillar da ake buƙata akan kowane kulli mai tari don bayanan tallace-tallacePointCache da ake samu a wurin, bayan haka kullin abokin ciniki zai yi taƙaitaccen taƙaitaccen bayani.

Ina karanta koyawa Farkon Ignite Compute Application, Ina yin ta ta hanyar kwatance. A kan kowane kullin gungu Ina gudu IgniteRunnable(), wani abu kamar haka:

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

Ina ƙara tarawa da loda dabaru da gudanar da shi akan saitin bayanan gwaji. Komai yana aiki a gida akan uwar garken ci gaba.

Na ƙaddamar da sabobin gwajin CentOs guda biyu, saka adiresoshin IP a cikin tsoho-config.xml, aiwatar da kowane.

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

Dukansu nodes na Ignite suna gudana kuma suna iya ganin juna. Na saka adiresoshin da ake buƙata a cikin tsarin xml na aikace-aikacen abokin ciniki, yana farawa, yana ƙara kumburi na uku zuwa topology kuma nan da nan an sake samun nodes biyu. Rumbun yana nuna "ClassNotFoundException: model.SalesPoint" a cikin layi

SalesPoint sp=salesPointCache.get(spId);

StackOverflow ya ce dalilin kuskuren shine cewa babu wani aji na SalesPoint na al'ada akan sabobin CentOs. Mun iso. Yaya game da "ba dole ba ne ka sanya lambar Java ɗinka da hannu akan kowane kulli" da sauransu? Ko "lambar Java ɗin ku" ba game da SalesPoint ba?

Wataƙila na rasa wani abu - Na sake fara bincike, karantawa da sake bincike. Bayan ɗan lokaci, Ina jin cewa na karanta komai akan batun, babu wani sabon abu kuma. Yayin da nake bincike, na sami wasu maganganu masu ban sha'awa.

Valentin Kulchenko, Jagoran Architect a GridGain Systems, amsar akan StackOverflow, Afrilu 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.

Wani ra'ayi mai iko: Denis Magada, Daraktan Gudanar da samfur, GridGain Systems.

Labarin kan Habré game da microservices nassoshi labarai uku na Denis Magda: Microservices Part I, Microservices Part II, Microservices Part III 2016-2017. A cikin labarin na biyu, Denis yana ba da shawarar fara kullin tari ta hanyar MaintenanceServiceNodeStartup.jar. Hakanan zaka iya amfani da ƙaddamarwa tare da daidaitawar xml da layin umarni, amma sannan kuna buƙatar sanya azuzuwan al'ada da hannu akan kowane kullin gungu da aka tura:

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.

Lallai shi ke nan. Anan ya juya, me yasa, wannan tsarin binary mai ban mamaki!

3. SingleJar

Denis ya ɗauki matsayi na farko a cikin ƙimar kaina, IMHO mafi fa'ida koyawa na duk samuwa. A cikin nasa MicroServices Misali Github yana ƙunshe da cikakken shiri misali na kafa nodes ɗin tari, waɗanda ke tattarawa ba tare da wani ƙari ba.

Ina yin haka kuma in sami fayil ɗin jar guda ɗaya wanda ke ƙaddamar da "kudin bayanai" ko "kuɗin abokin ciniki" dangane da gardamar layin umarni. Taron yana farawa kuma yana aiki. An yi galaba akan ƙaddamar da sifili.

Canji daga megabytes na bayanan gwaji zuwa dubun gigabytes na bayanan yaƙi ya nuna cewa tsarin binary ya wanzu saboda dalili. Ya zama dole don inganta yawan ƙwaƙwalwar ajiya akan nodes, kuma wannan shine inda BinaryObject ya zama mai amfani sosai.

4. Ƙarshe

Laifin farko da aka fuskanta game da rashin daidaituwa na takaddun aikin Apache Ignite ya zama gaskiya; kadan ya canza tun 2016. Ba shi da sauƙi ga mafari ya haɗa samfuri mai aiki dangane da gidan yanar gizo da/ko ma'ajiya.

Dangane da sakamakon aikin da aka yi, ra'ayi shine cewa Zero Deployment yana aiki, amma kawai a matakin tsarin. Wani abu kamar haka: Ana amfani da BinaryObject don koyar da nodes masu nisa don aiki tare da azuzuwan al'ada; Aiwatar da Sifili - inji na ciki
Apache Ignite kanta kuma yana rarraba abubuwan tsarin a cikin gungu.

Ina fatan gwaninta zai zama da amfani ga sababbin masu amfani da Apache Ignite.

source: www.habr.com

Add a comment