Apache Ignite Zero Deplwaman: Vrèman Zewo?

Apache Ignite Zero Deplwaman: Vrèman Zewo?

Nou se depatman devlopman teknoloji nan yon rezo an detay. Yon jou, jesyon te fikse travay la pou akselere kalkil gwo echèl lè l sèvi avèk Apache Ignite ansanm ak MSSQL, epi li te montre yon sit entènèt ki gen bèl ilistrasyon ak egzanp kòd Java. Mwen imedyatman te renmen sit la Zewo Deplwaman, deskripsyon ki pwomèt mirak: ou pa oblije manyèlman deplwaye kòd Java oswa Scala ou sou chak ne nan kadriyaj la epi re-deplwaye li chak fwa li chanje. Kòm travay la ap pwogrese, li te tounen soti ke Zewo Deplwaman gen itilizasyon espesifik, karakteristik yo ki mwen vle pataje. Anba koupe a se panse ak detay aplikasyon.

1. Deklarasyon pwoblèm nan

Sans nan pwoblèm nan se jan sa a. Gen yon anyè pwen lavant SalesPoint ak yon anyè pwodwi Sku (Stock Keeping Unit). Pwen lavant la gen yon atribi "Tip magazen" ak valè "ti" ak "gwo". Yon varyete (lis pwodwi nan pwen vant lan) konekte ak chak pwen lavant (chaje soti nan DBMS la) epi yo bay enfòmasyon ki soti nan dat espesifye pwodwi a espesifye.
eskli nan varyete nan oswa ajoute nan varyete nan.

Li oblije òganize yon kachèt partisyone nan pwen lavant epi estoke nan li enfòmasyon sou pwodwi ki konekte pou yon mwa davans. Konpatibilite ak sistèm konba a mande pou nœud kliyan Ignite a chaje done, kalkile yon total fòm nan (tip Magazen, Kòd pwodwi, jou, nimewo_of_sales_points) epi telechaje li tounen nan DBMS la.

2. Etid literati

Mwen pa gen okenn eksperyans ankò, kidonk mwen kòmanse danse soti nan recho a. Sa vle di, soti nan yon revizyon nan piblikasyon yo.

Atik 2016 Prezante Apache Ignite: Premye etap yo gen yon lyen ki mennen nan dokiman an nan pwojè Apache Ignite ak an menm tan an yon repwòch pou vag nan dokiman sa a. Mwen re-li li yon koup de fwa, klè pa vini. Mwen refere a leson patikilye ofisyèl la kòmanseKi
optimis pwomèt "Ou pral kanpe ak kouri nan yon ti moman!" Mwen ap kalkile anviwònman varyab anviwònman yo, gade de videyo Apache Ignite Essentials, men yo pa t trè itil pou travay espesifik mwen an. Mwen avèk siksè lanse Ignite soti nan liy lòd la ak dosye estanda "egzanp-ignite.xml", bati premye aplikasyon an. Kalkile Aplikasyon lè l sèvi avèk Maven. Aplikasyon an travay epi sèvi ak Zewo Deplwaman, sa ki bèl!

Mwen li pi lwen, epi gen egzanp lan imedyatman itilize affinityKey (kreye pi bonè atravè yon rechèch SQL), e menm sèvi ak misterye BinaryObject la:

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

Mwen li li yon ti kras: fòma binè - yon bagay tankou refleksyon, aksè nan jaden yo nan yon objè pa non. Ka li valè a nan yon jaden san yo pa konplètman deserialize objè a (ekonomize memwa). Men, poukisa yo itilize BinaryObject olye de Moun, depi gen Zewo Deplwaman? Poukisa IgniteCache transfere nan IgniteCache ? Li poko klè.

M ap refè aplikasyon Compute a pou adapte ka mwen an. Kle prensipal la nan anyè pwen lavant nan MSSQL defini kòm [id] [int] PA NULL, mwen kreye yon kachèt pa analoji.

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

Nan konfigirasyon xml la mwen endike ke kachèt la se patisyon

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

Partitioning by point of sale assume that total the required will be built on each cluster node for salesPointCache records available there, after which the customer node will perform final the summation.

