He keʻena hoʻomohala ʻenehana pūnaewele hale kūʻai mākou. I ka manawa i hoʻonohonoho ai ka hoʻokele i ka hana o ka wikiwiki ʻana i nā helu volumetric me ka hoʻohana ʻana iā Apache Ignite me MSSQL, hōʻike i kahi pūnaewele me nā kiʻi nani a me nā hiʻohiʻona Java code. Ua makemake ia ma ka pūnaewele
1. ʻŌlelo o ka pilikia
Penei ke kumu o ka pilikia. Aia kahi papa kuhikuhi kūʻai kūʻai ʻo SalesPoint a me kahi papa kuhikuhi huahana Sku (Stock Keeping Unit). ʻO ke kumu kūʻai he ʻano "ʻano hale kūʻai" me nā waiwai "liʻiliʻi" a me "nui". Hoʻohui ʻia kahi ʻano (kahi papa inoa o nā huahana o ke kahua kūʻai) i kēlā me kēia wahi kūʻai (hoʻouka ʻia mai ka DBMS) a hāʻawi ʻia ka ʻike mai ka lā i ʻōlelo ʻia ka huahana i kuhikuhi ʻia.
wehe ʻia mai ka laulā a hoʻohui ʻia i ka laulā.
Pono e hoʻonohonoho i kahi cache partitioned o nā wahi kūʻai aku a mālama i ka ʻike e pili ana i nā huahana pili i hoʻokahi mahina ma mua. Pono ka hoʻohālikelike ʻana me ka ʻōnaehana hakakā i ka node o ka mea kūʻai aku Ignite e hoʻouka i ka ʻikepili, e helu i kahi hōʻuluʻulu o ke ʻano (Ke ʻano hale kūʻai, ItemID, lā, helu_of_sales_points) a hoʻouka hou i ka DBMS.
2. Haʻawina palapala
ʻAʻohe ʻike i kēia manawa, no laila ke hoʻomaka nei au e hula mai ke kapuahi. ʻO ia hoʻi, mai ka loiloi ʻana i nā puke.
Paukū 2016
optimistically olelo hoopomaikai "E ala oe a holo i ka jiffy!". Hana wau i nā hoʻonohonoho o nā ʻano like ʻole, ke nānā nei au i ʻelua wikiō Apache Ignite Essentials, no kaʻu hana kikoʻī ʻaʻole lākou i hoʻohana nui. Hoʻomaka maikaʻi i ka Ignite mai ka laina kauoha me ka faila "example-ignite.xml" paʻamau, kūkulu i ka noi mua
Heluhelu hou au, a ma laila e hoʻohana koke ai ka laʻana i ka affinityKey (i hana ʻia ma mua o kahi nīnau SQL), a ua hoʻohana ʻia ka BinaryObject pohihihi:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
heluhelu
Ke hoʻolālā hou nei au i ka Compute Application no kaʻu hihia. ʻO ke kī nui o ka papa kuhikuhi wahi kūʻai ma MSSQL ua wehewehe ʻia ʻo [id] [int] NOT NULL, hana wau i kahi huna ma ka hoʻohālikelike.
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
I loko o ka xml-config au e kuhikuhi nei ua hoʻokaʻawale ʻia ka cache
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
ʻO ka hoʻokaʻawale ʻana ma nā wahi kūʻai e manaʻo ʻia e kūkulu ʻia ka hui i koi ʻia ma kēlā me kēia node o ka pūʻulu no nā moʻolelo salesPointCache i loaʻa ma laila, a laila e hana ka node mea kūʻai aku i ka hōʻuluʻulu hope.
Heluhelu i ke kumu aʻo
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Hoʻohui au i ka loiloi o ka hōʻuluʻulu ʻana a me ka wehe ʻana, holo wau ma kahi hoʻonohonoho ʻikepili hoʻāʻo. Ke hana nei nā mea a pau ma ka hale hoʻomohala.
Holo wau i ʻelua mau kikowaena hoʻāʻo CentOs, e kuhikuhi i nā helu ip ma default-config.xml, e hoʻokō i kēlā me kēia
./bin/ignite.sh config/default-config.xml
Hoʻomaka ʻia nā node Ignite ʻelua a ʻike kekahi i kekahi. Hōʻike wau i nā helu kūpono i ka xml-config o ka noi o ka mea kūʻai aku, hoʻomaka ia, hoʻohui i ke kolu o ka node i ka topology, a ʻelua mau nodes hou. 'Ōlelo ka log "ClassNotFoundException: model.SalesPoint" ma ka laina
SalesPoint sp=salesPointCache.get(spId);
Ua ʻōlelo ʻo StackOverflow ʻo ke kumu o ka hewa ʻaʻohe papa SalesPoint maʻamau ma nā kikowaena CentOs. Ua hōʻea mākou. Pehea e pili ana i "ʻaʻole pono ʻoe e kau lima i kāu code Java ma kēlā me kēia node" a pēlā aku? A i ʻole "kāu code Java" ʻaʻole e pili ana iā SalesPoint?
Ua hala paha au i kekahi mea - hoʻomaka wau e ʻimi hou, heluhelu a huli hou. Ma hope o kekahi manawa, aia ka manaʻo ua heluhelu wau i nā mea āpau ma ke kumuhana, ʻaʻohe mea hou. I ka ʻimi ʻana, loaʻa iaʻu kekahi mau ʻōlelo hoihoi.
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.
ʻO kekahi manaʻo mana:
ʻatikala ma 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.
ʻOiaʻiʻo, ʻo ia nō. Eia nō, ʻike ʻia, no ke aha, kēia ʻano binary pohihihi!
3.SingleJar
Ua lawe ʻo Denis i kahi mua ma kaʻu helu pilikino, ʻo IMHO ka mea aʻoaʻo pono loa i loaʻa. I kona
Hana wau i ke kiʻi a me ke ʻano like, loaʻa iaʻu kahi faila pahu hoʻokahi e hoʻomaka i ka "node data" a i ʻole "node client" e pili ana i ka hoʻopaʻapaʻa laina kauoha. Ke kūkulu nei a holo. Ua pio ka Zero Deployment.
ʻO ka hoʻololi ʻana mai nā megabytes o ka ʻikepili hoʻāʻo i nā ʻumi gigabytes o ka ʻikepili kaua i hōʻike ʻia aia ke ʻano binary no kahi kumu. Pono e hoʻonui i ka hoʻohana ʻana i ka hoʻomanaʻo ma nā nodes, a eia ʻo BinaryObject i lilo i mea pono loa.
4. Manao
ʻO ka ʻōlelo hōʻino mua i hui ʻia me ka ʻike ʻole o ka palapala o ka papahana Apache Ignite i kūpono, liʻiliʻi ka loli mai 2016. ʻAʻole maʻalahi i ka mea hoʻomaka ke kūkulu i kahi prototype hana e pili ana i kahi pūnaewele a/a i kahi waihona.
Ma muli o ka hana i hana ʻia, ʻo ka manaʻo ua hana ʻo Zero Deployment, akā ma ka pae ʻōnaehana wale nō. ʻO kekahi mea e like me kēia: Hoʻohana ʻia ʻo BinaryObject e aʻo i nā nodes cluster mamao e hana me nā papa maʻamau; Zero Deployment - ka hana o loko
Hoʻopau ʻo Apache iā ia iho a puʻunaue i nā mea ʻōnaehana ma ka pūʻulu.
Manaʻo wau e pono kaʻu ʻike i nā mea hoʻohana hou o Apache Ignite.
Source: www.habr.com