Ifiranṣẹ Zero Apache Ignite: Odo Lootọ?

Ifiranṣẹ Zero Apache Ignite: Odo Lootọ?

A jẹ ẹka idagbasoke imọ-ẹrọ ti nẹtiwọọki soobu kan. Ni ọjọ kan, iṣakoso ṣeto iṣẹ ṣiṣe ti iyara awọn iṣiro iwọn-nla nipa lilo Apache Ignite ni apapo pẹlu MSSQL, ati ṣafihan oju opo wẹẹbu kan pẹlu awọn apejuwe lẹwa ati awọn apẹẹrẹ ti koodu Java. Mo fẹran aaye naa lẹsẹkẹsẹ Ifilọlẹ odo, Apejuwe ti eyi ti o ṣe ileri awọn iṣẹ iyanu: iwọ ko ni lati fi ọwọ Java tabi koodu Scala rẹ si ori ipade kọọkan ninu grid ki o tun gbe lọ ni gbogbo igba ti o yipada. Bi iṣẹ naa ti nlọsiwaju, o wa ni pe Zero Deployment ni awọn lilo pato, awọn ẹya ara ẹrọ ti mo fẹ pin. Ni isalẹ gige ni awọn ero ati awọn alaye imuse.

1. Gbólóhùn ti awọn isoro

Koko ti awọn isoro ni bi wọnyi. Itọsọna aaye tita SalesPoint wa ati itọsọna ọja Sku (Iṣoju Iṣura). Ojuami ti tita ni abuda “Iru itaja” pẹlu awọn iye “kekere” ati “nla”. Oriṣiriṣi (akojọ awọn ọja ti aaye tita) ti sopọ si aaye tita kọọkan (ti a kojọpọ lati DBMS) ati pe alaye ti pese lati ọjọ ti a ti sọ tẹlẹ ọja ti a sọ tẹlẹ.
yọkuro lati oriṣiriṣi tabi fi kun si oriṣiriṣi.

O nilo lati ṣeto kaṣe ipin ti awọn aaye tita ati tọju alaye ninu rẹ nipa awọn ọja ti a ti sopọ fun oṣu kan siwaju. Ibamu pẹlu eto ija nilo oju ipade alabara Ignite lati ṣaja data, ṣe iṣiro apapọ fọọmu naa (Iru itaja, koodu ọja, ọjọ, nọmba_of_sales_points) ati gbee pada si DBMS.

2. Iwadi ti litireso

Emi ko ni iriri eyikeyi sibẹsibẹ, nitorinaa Mo bẹrẹ lati jo lati adiro. Iyẹn ni, lati atunyẹwo ti awọn atẹjade.

Abala 2016 Ifihan Apache Ignite: Awọn Igbesẹ akọkọ ni ọna asopọ kan si iwe ti iṣẹ akanṣe Apache Ignite ati ni akoko kanna ẹgan fun aiduro ti iwe yii. Mo tun ka o ni igba meji, wípé ko wa. Mo tọkasi ikẹkọ osise Bibẹrẹ, eyi ti awọn
Ireti ṣe ileri “Iwọ yoo dide ati ṣiṣe ni jiffy!” Mo n ṣe afihan awọn eto oniyipada ayika, wiwo awọn fidio Apache Ignite Awọn ibaraẹnisọrọ pataki, ṣugbọn wọn ko wulo pupọ fun iṣẹ-ṣiṣe mi pato. Mo ṣe ifilọlẹ Ignite ni aṣeyọri lati laini aṣẹ pẹlu faili boṣewa “example-ignite.xml”, ṣiṣe ohun elo akọkọ Iṣiro Ohun elo lilo Maven. Ohun elo naa n ṣiṣẹ ati lo Imuṣiṣẹ Zero, kini ẹwa!

Mo ka siwaju, ati pe nibẹ ni apẹẹrẹ lẹsẹkẹsẹ lo affinityKey (ti a ṣẹda tẹlẹ nipasẹ ibeere SQL), ati paapaa lo BinaryObject ohun ijinlẹ:

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

Mo kà á kekere diẹ: ọna kika alakomeji - nkan bi irisi, wọle si awọn aaye ti ohun kan nipa orukọ. Le ka iye ti a aaye lai patapata deserializing ohun (fifipamọ awọn iranti). Ṣugbọn kilode ti a fi nlo BinaryObject dipo Eniyan, niwọn igba ti Imuṣiṣẹ Zero wa? Kí nìdí IgniteCache gbe si IgniteCache ? Ko ṣe kedere sibẹsibẹ.

Mo tun ṣe Ohun elo Oniṣiro lati baamu ọran mi. Bọtini akọkọ ti itọsọna awọn aaye tita ni MSSQL jẹ asọye bi [id] [int] KO NULL, Mo ṣẹda kaṣe nipasẹ afiwe

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

Ninu atunto xml Mo tọka pe kaṣe ti pin

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

Pipin nipasẹ aaye tita dawọle pe akopọ ti o nilo yoo kọ sori ipade iṣupọ kọọkan fun awọn igbasilẹ salesPointCache ti o wa nibẹ, lẹhin eyi ipade alabara yoo ṣe akopọ ipari.

