ʻO Apache Ignite Zero Deployment: pololei Zero?

ʻO Apache Ignite Zero Deployment: pololei Zero?

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 Hoʻokomo Zero, nona ka wehewehe ʻana e hoʻohiki ai i nā hana mana: ʻaʻole pono ʻoe e kau lima lima i kāu code Java a i ʻole Scala ma kēlā me kēia node o ka mākia a kau hou i kēlā me kēia manawa e loli ai. I ka wā o ka hana, ua ʻike ʻia ʻo Zero Deployment nā kikoʻī o ka hoʻohana ʻana, nā hiʻohiʻona aʻu e makemake ai e kaʻana like. Ma lalo o ka ʻoki ʻia nā noʻonoʻo a me nā kikoʻī hoʻokō.

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 Introduction to Apache Ignite: Hoʻomaka Loaʻa i kahi loulou i ka palapala o ka papahana Apache Ignite a i ka manawa like no ka hōʻino ʻana no ka maopopo ʻole o kēia palapala. Heluhelu hou i ʻelua mau manawa, ʻaʻole hiki mai ka maopopo. E pili ana i ke kumu aʻo kūhelu ka hoomaka ana, a
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 Hoʻopili helu hoʻohana maven. Hoʻohana ka noi a hoʻohana iā Zero Deployment, he nani loa!

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 i kahi liʻiliʻi: format binary - kekahi mea e like me ka noʻonoʻo ʻana, ke komo ʻana i nā kahua mea ma ka inoa. Hiki ke heluhelu i ka waiwai o kahi kahua me ka hoʻopau ʻole ʻana i ka mea (mālama hoʻomanaʻo). Akā no ke aha i hoʻohana ʻia ai ʻo BinaryObject ma kahi o ke kanaka, no ka mea aia kahi Zero Deployment? No ke aha ʻo IgniteCache unuhi ʻia i loko o IgniteCache ? ʻAʻole maopopo.

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 ʻO ka hoʻohana mua ʻana i ka helu helu, Hana wau ma ka hoohalike. Ma kēlā me kēia node o ka pūpū, holo wau i ka IgniteRunnable (), kahi mea e like me kēia:

  @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.

ʻO Valentin Kulichenko, Luna Hoʻokele alakaʻi ma GridGain Systems, pane ma StackOverflow, ʻApelila 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.

ʻO kekahi manaʻo mana: Denis Magda, Luna Hoʻokele o nā huahana, GridGain Systems.

ʻatikala ma Habré e pili ana i nā microservices haʻi ʻia ʻekolu ʻatikala na Denis Magda: Microservices Mahele I, Microservices Mahele II, Microservices Mahele III 2016-2017. Ma ka ʻatikala ʻelua, manaʻo ʻo Denis e hoʻomaka i kahi node cluster ma o MaintenanceServiceNodeStartup.jar. Hiki iā ʻoe ke hoʻohana i ka hoʻomaka me ka hoʻonohonoho xml a me ka laina kauoha, akā pono ʻoe e kau lima i nā papa maʻamau i kēlā me kēia node cluster i hoʻonohonoho ʻia:

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 MicroServicesExample Aia ka github i kahi hiʻohiʻona mākaukau piha o ka hoʻonohonoho ʻana i nā nodes cluster, e hōʻuluʻulu me ka ʻole o nā squats hou.

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

Pākuʻi i ka manaʻo hoʻopuka