Apache Ignite Eber Dejinta: Runtii eber?

Apache Ignite Eber Dejinta: Runtii eber?

Waxaan nahay waaxda horumarinta tignoolajiyada silsilad tafaariiqda. Maalin maalmaha ka mid ah, maamulku wuxuu dejiyay hawsha dardargelinta xisaabinta baaxadda leh iyadoo la adeegsanayo Apache Ignite oo la socota MSSQL, waxayna soo bandhigtay degel leh sawirro qurux badan iyo tusaalooyin code Java ah. Isla markiiba goobta ayaan ka helay Gelin Eber ah, Sharaxaad ka mid ah kuwa mucjisooyinka ballanqaadaya: uma baahnid inaad gacanta ku dhejiso Java-gaaga ama koodhka Scala node kasta oo ka mid ah shabakadaha oo dib u dhig mar kasta oo uu isbeddelo. Sida shaqadu u socoto, waxay soo baxday in Zero Deployment uu leeyahay adeegsiyo gaar ah, sifooyinka aan rabo inaan wadaago. Hoos waxaa ku qoran fikradaha iyo faahfaahinta fulinta.

1. Caddaynta dhibaatada

Nuxurka dhibku waa sidan soo socota. Waxaa jira hagaha iibka iibka ee SalesPoint iyo Sku ( Unugga Kaydinta Kaydka) ee hagaha alaabta. Barta iibku waxay leedahay sifo "nooc bakhaar" leh oo leh qiyamka "yar" iyo "weyn". Noocyada kala duwan (liiska alaabta goobta iibka) ayaa ku xidhan goob kasta oo iib ah (laga soo raray DBMS) waxaana la bixiyaa macluumaadka laga bilaabo taariikhda la cayimay alaabta la cayimay
laga saaray noocyada kala duwan ama lagu daray noocyada.

Waxaa loo baahan yahay in la habeeyo kaydka qaybsan ee dhibcaha iibka oo lagu kaydiyo macluumaadka ku saabsan alaabta ku xiran hal bil ka hor. Waafaqsanaanta nidaamka dagaalku waxay u baahan tahay Ignite node macmiilka si uu u shubo xogta, xisaabiyo wadarta foomka (nooca dukaanka, lambarka badeecada, maalinta, tirada_of_sales_points) oo dib ugu soo rog DBMS.

2. Barashada suugaanta

Weli ma haysto wax khibrad ah, markaa waxaan bilaabayaa inaan ka dheesho shooladda. Taasi waa, laga bilaabo dib u eegista daabacadaha.

Qodobka 2016 Soo bandhigida Apache Ignite: Tallaabooyinka Koowaad waxay ka kooban tahay xiriirinta dukumeentiyada mashruuca Apache Ignite iyo isla mar ahaantaana canaan ku ah caddayn la'aanta dukumeentikan. Waxaan dib u akhriyay dhowr jeer, caddayntu ma iman. Waxaan tixraacayaa casharrada rasmiga ah bilaabayaataas
si niyadsami leh ayaa u ballan qaaday "Waxaad kacaysaa oo aad ku ordi doontaa jiffy!" Waxaan ogaanayaa goobaha doorsoomayaasha deegaanka, daawashada laba fiidiyow oo Apache Ignite Essentials, laakiin faa'iido badan uma ay lahayn hawshayda gaarka ah. Waxaan si guul leh uga bilaabay Ignite khadka taliska oo wata faylka caadiga ah β€œexample-ignite.xml”, anigoo dhisaya codsigii ugu horreeyay Codsiga xisaabi iyadoo la isticmaalayo Maven. Codsigu wuu shaqeeyaa oo wuxuu adeegsadaa Gelinta Zero, waa maxay quruxda!