Mo n ka ikẹkọ naa Ohun elo Iṣiro Ignite akọkọ, Mo ṣe nipasẹ afiwe. Lori ipade iṣupọ kọọkan Mo nṣiṣẹ IgniteRunnable (), nkan bii eyi:

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

Mo ṣafikun akopọ ati iṣaro ikojọpọ ati ṣiṣe lori ṣeto data idanwo kan. Ohun gbogbo ṣiṣẹ ni agbegbe lori olupin idagbasoke.

Mo ṣe ifilọlẹ awọn olupin idanwo CentO meji, pato awọn adirẹsi IP ni aiyipada-config.xml, ṣiṣẹ lori ọkọọkan

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

Awọn apa Ignite mejeeji nṣiṣẹ ati pe wọn le rii ara wọn. Mo pato awọn adirẹsi ti a beere ni atunto xml ti ohun elo alabara, o bẹrẹ, ṣafikun ipade kẹta si topology ati lẹsẹkẹsẹ awọn apa meji tun wa. Awọn log fihan "ClassNotFoundException: model.SalesPoint" ni ila

SalesPoint sp=salesPointCache.get(spId);

StackOverflow sọ pe idi fun aṣiṣe ni pe ko si kilasi SalesPoint aṣa lori awọn olupin CentOs. A ti de. Bawo ni nipa “o ko ni lati fi ọwọ ran koodu Java rẹ sori ipade kọọkan” ati bẹbẹ lọ? Tabi "koodu Java rẹ" kii ṣe nipa SalesPoint?

O ṣee ṣe ki n padanu nkankan - Mo bẹrẹ wiwa lẹẹkansi, kika ati wiwa lẹẹkansi. Lẹhin igba diẹ, Mo gba rilara pe Mo ti ka ohun gbogbo lori koko, ko si nkankan tuntun mọ. Lakoko ti Mo n wa, Mo rii diẹ ninu awọn asọye ti o nifẹ si.

Valentin Kulichenko, Asiwaju ayaworan ni GridGain Systems, idahun lori StackOverflow, Oṣu Kẹrin ọdun 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.

Imọran alaṣẹ miiran: Denis Magda, Oludari iṣakoso ọja, GridGain Systems.

Ìwé lori Habré nipa microservices tọka awọn nkan mẹta nipasẹ Denis Magda: Microservices Apá I, Microservices Apá II, Microservices Apá III 2016-2017. Ninu nkan keji, Denis daba bibẹrẹ ipade iṣupọ kan nipasẹ MaintenanceServiceNodeStartup.jar. O tun le lo ifilọlẹ pẹlu iṣeto xml ati laini aṣẹ, ṣugbọn lẹhinna o nilo lati fi awọn kilasi aṣa si ọwọ ọkọọkan ti a fi ranse iṣupọ ipade:

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.

Lootọ, iyẹn ni. Nibi o wa ni jade, kilode, ọna kika alakomeji aramada yii!

3.SingleJar

Denis gba ipo akọkọ ni idiyele ti ara ẹni mi, IMHO ikẹkọ ti o wulo julọ ti gbogbo wa. Ninu tirẹ MicroServicesApeere Github ni apẹẹrẹ ti o ti ṣetan patapata ti iṣeto awọn apa iṣupọ, eyiti o ṣajọ laisi eyikeyi afikun squatting.

Mo ṣe ni ọna kanna ati gba faili idẹ kan kan ti o ṣe ifilọlẹ “oju-ọna data” tabi “oju-ọna alabara” da lori ariyanjiyan laini aṣẹ. Apejọ bẹrẹ ati ṣiṣẹ. Odo imuṣiṣẹ ti a ti ṣẹgun.

Iyipada lati megabyte ti data idanwo si mewa ti gigabytes ti data ija fihan pe ọna kika alakomeji wa fun idi kan. O jẹ dandan lati mu agbara iranti pọ si lori awọn apa, ati eyi ni ibiti BinaryObject ti jade lati wulo pupọ.

4. Awọn ipari

Ẹgan akọkọ ti o pade nipa aiduro ti iwe iṣẹ akanṣe Apache Ignite ti jade lati jẹ ododo; diẹ ti yipada lati ọdun 2016. Ko rọrun fun olubere lati ṣajọ apẹrẹ ti n ṣiṣẹ ti o da lori oju opo wẹẹbu kan ati/tabi ibi ipamọ.

Da lori awọn abajade ti iṣẹ ti a ṣe, iwunilori ni pe Imuṣiṣẹ Zero ṣiṣẹ, ṣugbọn ni ipele eto nikan. Nkankan bii eyi: BinaryObject ni a lo lati kọ awọn apa iṣupọ latọna jijin lati ṣiṣẹ pẹlu awọn kilasi aṣa; Zero imuṣiṣẹ - ti abẹnu siseto
Apache Ignite funrararẹ ati pinpin awọn nkan eto jakejado iṣupọ naa.

Mo nireti pe iriri mi yoo wulo fun awọn olumulo Apache Ignite tuntun.

orisun: www.habr.com

Fi ọrọìwòye kun