Kita minangka departemen pangembangan teknologi jaringan ritel. Sawijining dina, manajemen nyetel tugas kanggo nyepetake petungan skala gedhe kanthi nggunakake Apache Ignite bebarengan karo MSSQL, lan nuduhake situs web kanthi ilustrasi lan conto kode Jawa sing apik. Aku langsung disenengi situs
1. Pratelan masalah
Intine masalah kaya ing ngisor iki. Ana direktori titik sales SalesPoint lan direktori produk Sku (Stock Keeping Unit). Titik penjualan duwe atribut "Tipe toko" kanthi nilai "cilik" lan "gedhe". A macem-macem (dhaptar produk saka titik Advertisement) disambungake menyang saben titik Advertisement (dimuat saka DBMS) lan informasi kasedhiya yen saka tanggal tartamtu produk kasebut
ora kalebu saka macem-macem utawa ditambahake ing macem-macem.
Sampeyan kudu ngatur cache partisi titik adol lan nyimpen informasi babagan produk sing disambungake sajrone wulan sadurunge. Kompatibilitas karo sistem pertempuran mbutuhake simpul klien Ignite kanggo mbukak data, ngetung agregat saka wangun (Tipe toko, kode Product, dina, nomer_of_sales_points) lan upload maneh menyang DBMS.
2. Pasinaon sastra
Aku durung duwe pengalaman, mula aku wiwit nari saka kompor. Sing, saka review saka publikasi.
Pasal 2016
optimistis janji "Sampeyan bakal munggah lan mlaku ing jiffy!" Aku ngerteni setelan variabel lingkungan, nonton loro video Apache Ignite Essentials, nanging ora migunani banget kanggo tugas khususku. Aku sukses mbukak Ignite saka baris printah kanthi file standar "example-ignite.xml", mbangun aplikasi pisanan
Aku maca luwih lanjut, lan ana conto langsung nggunakake affinityKey (digawe sadurungΓ© liwat query SQL), lan malah nggunakake BinaryObject misterius:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
maca
Aku nggawe maneh Aplikasi Komputasi sing cocog karo kasusku. Kunci utama direktori titik penjualan ing MSSQL ditetepake minangka [id] [int] NOT NULL, aku nggawe cache kanthi analogi
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Ing xml config aku nuduhake yen cache wis partitioned
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Pemisahan miturut titik dodolan nganggep manawa agregat sing dibutuhake bakal dibangun ing saben simpul kluster kanggo cathetan salesPointCache sing kasedhiya ing kana, sawise simpul klien bakal nindakake penjumlahan pungkasan.
Aku maca tutorial
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Aku nambah agregasi lan ngunggah logika lan mbukak ing set data test. Kabeh bisa digunakake sacara lokal ing server pangembangan.
Aku miwiti loro server tes CentOs, nemtokake alamat IP ing default-config.xml, nglakokake saben
./bin/ignite.sh config/default-config.xml
Loro-lorone simpul Ignite mlaku lan bisa ndeleng saben liyane. Aku nemtokake alamat sing dibutuhake ing konfigurasi xml saka aplikasi klien, diwiwiti, nambah simpul katelu ing topologi lan langsung ana rong kelenjar maneh. Log nuduhake "ClassNotFoundException: model.SalesPoint" ing baris
SalesPoint sp=salesPointCache.get(spId);
StackOverflow ujar manawa alasan kesalahan kasebut yaiku ora ana kelas SalesPoint khusus ing server CentOs. Kita wis teka. Kepiye babagan "sampeyan ora kudu masang kode Jawa kanthi manual ing saben simpul" lan liya-liyane? Utawa "kode Jawa sampeyan" ora babagan SalesPoint?
Aku mbokmenawa ora kejawab soko - Aku miwiti nggoleki maneh, maca lan nggoleki maneh. Sawise sawetara wektu, aku rumangsa wis maca kabeh babagan topik kasebut, ora ana sing anyar maneh. Nalika aku nggoleki, aku nemokake sawetara komentar sing menarik.
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.
Pendapat liyane sing wibawa:
Artikel babagan 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.
Pancen, iku. Kene dadi metu, kok, format biner misterius iki!
3. Tunggal
Denis njupuk Panggonan pisanan ing rating pribadi, IMHO tutorial paling migunani kabeh kasedhiya. Ing dheweke
Aku nindakake kanthi cara sing padha lan entuk file jar siji sing ngluncurake "simpul data" utawa "simpul klien" gumantung saka argumen baris perintah. DΓ©wan diwiwiti lan dianggo. Zero Deployment wis dikalahake.
Transisi saka megabyte data tes menyang puluhan gigabyte data pertempuran nuduhake yen format binar ana kanthi alesan. Perlu kanggo ngoptimalake konsumsi memori ing simpul, lan ing kene BinaryObject dadi migunani banget.
4. Kesimpulan
Reproach pisanan sing ditemokake babagan samar-samar dokumentasi proyek Apache Ignite dadi adil; ora ana owah-owahan wiwit taun 2016. Ora gampang kanggo pamula ngumpulake prototipe sing bisa digunakake adhedhasar situs web lan / utawa repositori.
Adhedhasar asil karya sing ditindakake, kesan kasebut yaiku Zero Deployment bisa digunakake, nanging mung ing tingkat sistem. Kaya iki: BinaryObject digunakake kanggo ngajar simpul kluster remot kanggo nggarap kelas khusus; Zero Deployment - mekanisme internal
Apache Ignite dhewe lan nyebarake obyek sistem ing kluster.
Muga-muga pengalamanku bisa migunani kanggo pangguna Apache Ignite anyar.
Source: www.habr.com