Cleachdadh Apache Ignite Zero: Fìor Zero?

Cleachdadh Apache Ignite Zero: Fìor Zero?

Is sinne an roinn leasachaidh teicneòlais de lìonra reic. Aon latha, chuir an luchd-riaghlaidh an gnìomh àireamhachadh mòr a luathachadh le bhith a’ cleachdadh Apache Ignite ann an co-bhonn ri MSSQL, agus sheall iad làrach-lìn le dealbhan brèagha agus eisimpleirean de chòd Java. Chòrd an làrach rium sa bhad Cleachdadh neoni, tha an tuairisgeul air a’ gealltainn mìorbhailean: cha leig thu leas do chòd Java no Scala a chuir a-steach le làimh air gach nód sa ghriod agus ath-chleachdadh gach uair a dh’ atharraicheas e. Mar a chaidh an obair air adhart, thionndaidh e a-mach gu bheil cleachdaidhean sònraichte aig Zero Deployment, na feartan a tha mi airson a roinn. Fon gearradh tha smuaintean agus mion-fhiosrachadh mu bhuileachadh.

1. Aithris air an duilgheadas

Tha brìgh na trioblaid mar a leanas. Tha eòlaire puing reic SalesPoint agus eòlaire toraidh Sku (Aonad Glèidhidh Stoc). Tha feart “seòrsa stòr” aig a ’phuing reic leis na luachan“ beag ”agus“ mòr ”. Tha measgachadh (liosta de thoraidhean an àite reic) ceangailte ri gach puing reic (air a luchdachadh bhon DBMS) agus tha fiosrachadh air a thoirt seachad gum bi an toradh ainmichte bhon cheann-latha ainmichte
air an dùnadh a-mach às an raon no air a chur ris an raon.

Feumar tasgadan de phuingean reic a chuir air dòigh agus fiosrachadh a stòradh ann mu thoraidhean ceangailte airson mìos ro-làimh. Feumaidh co-chòrdalachd leis an t-siostam sabaid an nód teachdaiche Ignite gus dàta a luchdachadh, obrachadh a-mach cruinneachadh iomlan den fhoirm (seòrsa stòr, còd toraidh, latha, àireamh_of_sales_points) agus a luchdachadh suas air ais chun DBMS.

2. Sgrùdadh air litreachas

Chan eil eòlas sam bith agam fhathast, agus mar sin tha mi a’ tòiseachadh a’ dannsa bhon stòbha. Is e sin, bho sgrùdadh foillseachaidhean.

Artaigil 2016 A’ toirt a-steach Apache Ignite: Na Ciad Cheumannan tha ceangal ann ri sgrìobhainnean pròiseact Apache Ignite agus aig an aon àm tàmailt airson cho neo-shoilleir sa tha na sgrìobhainnean seo. Leugh mi a-rithist e uair no dhà, chan eil soilleireachd a’ tighinn. Bidh mi a’ toirt iomradh air an oideachadh oifigeil a' tòiseachadh, a tha
gu dòchasach a’ gealltainn “Bidh thu suas agus a’ ruith ann an jiffy!” Tha mi a’ faighinn a-mach na roghainnean caochlaideach àrainneachd, a’ coimhead dà bhidio Apache Ignite Essentials, ach cha robh iad glè fheumail airson mo ghnìomh sònraichte. Bidh mi a’ cur air bhog Ignite gu soirbheachail bhon loidhne-àithne leis an fhaidhle àbhaisteach “example-ignite.xml”, a’ togail a’ chiad iarrtas Iarrtas coimpiutaireachd cleachdadh Maven. Bidh an tagradh ag obair agus a’ cleachdadh Zero Deployment, abair bòidhchead!

Leugh mi nas fhaide, agus an sin tha an eisimpleir sa bhad a’ cleachdadh affinityKey (a chaidh a chruthachadh na bu thràithe tro cheist SQL), agus eadhon a’ cleachdadh am BinaryObject dìomhair:

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

leugh mi e немного: cruth binary - rudeigin mar mheòrachadh, a 'faighinn cothrom air raointean nì le ainm. Is urrainn dhaibh luach achadh a leughadh gun a bhith a’ cur às don nì gu tur (sàbhaladh cuimhne). Ach carson a tha BinaryObject air a chleachdadh an àite Person, leis gu bheil Zero Deployment ann? Carson a tha IgniteCache air a ghluasad gu IgniteCache ? Chan eil e soilleir fhathast.

Tha mi ag ath-dhèanamh an Iarrtas Coimpiutaireachd a rèir mo chùis. Tha prìomh iuchair an eòlaire de phuingean reic ann an MSSQL air a mhìneachadh mar [id] [int] NOT NULL, bidh mi a’ cruthachadh tasgadan a rèir samhlaidheachd

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

Anns an rèiteachadh xml tha mi a’ comharrachadh gu bheil an tasgadan air a sgaradh

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

Tha sgaradh a rèir puing reic a’ gabhail ris gun tèid an t-suim iomlan a tha a dhìth a thogail air gach nód cnuasachaidh airson na clàran salesPointCache a tha rim faighinn an sin, agus às deidh sin nì an nód teachdaiche an t-suim mu dheireadh.

