Apache Ignite Zero Deployment: Tino Kore?

Apache Ignite Zero Deployment: Tino Kore?

Ko matou te tari whanaketanga hangarau o te whatunga hokohoko. I tetahi ra, ka whakatauhia e te whakahaere te mahi ki te whakatere i nga tatauranga nui-nui ma te whakamahi i te Apache Ignite i te taha o MSSQL, me te whakaatu i tetahi paetukutuku me nga whakaahua ataahua me nga tauira o te waehere Java. I pai tonu ahau ki te pae Kore Whakamahinga, ko te whakaahuatanga e kii ana i nga merekara: kaore koe e tuku a-ringa i to waehere Java, Scala ranei ki ia pona i roto i te matiti ka tukuna ano i ia wa ka huri. I te ahunga whakamua o te mahi, ka puta ko Zero Deployment he whakamahinga motuhake, ko nga ahuatanga e hiahia ana ahau ki te tiri. Kei raro i te tapahi ko nga whakaaro me nga korero mo te whakatinanatanga.

1. Te korero o te raruraru

Ko te ngako o te raruraru e whai ake nei. He raarangi tohu hokohoko SalesPoint me tetahi raarangi hua Sku (Waehere Taonga). Ko te waahi hoko he huanga "Momo toa" me nga uara "iti" me te "nui". He momo (rarangi o nga hua o te waahi hoko) e hono ana ki ia waahi hoko (ka utaina mai i te DBMS) ka tukuna nga korero mai i te ra i tohua te hua kua tohua.
ka whakakorehia mai i te kohinga, ka taapirihia ranei ki te huinga.

Me whakarite he keteroki wehewehe o nga waahi hoko me te penapena i roto i nga korero mo nga hua hono mo te marama i mua. Ko te hototahi ki te punaha whawhai me tono te Ignite client node ki te uta raraunga, tatau i te whakahiato o te puka (Momo toa, Waehere Hua, ra, number_of_sales_points) ka tuku ano ki te DBMS.

2. Te ako i nga tuhinga

Kaore ano au i mohio, no reira kua timata ahau ki te kanikani mai i te umu. Arā, mai i te arotake o ngā tānga.

Tuhinga 2016 Te whakauru i te Apache Ignite: Nga Mahi Tuatahi kei roto he hononga ki nga tuhinga o te kaupapa Apache Ignite me te wa ano he whakahe mo te koretake o tenei tuhinga. Ka panui ano ahau i nga wa e rua, kaore i te marama. Ka korero ahau ki te akoranga mana timatatanga, e
ka oati pai "Ka ara koe ka oma i te wa poto!" Kei te whakaaro ahau ki nga tautuhinga taurangi taiao, e matakitaki ana i nga ataata Apache Ignite Essentials e rua, engari kaore i tino whai hua mo taku mahi motuhake. I angitu ahau ki te whakarewa i te Ignite mai i te raina whakahau me te konae paerewa "example-ignite.xml", te hanga i te tono tuatahi Taupānga Tatau whakamahi Maven. Ka mahi te tono me te whakamahi i te Zero Deployment, he ataahua!

Ka panui ano ahau, a kei reira te tauira ka whakamahi tonu i te affinityKey (i hangaia i mua ma te patai SQL), me te whakamahi ano i te BinaryObject ngaro:

IgniteCache<BinaryObject, BinaryObject> people 
        = ignite.cache("Person").withKeepBinary(); 

I panui ahau he iti noa: whakatakotoranga rua - he ahua rite ki te whakaata, te uru ki nga mara o tetahi mea ma te ingoa. Ka taea te panui i te uara o te mara me te kore e tino whakakorehia te ahanoa (whakaora mahara). Engari he aha te mea i whakamahia ai te BinaryObject hei utu mo te Tangata, i te mea kei reira ko Zero Deployment? He aha te IgniteCache i whakawhitia ki IgniteCache ? Kaore ano kia marama.

Kei te hanga ano e ahau te Taupānga Tatau kia rite ki taku keehi. Ko te matua matua o te raarangi o nga waahi hoko i MSSQL kua tautuhia hei [id] [int] NOT NULL, ka hangaia e ahau he keteroki ma te whakataurite.

IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")

I roto i te whirihora xml ka tohu ahau kua wehewehea te keteroki

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="spCache"/>
    <property name="cacheMode" value="PARTITIONED"/>
</bean>

Ko te wehewehe ma te waahi hoko ka whakaarohia ka hangaia te kohinga e hiahiatia ana ki runga i ia node kahui mo nga rekoata salesPointCache e waatea ana i reira, ka mutu ka mahia e te pona kiritaki te whakaraapopototanga whakamutunga.

