Kami ang departamento sa pagpalambo sa teknolohiya sa usa ka retail network. Usa ka adlaw, ang pagdumala nagtakda sa tahas sa pagpadali sa dinagkong mga kalkulasyon pinaagi sa paggamit sa Apache Ignite inubanan sa MSSQL, ug nagpakita sa usa ka website nga adunay nindot nga mga ilustrasyon ug mga pananglitan sa Java code. Ganahan dayon ko sa site
1. Pamahayag sa problema
Ang esensya sa problema mao ang mosunod. Adunay usa ka SalesPoint sales point directory ug usa ka Sku (Stock Keeping Unit) nga direktoryo sa produkto. Ang punto sa pagbaligya adunay hiyas nga "Typ sa tindahan" nga adunay mga kantidad nga "gamay" ug "dako". Usa ka assortment (listahan sa mga produkto sa punto sa pagbaligya) konektado sa matag punto sa pagbaligya (gikarga gikan sa DBMS) ug ang impormasyon gihatag nga gikan sa espesipikong petsa ang espesipikong produkto
wala iapil sa assortment o gidugang sa assortment.
Gikinahanglan ang pag-organisar sa usa ka partitioned cache sa mga punto sa pagbaligya ug pagtipig niini nga impormasyon bahin sa konektado nga mga produkto sulod sa usa ka bulan nga abante. Ang pagkaangay sa sistema sa kombat nanginahanglan sa Ignite client node nga magkarga sa datos, kuwentahon ang usa ka aggregate sa porma (Typ sa tindahan, Product code, adlaw, numero_of_sales_points) ug i-upload kini balik sa DBMS.
2. Pagtuon sa literatura
Wala pa akoy kasinatian, mao nga nagsugod ako sa pagsayaw gikan sa stove. Kana mao, gikan sa usa ka pagrepaso sa mga publikasyon.
Artikulo 2016
malaumon nga nagsaad nga "Mobangon ka ug modagan sa kadali!" Gihunahuna nako ang mga setting sa variable sa palibot, nagtan-aw sa duha ka mga video sa Apache Ignite Essentials, apan dili kaayo kini mapuslanon alang sa akong piho nga buluhaton. Malampuson nakong gilunsad ang Ignite gikan sa command line nga adunay standard nga file nga "example-ignite.xml", pagtukod sa unang aplikasyon
Nagbasa pa ako, ug didto ang pananglitan naggamit dayon sa affinityKey (gibuhat sa sayo pa pinaagi sa usa ka pangutana sa SQL), ug bisan gigamit ang misteryosong BinaryObject:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
Gibasa nako kini
Gibag-o nako ang Compute Application aron mahiangay sa akong kaso. Ang panguna nga yawe sa direktoryo sa mga punto sa pagbaligya sa MSSQL gihubit nga [id] [int] DILI NULL, naghimo ako usa ka cache pinaagi sa pagtandi
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Sa xml config akong gipakita nga ang cache gibahin
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Ang pagbahin sa punto sa pagbaligya nagtuo nga ang gikinahanglan nga aggregate matukod sa matag cluster node alang sa mga rekord sa salesPointCache nga anaa didto, ug human niini ang client node mohimo sa katapusang summasyon.
Nagbasa ko sa tutorial
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Gidugang nako ang aggregation ug pag-upload sa lohika ug gipadagan kini sa usa ka set sa datos sa pagsulay. Ang tanan nagtrabaho sa lokal sa development server.
Naglunsad ako og duha ka CentOs test servers, ipiho ang mga IP address sa default-config.xml, ipatuman ang matag usa
./bin/ignite.sh config/default-config.xml
Ang duha ka Ignite node nagdagan ug makita ang usag usa. Gipunting nako ang gikinahanglan nga mga adres sa xml config sa aplikasyon sa kliyente, nagsugod kini, nagdugang usa ka ikatulo nga node sa topology ug diha-diha dayon adunay duha ka node pag-usab. Ang log nagpakita sa "ClassNotFoundException: model.SalesPoint" sa linya
SalesPoint sp=salesPointCache.get(spId);
Ang StackOverflow nag-ingon nga ang hinungdan sa sayup mao nga walaβy naandan nga klase sa SalesPoint sa mga server sa CentOs. Naabot na mi. Unsa man ang bahin sa "dili nimo kinahanglan nga mano-mano nga i-deploy ang imong Java code sa matag node" ug uban pa? O ang "imong Java code" dili bahin sa SalesPoint?
Tingali nasipyat ko sa usa ka butang - nagsugod ko sa pagpangita pag-usab, pagbasa ug pagpangita pag-usab. Pagkataudtaod, nabati nako nga nabasa nako ang tanan sa hilisgutan, wala nay bag-o. Samtang nangita ko, nakit-an nako ang pipila ka makapaikag nga mga komento.
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.
Laing awtoritatibo nga opinyon:
Artikulo sa 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.
Sa pagkatinuod, mao kana. Dinhi kini nahimo, ngano, kining misteryosong binary nga pormat!
3.SingleJar
Si Denis ang nag-una sa akong personal nga rating, IMHO ang labing mapuslanon nga panudlo sa tanan nga magamit. Sa iyang
Gibuhat nako kini sa parehas nga paagi ug nakakuha usa ka file sa banga nga naglansad sa "data node" o "client node" depende sa argumento sa command line. Ang asembliya magsugod ug molihok. Ang Zero Deployment napildi.
Ang transisyon gikan sa megabytes sa test data ngadto sa napulo ka gigabytes sa combat data nagpakita nga ang binary format anaa alang sa usa ka rason. Kinahanglan nga ma-optimize ang pagkonsumo sa memorya sa mga node, ug dinhi ang BinaryObject nahimong mapuslanon kaayo.
4. Mga konklusyon
Ang una nga pagbiaybiay nga nasugatan bahin sa pagkadili klaro sa dokumentasyon sa proyekto sa Apache Ignite nahimo nga patas; gamay ra ang nabag-o sukad sa 2016. Dili sayon ββalang sa usa ka bag-ohan ang pag-assemble sa usa ka naglihok nga prototype base sa usa ka website ug/o repository.
Pinasukad sa mga resulta sa trabaho nga nahimo, ang impresyon mao nga ang Zero Deployment nagtrabaho, apan sa lebel lamang sa sistema. Usa ka butang nga sama niini: Ang BinaryObject gigamit sa pagtudlo sa hilit nga mga cluster node sa pagtrabaho uban sa custom nga mga klase; Zero Deployment - internal nga mekanismo
Ang Apache Ignite mismo ug nag-apod-apod sa mga butang sa sistema sa tibuok cluster.
Nanghinaut ko nga ang akong kasinatian mahimong mapuslanon sa mga bag-ong tiggamit sa Apache Ignite.
Source: www.habr.com