Waan sii akhriyay, halkaasna tusaaluhu isla markiiba wuxuu isticmaalaa affinityKey (oo hore loogu abuuray su'aal SQL ah), oo xitaa adeegsada BinaryObject-ka dahsoon:

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

Waan akhriyey waxoogaa yar: qaabka binary - wax sida milicsiga, gelitaanka beeraha shay magac ahaan. Wuxuu akhrin karaa qiimaha goobta iyadoon gebi ahaanba la tirtirin shayga (xasuusta kaydinta). Laakiin waa maxay sababta BinaryObject loo istcimaalayo halkii qof, maadaama ay jirto Gelin Eber ah? Waa maxay sababta IgniteCache loo wareejiyay IgniteCache ? Wali ma cadda.

Waxaan dib u samaynayaa Codsiga Compute si uu u waafajiyo kiiskayga. Furaha aasaasiga ah ee tusaha dhibcaha iibka ee MSSQL waxaa lagu qeexaa [id] [int] MA NULL, waxaan ku abuuraa khasnad anigoo isbarbar dhigaya.

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

Isku xidhka xml waxaan ku tusayaa in kaydka la qaybiyay

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

Qaybinta goobta iibka waxay u malaynaysaa in wadarta guud ee loo baahan yahay lagu dhisi doono noodhka koox kasta ee diiwanka iibkaPointCache ee halkaas laga heli karo, ka bacdina noodhka macmiilka ayaa samayn doona isku darka kama dambaysta ah.

Waxaan akhrinayaa casharrada Codsiga Xisaabinta Ugu Horeeya, Waxaan ku sameeyaa isbarbardhig. Koox kastaa waxaan ku ordayaa IgniteRunnable(), wax sidan oo kale ah:

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

Waxaan ku daraa isku-darka iyo rarida macquulka ah waxaanan ku socodsiiyaa xogta tijaabada. Wax walba waxay ku shaqeeyaan gudaha server-ka horumarinta.

Waxaan bilaabay laba adeegayaasha tijaabada CentOs, ku cadee ciwaanada IP-ga ee default-config.xml, ku samee mid kasta

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

Labada Nood ee Ignite way socdaan oo way is arki karaan. Waxaan ku qeexayaa ciwaanada loo baahan yahay xml config ee codsiga macmiilka, wuu bilaabmaa, wuxuu ku daraa noodhka saddexaad ee topology isla markiiba waxaa jira laba nodes mar kale. Diiwaanku wuxuu muujinayaa "ClassNotFoundException: model.SalesPoint" ee xariiqda

SalesPoint sp=salesPointCache.get(spId);

StackOverflow ayaa sheegaysa in sababta khaladku ay tahay in aanu jirin fasalka SalesPoint ee caado u ah adeegayaasha CentOs. Waanu nimid. Sidee ku saabsan "ma aha inaad gacanta ku dhejiso koodhka Java-ga ee nood kasta" iyo wixii la mid ah? Mise "koodka Java-gaagu" maaha wax ku saabsan SalesPoint?

Waxa ay u badan tahay in aan wax seegay – waxaan bilaabay in aan mar kale baadho, wax akhriyo oo haddana raadiyo. Muddo ka dib, waxaan dareemayaa inaan akhriyay wax walba oo ku saabsan mawduuca, ma jiraan wax cusub oo cusub. Markii aan raadinayey, waxaan helay faallooyin xiiso leh.

Valentin Kulichenko, Naqshadeeye Hogaamineed ee Nidaamyada GridGain, jawaab on StackOverflow, Abriil 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.

Fikrad kale oo awood leh: Denis Magda, Agaasimaha maamulka alaabta, GridGain Systems.

Maqaal ku saabsan HabrΓ© ku saabsan adeegyadda yar yar Tixraaca saddexda maqaal ee Denis Magda: Adeegyada-yar ee Qaybta I, Qaybta II ee Adeegyada Microservices, Adeegyada MicroSelf Qaybta III 2016-2017. Maqaalka labaad, Denis waxa uu soo jeedinayaa in la bilaabo cluster node iyada oo loo marayo MaintenanceServiceNodeStartup.jar. Waxa kale oo aad isticmaali kartaa bilawga xml qaabeynta iyo khadka taliska, laakiin markaa waxaad u baahan tahay inaad gacanta ku dhejiso fasalo khaas ah mid kasta oo la geeyo noode:

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.

Runtii, taasi waa. Halkan waxa ay soo baxday, sababta, qaabkan binary-ga ah ee dahsoon!

3.SingleJar

Denis ayaa kaalinta koowaad ka galay qiimeyntayda shaqsiyeed, IMHO casharrada ugu faa'iidada badan dhammaan la heli karo. In uu MicroServices Tusaale Github waxa uu ka kooban yahay tusaale si buuxda loo diyaariyey oo ah dejinta qanjidhada kooxda, kuwaas oo soo ururiya iyada oo aan wax ku-jiidhis dheeraad ah lahayn.

Waxaan u sameeyaa si la mid ah oo aan helo hal fayl oo jar ah oo bilaabaya "data node" ama "node macmiilka" taas oo ku xidhan doodda khadka taliska. Shirku wuu bilaabmaa wuuna shaqeeyaa. Dejinta eber waa laga adkaaday.

Kala guurka megabyte ee xogta tijaabada ilaa tobanaan gigabytes ee xogta dagaalka ayaa muujisay in qaabka binary uu jiro sabab. Waxay ahayd lagama maarmaan in la wanaajiyo isticmaalka xusuusta ee noodhka, tanina waa meesha BinaryObject u soo baxday inay faa'iido badan leedahay.

4. Gabagabo

Canaantii ugu horeysay ee la kulantay ee ku saabsan mugdiga dukumeentiyada mashruuca Apache Ignite ayaa noqday cadaalad; wax yar ayaa isbedelay ilaa 2016. Ma fududa qofka bilawga ah inuu isku keeno nooc shaqaynaya oo ku salaysan mareegaha iyo/ama kaydka.

Iyada oo ku saleysan natiijooyinka shaqada la qabtay, aragtidu waxay ahayd in Eber Deployment uu shaqeeyo, laakiin kaliya heerka nidaamka. Wax sidan oo kale ah: BinaryObject waxaa loo isticmaalaa in lagu baro noodhadhka kooxda fog si ay ula shaqeeyaan fasallada gaarka ah; Gelin Eber - habka gudaha
Apache Ignite lafteeda oo u qaybiya walxaha nidaamka ilaa kooxda.

Waxaan rajeynayaa in waayo-aragnimadaydu ay faa'iido u yeelan doonto isticmaaleyaasha Apache Ignite cusub.

Source: www.habr.com

Add a comment