Tha mi a’ leughadh an oideachadh A 'chiad Ignite Iarrtas Coimpiutaireachd, Bidh mi ga dhèanamh le samhlachas. Air gach nód brabhsair bidh mi a’ ruith IgniteRunnable (), rudeigin mar seo:

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

Bidh mi a’ cur ris a’ chruinneachadh agus a’ luchdachadh suas loidsig agus ga ruith air seata dàta deuchainn. Bidh a h-uile dad ag obair gu h-ionadail air an fhrithealaiche leasachaidh.

Bidh mi a’ cur air bhog dà fhrithealaiche deuchainn CentOs, sònraich na seòlaidhean IP ann an default-config.xml, cuir an gnìomh air gach fear

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

Tha an dà nod Ignite a’ ruith agus chì iad a chèile. Bidh mi a’ sònrachadh nan seòlaidhean a tha a dhìth ann an config xml an tagraidh teachdaiche, bidh e a’ tòiseachadh, a’ cur an treas nód ris an topology agus sa bhad tha dà nodan a-rithist. Tha an log a’ sealltainn “ClassNotFoundException: model.SalesPoint” san loidhne

SalesPoint sp=salesPointCache.get(spId);

Tha StackOverflow ag ràdh gur e an adhbhar airson a’ mhearachd nach eil clas àbhaisteach SalesPoint air frithealaichean CentOs. Tha sinn air ruighinn. Dè mu dheidhinn “chan fheum thu do chòd Java a chuir a-steach le làimh air gach nód” agus mar sin air adhart? No nach eil “do chòd Java” mu dheidhinn SalesPoint?

Is dòcha gun do chaill mi rudeigin - bidh mi a’ tòiseachadh a ’lorg a-rithist, a’ leughadh agus a ’lorg a-rithist. An ceann greiseag, tha mi a 'faireachdainn gu bheil mi air a h-uile dad a leughadh air a' chuspair, chan eil dad ùr ann tuilleadh. Fhad 'sa bha mi a' rannsachadh, lorg mi beachdan inntinneach.

Valentin Kulichenko, Prìomh ailtire aig GridGain Systems, freagairt air StackOverflow, Giblean 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.

Beachd ùghdarrasach eile: Denis Magda, Stiùiriche stiùireadh toraidh, GridGain Systems.

Artaigil mu Habré mu dheidhinn microservices a’ toirt iomradh air trì artaigilean le Denis Magda: Microservices Pàirt I, Microservices Pàirt II, Microservices Pàirt III 2016-2017. Anns an dàrna artaigil, tha Denis a’ moladh a bhith a’ tòiseachadh nód brabhsair tro MaintenanceServiceNodeStartup.jar. Faodaidh tu cuideachd cur air bhog a chleachdadh le rèiteachadh xml agus loidhne-àithne, ach an uairsin feumaidh tu clasaichean àbhaisteach a chuir le làimh air gach nód cnuasachaidh a chaidh a chleachdadh:

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.

Gu dearbh, sin e. An seo tha e a ’tionndadh a-mach, carson, an cruth binary dìomhair seo!

3.SingleJar

Ghabh Denis a’ chiad àite anns an rangachadh pearsanta agam, IMHO an oideachadh as fheumaile a bha ri fhaighinn. Anns a Eisimpleir de mhicro-sheirbheisean Tha eisimpleir gu tur deiseil ann an Github de bhith a’ stèidheachadh nodan cnuasachaidh, a bhios a’ cruinneachadh gun squatting a bharrachd.

Bidh mi ga dhèanamh san aon dòigh agus a’ faighinn aon fhaidhle jar a chuireas air bhog “data nóde” no “cliant nód” a rèir argamaid na loidhne-àithne. Bidh an co-chruinneachadh a’ tòiseachadh agus ag obair. Tha Zero Deployment air a’ chùis a dhèanamh.

Sheall an gluasad bho megabytes de dhàta deuchainn gu deichean de gigabytes de dhàta sabaid gu bheil an cruth binary ann airson adhbhar. Bha e riatanach caitheamh cuimhne a mheudachadh air nodan, agus seo far an robh BinaryObject gu math feumail.

4. Co-dhùnaidhean

Bha a’ chiad mhasladh a thachair mu cho neo-shoilleir ‘s a bha sgrìobhainnean pròiseact Apache Ignite cothromach; chan eil mòran air atharrachadh bho 2016. Chan eil e furasta do neach-tòiseachaidh prototype gnìomh a chruinneachadh stèidhichte air làrach-lìn agus / no stòr.

Stèidhichte air toraidhean na h-obrach a chaidh a dhèanamh, b 'e a' bheachd gu bheil Zero Deployment ag obair, ach a-mhàin aig ìre an t-siostaim. Rud mar seo: Bithear a’ cleachdadh BinaryObject gus nodan braisle iomallach a theagasg gus obrachadh le clasaichean àbhaisteach; Cleachdadh neoni - inneal a-staigh
Bidh Apache Ignite fhèin agus a’ sgaoileadh stuthan siostaim air feadh a’ bhuidheann.

Tha mi an dòchas gum bi an t-eòlas agam feumail do luchd-cleachdaidh ùr Apache Ignite.

Source: www.habr.com

Cuir beachd ann