Sisi ni idara ya maendeleo ya teknolojia ya mtandao wa rejareja. Siku moja, usimamizi uliweka kazi ya kuharakisha mahesabu makubwa kwa kutumia Apache Ignite kwa kushirikiana na MSSQL, na ilionyesha tovuti yenye vielelezo vyema na mifano ya msimbo wa Java. Nilipenda tovuti mara moja
1. Taarifa ya tatizo
Kiini cha kazi ni kama ifuatavyo. Kuna saraka ya mauzo ya SalesPoint na saraka ya bidhaa ya Sku (Stock Keeping Unit). Sehemu ya mauzo ina sifa ya "Aina ya Duka" yenye maadili "ndogo" na "kubwa". Urval (orodha ya bidhaa za mahali pa kuuza) imeunganishwa kwa kila sehemu ya uuzaji (iliyopakiwa kutoka kwa DBMS) na habari hutolewa kwamba kutoka kwa tarehe maalum bidhaa iliyoainishwa.
kutengwa kutoka kwa urval au kuongezwa kwa urval.
Inahitajika kuandaa cache iliyogawanywa ya pointi za mauzo na kuhifadhi ndani yake habari kuhusu bidhaa zilizounganishwa kwa mwezi mmoja mapema. Utangamano na mfumo wa mapigano unahitaji nodi ya mteja ya Ignite ili kupakia data, kukokotoa jumla ya fomu (Aina ya Duka, Msimbo wa Bidhaa, siku, nambari_ya_mauzo_pointi) na kuipakia tena kwenye DBMS.
2. Utafiti wa fasihi
Bado sina uzoefu wowote, kwa hivyo ninaanza kucheza kutoka jiko. Hiyo ni, kutoka kwa ukaguzi wa machapisho.
Kifungu cha 2016
kwa matumaini anaahidi "Utasimama na kukimbia harakaharaka!" Ninafikiria mipangilio ya kutofautisha ya mazingira, nikitazama video mbili za Apache Ignite Essentials, lakini hazikuwa muhimu sana kwa kazi yangu maalum. Nimefanikiwa kuzindua Ignite kutoka kwa safu ya amri na faili ya kawaida "example-ignite.xml", nikiunda programu tumizi ya kwanza.
Nilisoma zaidi, na hapo mfano hutumia affinityKey mara moja (iliyoundwa mapema kupitia swala la SQL), na hata hutumia BinaryObject ya kushangaza:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
Niliisoma
Ninarekebisha Maombi ya Kuhesabu ili kuendana na kesi yangu. Ufunguo wa msingi wa saraka ya alama za mauzo katika MSSQL hufafanuliwa kama [id] [int] SIO NULL, ninaunda kashe kwa mlinganisho.
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Katika usanidi wa xml ninaonyesha kuwa kashe imegawanywa
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Kugawanya kwa sehemu ya mauzo kunadhania kuwa jumla inayohitajika itajengwa kwenye kila nodi ya nguzo kwa rekodi za salesPointCache zinazopatikana hapo, baada ya hapo nodi ya mteja itafanya majumuisho ya mwisho.
Ninasoma mafunzo
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Ninaongeza kujumlisha na kupakia mantiki na kuiendesha kwenye seti ya data ya majaribio. Kila kitu hufanya kazi ndani ya nchi kwenye seva ya ukuzaji.
Ninazindua seva mbili za majaribio za CentO, taja anwani za IP katika chaguo-msingi-config.xml, nitekeleze kwa kila moja.
./bin/ignite.sh config/default-config.xml
Nodi zote mbili za Ignite zinafanya kazi na zinaweza kuonana. Ninataja anwani zinazohitajika katika usanidi wa xml wa programu ya mteja, inaanza, inaongeza nodi ya tatu kwenye topolojia na mara moja kuna nodi mbili tena. Kumbukumbu inaonyesha "ClassNotFoundException: model.SalesPoint" kwenye mstari
SalesPoint sp=salesPointCache.get(spId);
StackOverflow inasema kwamba sababu ya kosa ni kwamba hakuna darasa maalum la SalesPoint kwenye seva za CentOs. Tumefika. Vipi kuhusu "sio lazima utumie nambari yako ya Java kwa kila nodi" na kadhalika? Au "msimbo wako wa Java" hauhusu SalesPoint?
Labda nilikosa kitu - ninaanza kutafuta tena, kusoma na kutafuta tena. Baada ya muda, ninapata hisia kwamba nimesoma kila kitu kwenye mada, hakuna kitu kipya tena. Nilipokuwa nikitafuta, nilipata maoni ya kuvutia.
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.
Maoni mengine yenye mamlaka:
Makala kuhusu Habre
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.
Hakika, ndivyo hivyo. Hapa inageuka, kwa nini, muundo huu wa ajabu wa binary!
3.Jari Moja
Denis alichukua nafasi ya kwanza katika ukadiriaji wangu wa kibinafsi, IMHO mafunzo muhimu zaidi ya yote yanayopatikana. Kwake
Ninaifanya kwa njia ile ile na kupata faili moja ya jar ambayo inazindua "nodi ya data" au "nodi ya mteja" kulingana na hoja ya safu ya amri. Mkutano huanza na kufanya kazi. Usambazaji Sifuri umeshindwa.
Mpito kutoka kwa megabaiti za data ya majaribio hadi makumi ya gigabaiti za data ya mapigano ilionyesha kuwa umbizo la binary lipo kwa sababu fulani. Ilihitajika kuongeza utumiaji wa kumbukumbu kwenye nodi, na hapa ndipo BinaryObject iligeuka kuwa muhimu sana.
4. Hitimisho
Kashfa ya kwanza iliyopatikana kuhusu kutokuwa wazi kwa hati za mradi wa Apache Ignite iligeuka kuwa ya haki; kidogo imebadilika tangu 2016. Si rahisi kwa anayeanza kukusanya mfano unaofanya kazi kulingana na tovuti na/au hazina.
Kulingana na matokeo ya kazi iliyofanywa, hisia ilikuwa kwamba Usambazaji wa Zero hufanya kazi, lakini tu katika ngazi ya mfumo. Kitu kama hiki: BinaryObject inatumika kufundisha nodi za nguzo za mbali kufanya kazi na madarasa maalum; Usambazaji wa Zero - utaratibu wa ndani
Apache Ignite yenyewe na inasambaza vitu vya mfumo kwenye nguzo nzima.
Natumai uzoefu wangu utakuwa muhimu kwa watumiaji wapya wa Apache Ignite.
Chanzo: mapenzi.com