Mwen ap li leson patikilye a Premye aplikasyon Ignite Compute, Mwen fè li pa analoji. Sou chak ne grap mwen kouri IgniteRunnable (), yon bagay tankou sa a:

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

Mwen ajoute agrégation ak telechaje lojik epi kouri li sou yon seri done tès. Tout bagay ap travay lokalman sou sèvè devlopman an.

Mwen lanse de sèvè tès CentOs, presize adrès IP yo nan default-config.xml, egzekite sou chak

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

Tou de nœuds Ignite yo ap kouri epi yo ka wè youn ak lòt. Mwen presize adrès ki nesesè yo nan konfigirasyon xml aplikasyon kliyan an, li kòmanse, ajoute yon twazyèm ne nan topoloji a epi imedyatman gen de nœuds ankò. Jounal la montre "ClassNotFoundException: model.SalesPoint" nan liy lan

SalesPoint sp=salesPointCache.get(spId);

StackOverflow di ke rezon ki fè erè a se ke pa gen okenn klas SalesPoint koutim sou sèvè CentOs. Nou rive. Kouman sou "ou pa bezwen manyèlman deplwaye kòd Java ou sou chak ne" ak sou sa? Oswa èske "kòd Java ou a" pa sou SalesPoint?

Mwen pwobableman rate yon bagay - mwen kòmanse rechèch ankò, li ak rechèch ankò. Apre yon ti tan, mwen santi ke mwen te li tout bagay sou sijè a, pa gen anyen nouvo ankò. Pandan m t ap chèche, mwen jwenn kèk kòmantè enteresan.

Valentin Kulichenko, Achitek dirijan nan GridGain Systems, reponn sou StackOverflow, avril 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.

Yon lòt opinyon otorite: Denis Magda, Direktè jesyon pwodwi, GridGain Systems.

Atik sou Habré sou mikwosèvis yo referans twa atik pa Denis Magda: Mikwosèvis Pati I, Mikwosèvis Pati II, Mikwosèvis Pati III 2016-2017. Nan dezyèm atik la, Denis sijere kòmanse yon ne grap atravè MaintenanceServiceNodeStartup.jar. Ou kapab tou itilize lansman ak konfigirasyon xml ak liy lòd, men answit ou bezwen mete klas koutim yo manyèlman sou chak nœud gwoup deplwaye:

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.

Vreman vre, se li. Isit la li vire soti, poukisa, fòma sa a binè misterye!

3.SingleJar

Denis te pran premye plas nan evalyasyon pèsonèl mwen, IMHO leson patikilye ki pi itil nan tout ki disponib. Nan li MicroServicesExample Github gen yon egzanp konplètman pare pou mete nœuds gwoup, ki konpile san okenn akoupi adisyonèl.

Mwen fè li menm jan an epi jwenn yon fichye bokal sèl ki lanse "done ne" oswa "ne kliyan" depann sou agiman an liy lòd. Asanble a kòmanse ak travay. Zewo Deplwaman te bat.

Tranzisyon an soti nan megabyte nan done tès nan dè dizèn de jigokte nan done konba te montre ke fòma binè a egziste pou yon rezon. Li te nesesè yo optimize konsomasyon memwa sou nœuds, e sa a se kote BinaryObject te tounen trè itil.

4. Konklizyon

Premye repwoche yo te rankontre sou vag dokiman pwojè Apache Ignite a te vin jis; ti kras te chanje depi 2016. Li pa fasil pou yon debutan rasanble yon pwototip fonksyone ki baze sou yon sit entènèt ak / oswa depo.

Dapre rezilta travay yo te fè a, enpresyon a te ke Zero Deployment travay, men sèlman nan nivo sistèm lan. Yon bagay tankou sa a: BinaryObject yo itilize pou anseye nœuds gwoup aleka pou travay ak klas koutim; Zewo Deplwaman - mekanis entèn
Apache Ignite tèt li epi distribye objè sistèm nan tout gwoup la.

Mwen espere eksperyans mwen pral itil pou nouvo itilizatè Apache Ignite.

Sous: www.habr.com

Add nouvo kòmantè