Kami mangrupikeun departemén pamekaran téknologi tina jaringan ritel. Dina hiji poé, manajemén netepkeun tugas nyepetkeun itungan skala badag ku ngagunakeun Apache Ignite ditéang jeung MSSQL, sarta némbongkeun hiji ramatloka kalawan ilustrasi geulis tur conto kode Java. Kuring langsung resep situs
1. Rumusan masalah
Hakekat tugas ieu di handap. Aya diréktori titik penjualan SalesPoint sareng diréktori produk Sku (Stock Keeping Unit). Titik jual ngagaduhan atribut "Tipe toko" kalayan nilai "leutik" sareng "ageung". Sajumlah (daptar produk tina titik jual) disambungkeun ka unggal titik jual (dimuat tina DBMS) sareng inpormasi disayogikeun yén ti tanggal anu ditangtukeun produk anu ditangtukeun.
dikaluarkeun tina rupa-rupa atawa ditambahkeun kana rupa-rupa.
Diperlukeun pikeun ngatur cache partisi tina titik penjualan sareng nyimpen di jerona inpormasi ngeunaan produk anu dihubungkeun salami sabulan sateuacanna. Kasaluyuan sareng sistem tempur merlukeun titik klien Ignite pikeun ngamuat data, ngitung agrégat tina formulir (tipe Toko, Kode Produk, dinten, jumlah_sales_points) sarta unggah deui ka DBMS.
2. Ulikan sastra
Abdi henteu acan gaduh pangalaman, janten kuring mimiti nari tina kompor. Nyaéta, tina tinjauan publikasi.
Pasal 2016
optimis ngajangjikeun "Anjeun bakal bangkit sareng ngajalankeun sakedap!" Kuring nuju milarian setélan variabel lingkungan, ningali dua pidéo Apache Ignite Essentials, aranjeunna henteu kapaké pikeun tugas khusus kuring. Kuring suksés ngaluncurkeun Ignite tina garis paréntah kalayan file standar "example-ignite.xml", ngawangun aplikasi munggaran
Kuring maca salajengna, sarta aya conto langsung ngagunakeun affinityKey (dijieun saméméhna ngaliwatan query SQL), komo ngagunakeun BinaryObject misterius:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
Kuring maca eta
Kuring nyieun ulang Aplikasi Komputasi pikeun nyocogkeun kasus kuring. Konci primér diréktori titik diobral di MSSQL dihartikeun salaku [id] [int] NOT NULL, Kuring nyieun cache ku analogi
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Dina xml config I nunjukkeun yén cache ieu partitioned
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Ngabagi dumasar titik jual nganggap yén agrégat anu diperyogikeun bakal diwangun dina unggal titik klaster pikeun rékaman salesPointCache anu aya di dinya, saatos éta titik klien bakal ngalaksanakeun penjumlahan akhir.
Kuring maca tutorial
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Kuring nambahkeun aggregation sarta unggah logika tur ngajalankeun eta dina set data test. Sagalana jalan lokal dina server ngembangkeun.
Kuring ngajalankeun dua server test CentOs, tangtukeun alamat IP di default-config.xml, ngajalankeun on unggal.
./bin/ignite.sh config/default-config.xml
Kadua titik Ignite ngajalankeun sareng tiasa ningali masing-masing. Kuring nangtukeun alamat diperlukeun dina xml config tina aplikasi klien, dimimitian, nambahkeun titik katilu ka topology jeung langsung aya dua titik deui. Log nembongkeun "ClassNotFoundException: model.SalesPoint" dina garis
SalesPoint sp=salesPointCache.get(spId);
StackOverflow nyebatkeun yén alesan pikeun kasalahan éta henteu aya kelas SalesPoint khusus dina server CentOs. Kami geus anjog. Kumaha upami "anjeun teu kedah sacara manual nyebarkeun kode Java anjeun dina unggal titik" sareng salajengna dina téks? Atanapi "kode Java anjeun" sanés ngeunaan SalesPoint?
Kuring sigana sono - kuring ngamimitian milarian deui, maca sareng milarian deui. Saatos sababaraha waktos, kuring ngarasa yén kuring parantos maca sadayana ngeunaan topik éta, teu aya anu énggal deui. Nalika kuring milarian, kuring mendakan sababaraha koméntar anu pikaresepeun.
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.
Pamadegan otoritatif séjén:
Artikel ngeunaan 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.
Mémang, éta. Di dieu tétéla, naha, format binér misterius ieu!
3. TunggalJar
Denis lumangsung kahiji dina rating pribadi kuring, IMHO tutorial pang gunana sadaya sadia. Dina dirina
Kuring ngalakukeun cara anu sami sareng kéngingkeun file jar tunggal anu ngaluncurkeun "titik data" atanapi "titik klien" gumantung kana argumen garis paréntah. Majelis dimimitian sareng jalan. Nol deployment geus dielehkeun.
Transisi tina megabytes data uji ka puluhan gigabytes data tempur nunjukkeun yén format binér aya alesan. Ieu diperlukeun pikeun ngaoptimalkeun konsumsi memori dina titik, sarta ieu tempat BinaryObject tétéla pohara kapaké.
4. Kacindekan
Reproach munggaran anu dipendakan ngeunaan samar tina dokuméntasi proyék Apache Ignite tétéla adil; sakedik parantos robih ti saprak 2016. Teu gampang pikeun pamula pikeun ngumpul prototipe anu fungsina dumasar kana situs wéb sareng / atanapi gudang.
Dumasar kana hasil pagawéan anu dilakukeun, kesan yén Zero Deployment tiasa dianggo, tapi ngan ukur dina tingkat sistem. Hal kawas kieu: BinaryObject dipaké pikeun ngajarkeun titik cluster jauh pikeun digawe sareng kelas custom; Nol Deployment - mékanisme internal
Apache Ignite sorangan sareng nyebarkeun objék sistem sapanjang kluster.
Kuring miharep pangalaman kuring bakal mangpaat pikeun pamaké Apache Ignite anyar.
sumber: www.habr.com