Kei te panui ahau i te akoranga Taupānga Whakatairanga Tuatahi, ka mahia e au ma te whakataurite. I runga i ia kohinga tautau ka whakahaerehia e ahau te IgniteRunnable(), penei:

  @Override
  public void run() {
    SalesPoint sp=salesPointCache.get(spId);
    sp.calculateSalesPointCount();
    ..
  }

Ka taapirihia e ahau te whakahiato me te tuku i te arorau me te whakahaere i runga i te huinga raraunga whakamatautau. Ka mahi nga mea katoa i te rohe i runga i te tūmau whanaketanga.

Ka whakarewahia e ahau nga kaitoro whakamatautau CentOs e rua, tohua nga wahitau IP ki te default-config.xml, mahia ki ia

./bin/ignite.sh config/default-config.xml

E rere ana nga pona Ignite e rua ka kite tetahi i tetahi. Ka tohua e ahau nga wahitau e hiahiatia ana i roto i te whirihora xml o te tono a te kiritaki, ka tiimata, ka taapirihia te tuatoru o nga node ki te topology ka rua ano nga waahanga. Ko te rangitaki e whakaatu ana i te "ClassNotFoundException: model.SalesPoint" i te raina

SalesPoint sp=salesPointCache.get(spId);

E kii ana a StackOverflow ko te take o te hapa ko te kore he akomanga SalesPoint ritenga i runga i nga tūmau CentOs. Kua tae matou. Me pehea te "kaore koe e tuku a-ringa i to waehere Java ki ia node" me etahi atu? Ko "to waehere Java" ranei ehara mo te SalesPoint?

I ngaro pea tetahi mea - ka tiimata ano ahau ki te rapu, panui me te rapu ano. I muri i tetahi wa, ka mohio ahau kua panuihia e au nga mea katoa mo te kaupapa, kaore he mea hou. I a au e rapu ana, i kitea e au etahi korero whakamere.

Valentin Kulichenko, Kaihanga Kaihanga i GridGain Systems, whakautu i runga i StackOverflow, Paenga-whāwhā 2016:

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.

Ko tetahi atu whakaaro whai mana: Denis Magda, Kaiwhakahaere o te whakahaere hua, GridGain Systems.

Tuhinga mo Habré mo nga ratonga moroiti e toru nga korero a Denis Magda: Microservices Wahanga I, Microservices Wahanga II, Microservices Wahi III 2016-2017. I roto i te tuhinga tuarua, ka kii a Denis ki te timata i te node tautau ma MaintenanceServiceNodeStartup.jar. Ka taea hoki e koe te whakamahi i te whakarewatanga me te whirihoranga xml me te raina whakahau, engari ka hiahia koe ki te whakatakoto a ringa i nga karaehe ritenga ki ia node kahui kua tukuna:

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.

Ae ra, koia tena. I konei ka puta, he aha, tenei whakatakotoranga rua ngaro!

3.SingleJar

Ko Denis te waahi tuatahi i roto i taku whakatauranga whaiaro, IMHO te akoranga tino whai hua mo nga mea katoa e waatea ana. I roto i tana MicroServicesExample Kei a Github tetahi tauira kua oti te whakarite mo te whakatu i nga pona kahui, e whakahiato ana me te kore he taapiri.

He rite tonu taku mahi me te tiki i te konae ipu kotahi e whakarewa ana i te "node raraunga" ranei "node kiritaki" i runga i te tohenga rarangi whakahau. Ka timata te huihuinga ka mahi. Kua hinga a Zero Deployment.

Ko te whakawhiti mai i nga megabytes o nga raraunga whakamatautau ki nga tekau o nga gigabytes o nga raraunga whawhai i whakaatu ko te whakatakotoranga rua mo tetahi take. He mea tika ki te arotau i te kohi mahara i runga i nga pona, a koinei te waahi ka tino whai hua a BinaryObject.

4. Whakamutunga

Ko te kohukohu tuatahi i pa ki te koretake o nga tuhinga kaupapa Apache Ignite i puta he tika; he iti noa nga huringa mai i te tau 2016. Ehara i te mea ngawari mo te kaitoi ki te whakahiato i tetahi tauira mahi i runga i te paetukutuku me/ranei te putunga.

I runga i nga hua o nga mahi i mahia, ko te whakaaro ko te mahi a Zero Deployment, engari i te taumata punaha anake. He mea penei: Ka whakamahia te BinaryObject ki te whakaako i nga pona kahui mamao ki te mahi me nga karaehe ritenga; Te Whakamahinga Kore - tikanga o roto
Ka whakakorikori a Apache i a ia ano ka tohatoha i nga taonga punaha puta noa i te roopu.

Ko taku tumanako ka whai hua taku wheako ki nga kaiwhakamahi Apache Ignite hou.

Source: will.com

Tāpiri i te kōrero