Мо шӯъбаи рушди технологияи шабакаи чакана мебошем. Рӯзе роҳбарият вазифа гузошт, ки ҳисобҳои калонҳаҷмро бо истифода аз Apache Ignite дар якҷоягӣ бо MSSQL суръат бахшад ва вебсайтеро бо тасвирҳои зебо ва намунаҳои коди Java нишон дод. Ба ман дарҳол сайт писанд омад
1. Изҳороти масъала
Мохияти масъала чунин аст. Феҳристи нуқтаи фурӯши SalesPoint ва феҳристи маҳсулоти Sku (Воҳиди нигоҳдории захираҳо) мавҷуд аст. Нуқтаи фурӯш дорои хусусияти "Намуди мағоза" бо арзишҳои "хурд" ва "калон" мебошад. Ассортимент (рӯйхати маҳсулоти нуқтаи фурӯш) ба ҳар як нуқтаи фурӯш пайваст карда мешавад (аз DBMS бор карда мешавад) ва маълумот пешниҳод карда мешавад, ки аз санаи муқарраршуда маҳсулоти зикршуда.
аз ассортимент хориҷ карда ё ба ассортимент илова карда шудааст.
Зарур аст, ки кэши тақсимшудаи нуқтаҳои савдо ташкил карда, дар он маълумот дар бораи маҳсулоти пайвастшуда як моҳ пеш нигоҳ дошта шавад. Мутобиқӣ бо системаи ҷангӣ аз гиреҳи муштарии Ignite талаб мекунад, ки маълумотро бор кунад, маҷмӯи формаро ҳисоб кунад (Намуди мағоза, коди маҳсулот, рӯз, рақами_фурӯшҳо) ва дубора ба DBMS бор кунад.
2. Омузиши адабиёт
Ман то ҳол таҷриба надорам, аз ин рӯ ман аз оташдон рақс карданро сар мекунам. Яъне аз баррасии нашрияҳо.
Моддаи 2016
хушбинона ваъда медиҳад, ки "Шумо дар як лаҳза ба кор меравед!" Ман танзимоти тағирёбандаи муҳити зистро мефаҳмам ва ду видеои Apache Ignite Essentials -ро тамошо мекунам, аммо онҳо барои вазифаи мушаххаси ман чандон муфид набуданд. Ман Ignite-ро аз сатри фармон бо файли стандартии "example-ignite.xml" бомуваффақият оғоз кардам, ки барномаи аввалро бунёд мекунам.
Ман минбаъд хондам ва дар он ҷо мисол фавран afinityKey-ро истифода мебарад (қаблан тавассути дархости SQL сохта шуда буд) ва ҳатто BinaryObject пурасрорро истифода мебарад:
IgniteCache<BinaryObject, BinaryObject> people
= ignite.cache("Person").withKeepBinary();
Ман онро хондам
Ман Замимаи ҳисоббарориро барои мувофиқ кардани ҳолати худ аз нав таҳия мекунам. Калиди ибтидоии феҳристи нуқтаҳои фурӯш дар MSSQL ҳамчун [id] [int] NULL НЕСТ, ман кэшро аз рӯи аналогия эҷод мекунам
IgniteCache<Integer, SalesPoint> salesPointCache=ignite.cache("spCache")
Дар конфигуратсияи xml ман нишон медиҳам, ки кэш тақсим шудааст
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="spCache"/>
<property name="cacheMode" value="PARTITIONED"/>
</bean>
Тақсимкунӣ аз рӯи нуқтаи фурӯш тахмин мекунад, ки агрегати зарурӣ дар ҳар як гиреҳи кластер барои сабтҳои salesPointCache дар он ҷо сохта мешавад ва баъд аз он гиреҳи муштарӣ ҷамъбасти ниҳоиро иҷро мекунад.
Ман дарсро мехонам
@Override
public void run() {
SalesPoint sp=salesPointCache.get(spId);
sp.calculateSalesPointCount();
..
}
Ман мантиқи ҷамъкунӣ ва боркуниро илова мекунам ва онро дар маҷмӯи додаҳои санҷишӣ иҷро мекунам. Ҳама чиз дар сервери рушд ба таври маҳаллӣ кор мекунад.
Ман ду сервери санҷишии CentOs-ро оғоз мекунам, суроғаҳои IP-ро дар default-config.xml муайян мекунам ва ҳар яки онро иҷро мекунам.
./bin/ignite.sh config/default-config.xml
Ҳарду гиреҳи Ignite кор мекунанд ва якдигарро мебинанд. Ман суроғаҳои лозимиро дар конфигуратсияи xml замимаи муштарӣ муайян мекунам, он оғоз мешавад, гиреҳи сеюмро ба топология илова мекунад ва дарҳол боз ду гиреҳ пайдо мешаванд. Журнал дар сатр "ClassNotFoundException: model.SalesPoint" -ро нишон медиҳад
SalesPoint sp=salesPointCache.get(spId);
StackOverflow мегӯяд, ки сабаби хато дар он аст, ки дар серверҳои CentOs синфи фармоишии SalesPoint вуҷуд надорад. Мо расидем. Дар бораи "ба шумо лозим нест, ки рамзи Java-и худро дар ҳар як гиреҳ дастӣ ҷойгир кунед" ва ғайра? Ё "рамзи Java-и шумо" дар бораи SalesPoint нест?
Эҳтимол ман чизеро аз даст додам - ман боз ба ҷустуҷӯ, хондан ва ҷустуҷӯ кардан шурӯъ мекунам. Пас аз чанде, ман ҳис мекунам, ки ман ҳама чизро дар мавзӯъ хондаам, дигар ҳеҷ чизи наве нест. Вақте ки ман ҷустуҷӯ мекардам, ман якчанд шарҳҳои ҷолиб пайдо кардам.
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.
Боз як андешаи мӯътабар:
Мақола дар бораи Ҳабре
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.
Воқеан, ҳамин аст. Дар ин ҷо маълум мешавад, ки чаро ин формати пурасрор дуӣ!
3.SingleJar
Денис дар рейтинги шахсии ман ҷои аввалро гирифт, IMHO муфидтарин дарси ҳама дастрас. Дар худ
Ман инро ҳамин тавр мекунам ва як файли jar мегирам, ки вобаста ба далели сатри фармон "гиреҳи маълумот" ё "гиреҳи мизоҷ" -ро оғоз мекунад. Маҷлис оғоз ва кор мекунад. Ҷойгиркунии сифр мағлуб карда шуд.
Гузариш аз мегабайтҳои маълумоти санҷишӣ ба даҳҳо гигабайтҳои маълумоти ҷангӣ нишон дод, ки формати бинарӣ бо ягон сабаб вуҷуд дорад. Зарур буд, ки истеъмоли хотира дар гиреҳҳо оптимизатсия карда шавад ва дар ин ҷо BinaryObject хеле муфид буд.
4. Хулоса
Аввалин сарзаниш дар бораи номуайянии ҳуҷҷатҳои лоиҳавии Apache Ignite одилона баромад; аз соли 2016 каме тағйир ёфт. Ҷамъоварии прототипи амалкунанда дар асоси вебсайт ва/ё репозиторий барои шурӯъкунандагон осон нест.
Дар асоси натиҷаҳои кори анҷомдода, таассурот чунин буд, ки Zero Deployment кор мекунад, аммо танҳо дар сатҳи система. Чизе монанди ин: BinaryObject барои таълим додани гиреҳҳои кластери дурдаст барои кор бо синфҳои фармоишӣ истифода мешавад; Ҷойгиркунии сифр - механизми дохилӣ
Apache Ignite худаш ва объектҳои системаро дар тамоми кластер паҳн мекунад.
Умедворам, ки таҷрибаи ман барои корбарони нави Apache Ignite муфид хоҳад буд.
Манбаъ: will.com