Aħna d-dipartiment tal-iżvilupp tat-teknoloġija ta 'netwerk tal-bejgħ bl-imnut. Ġurnata waħda, il-ġestjoni stabbiliet il-kompitu li tħaffef il-kalkoli fuq skala kbira billi tuża Apache Ignite flimkien ma 'MSSQL, u wriet websajt b'illustrazzjonijiet sbieħ u eżempji ta' kodiċi Java. Immedjatament għoġobni s-sit
1. Dikjarazzjoni tal-problema
L-essenza tal-problema hija kif ġej. Hemm direttorju SalesPoint tal-punti tal-bejgħ u direttorju tal-prodotti Sku (Stock Keeping Unit). Il-punt tal-bejgħ għandu attribut "Tip ta 'maħżen" bil-valuri "żgħar" u "kbar". Assortiment (lista ta’ prodotti tal-punt tal-bejgħ) huwa konness ma’ kull punt tal-bejgħ (mgħobbi mid-DBMS) u tingħata informazzjoni li mid-data speċifikata l-prodott speċifikat
esklużi mill-assortiment jew miżjuda mal-assortiment.
Huwa meħtieġ li torganizza cache maqsuma ta 'punti tal-bejgħ u taħżen fiha informazzjoni dwar prodotti konnessi għal xahar bil-quddiem. Il-kompatibilità mas-sistema tal-ġlied teħtieġ li n-nodu tal-klijent Ignite jgħabbi dejta, jikkalkula aggregat tal-formola (Tip ta 'Store, Kodiċi tal-Prodott, jum, numru_of_punti_bejgħ) u jtella' lura fid-DBMS.
2. Studju tal-letteratura
Għadni m'għandi l-ebda esperjenza, għalhekk qed nibda niżfen mill-fuklar. Jiġifieri minn reviżjoni tal-pubblikazzjonijiet.
Artikolu 2016
b'ottimist iwiegħed "Int ser tkun qed taħdem f'ħin qasir!" Qed nifhem is-settings varjabbli tal-ambjent, nara żewġ vidjows tal-Apache Ignite Essentials, iżda ma kinux utli ħafna għall-kompitu speċifiku tiegħi. Inniedi b'suċċess Ignite mil-linja tal-kmand bil-fajl standard "example-ignite.xml", nibni l-ewwel applikazzjoni
Naqra aktar, u hemm l-eżempju immedjatament juża affinityKey (maħluqa qabel permezz ta 'mistoqsija SQL), u saħansitra juża l-BinaryObject misterjuż:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
Qrajtha
Qed nagħmel mill-ġdid l-Applikazzjoni tal-Kompjuter biex tkun adattata għall-każ tiegħi. Iċ-ċavetta primarja tad-direttorju tal-punti tal-bejgħ f'MSSQL hija definita bħala [id] [int] MHUX NULL, noħloq cache b'analoġija
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Fil-konfigurazzjoni xml nindika li l-cache hija maqsuma
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Il-qsim skont il-punt tal-bejgħ jassumi li l-aggregat meħtieġ se jinbena fuq kull nodu tal-cluster għar-rekords salesPointCache disponibbli hemmhekk, u wara n-nodu tal-klijent iwettaq is-somma finali.
Qed naqra t-tutorja
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Inżid il-loġika ta 'aggregazzjoni u uploading u nmexxiha fuq sett ta' data tat-test. Kollox jaħdem lokalment fuq is-server tal-iżvilupp.
Inniedi żewġ servers tat-test CentOs, nispeċifika l-indirizzi IP f'default-config.xml, inwettaq fuq kull
./bin/ignite.sh config/default-config.xml
Iż-żewġ nodi Ignite qed jaħdmu u jistgħu jaraw lil xulxin. Nispeċifika l-indirizzi meħtieġa fil-konfigurazzjoni xml tal-applikazzjoni tal-klijent, jibda, iżid it-tielet nodu mat-topoloġija u immedjatament hemm żewġ nodi mill-ġdid. Ir-reġistru juri “ClassNotFoundException: model.SalesPoint” fil-linja
SalesPoint sp=salesPointCache.get(spId);
StackOverflow jgħid li r-raġuni għall-iżball hija li m'hemm l-ebda klassi Custom SalesPoint fuq is-servers CentOs. Wasalna. Kif dwar "m'għandekx għalfejn tuża manwalment il-kodiċi Java tiegħek fuq kull node" u l-bqija? Jew "il-kodiċi Java tiegħek" mhux dwar SalesPoint?
X’aktarx tlift xi ħaġa – nerġa’ nibda nfittex, nerġa’ naqra u nerġa’ nfittex. Wara ftit, inħoss li qrajt kollox fuq is-suġġett, m'hemm xejn ġdid aktar. Waqt li kont qed infittex, sibt xi kummenti interessanti.
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.
Opinjoni awtorevoli oħra:
Artiklu dwar Habré
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.
Tabilħaqq, dak hu. Hawnhekk jirriżulta, għaliex, dan il-format binarju misterjuż!
3.SingleJar
Denis ħa l-ewwel post fil-klassifikazzjoni personali tiegħi, IMHO l-aktar tutorja utli ta 'kull disponibbli. Fil tiegħu
Nagħmilha bl-istess mod u nikseb fajl vażett wieħed li jniedi "data node" jew "client node" skont l-argument tal-linja tal-kmand. L-assemblaġġ jibda u jaħdem. Zero Deployment ġie megħlub.
It-tranżizzjoni minn megabytes ta 'dejta tat-test għal għexieren ta' gigabytes ta 'dejta tal-ġlieda uriet li l-format binarju jeżisti għal raġuni. Kien meħtieġ li jiġi ottimizzat il-konsum tal-memorja fuq in-nodi, u dan huwa fejn BinaryObject irriżulta li kien utli ħafna.
4. Konklużjonijiet
L-ewwel tmaqdir li ltaqa’ magħhom dwar il-vagità tad-dokumentazzjoni tal-proġett Apache Ignite irriżulta li kien ġust; ftit li xejn inbidel mill-2016. Mhux faċli għal min jibda jiġbor prototip li jiffunzjona bbażat fuq websajt u/jew repożitorju.
Fuq il-bażi tar-riżultati tax-xogħol li sar, l-impressjoni kienet li Zero Deployment jaħdem, iżda biss fil-livell tas-sistema. Xi ħaġa bħal din: BinaryObject jintuża biex jgħallem nodi ta 'cluster remoti biex jaħdmu ma' klassijiet tad-dwana; Żero Skjerament - mekkaniżmu intern
Apache Ignite innifsu u jqassam l-oġġetti tas-sistema madwar il-cluster.
Nittama li l-esperjenza tiegħi tkun utli għal utenti ġodda ta' Apache Ignite.
Sors: www.habr.com