OSGI + IMDG = ?

Oct 24, 2016 12:47

Вопрос к сообществу.

Есть ли у кого то опыт приготовления subj?
Работает ли эта связка ваабще?
Как ведет себя десериализация в новую версию классов после перезагрузки модуля?
Сойдет ли с ума грид когда на разных нодах окажутся разные версии модуля и служится выполнение функтора на другой ноде?

Какого еще рода грабли лежат на этом пути?

Leave a comment

Comments 7

_xacid_ October 25 2016, 21:34:46 UTC
возможно не совсем релевантно (опыт не очень большой - только со spark-ом) но с OSGI проблемы начинаются еще на этапе ассемблирования так называемого uber-jar (то есть перепаковки всех необходимых библиотек в один общий дистрибутив для деплоймента): все osgi-модули содержат определенные одноименные (и это собственно проблема) файлы с метаданными и вот именно процесс мержа портит эти файлы метаданных

дальше этого этапа пока дело не дошло :) пока что деплой сводится к ручному копированию всех джаров поотдельности (без сборки в общий джар) и соответсвенно прописыванию их в просто общий класспас всей jvm что конечно не самый лучший вариант но лучше пока решения не нашлось - в таком виде оно под spark+hadoop в принципе работает

с разными версиями библиотек на нодах не экспериментировали - но думаю что результат предсказуем и будет отрицателен :)

Reply

hedin October 25 2016, 22:14:39 UTC
Хммм неее OSGi это не про то как все собрать в один пакет ... разные бандлы должны собираться по отдельности.

И зачем вам мешать его с хадупом тоже не понятно ....

Reply

_xacid_ October 25 2016, 22:39:51 UTC
ну я подозревал :)

ну к сожалению например spark (и насколько я знаю hadoop тоже) не умеют и не имеют какого либо стандартного формата бандлов подобных war/ear а вместо этого просто таки требуют чтобы "процесс" деплоился в виде одного банального jar (в котором должны быть все его депенденсы тоже) - то есть они не умеют загружать классы из вложеных jar-ов. возможно проблему эту можно решить каким либо кастомным класслоадером - но во первых стандартного такого класслоадера нет а все известные не подходят да и не такое уж это простое дело (есть масса проблем которые создают уже в свою очередь эти класслоадеры - например проблемы с нетранзитивной областью видимости)

кроме спарка опыта с гридами у меня нет - возможно в других продуктах с этим както лучше и более цивилизованно

но например в storm тоже прямым текстом в документации сказано что с osgi он не работает

да и судя по вашему вопросу это вообще тема очень плохо изученная даже самими авторами гридов :)

Reply

_xacid_ October 25 2016, 22:41:59 UTC
добавлю - возможно вам удастся поднять в гриде свой собственный инстанс всей инфраструктуры OSGI (включая его класслоадеры) - например spring modules :) если получится - поделитесь новостью

Reply


_xacid_ October 25 2016, 23:24:08 UTC
вот нашлась одна интересная ссылка

http://apacheignite.gridgain.org/docs/osgi-starting-inside-a-container

однако лично я к идее osgi+imdg отношусь очень скептически :) был в общем итоге отрицательный опыт osgi + apache coherence где почти все даже работало но вот именно динамический re-install модулей приводил к остановке системы изза системы зависимостей что по сути перечеркивало все усилия ... в конечном итоге osgi убрали :)

Reply

_xacid_ October 25 2016, 23:24:59 UTC
извиняюсь - oracle coherence

Reply


Leave a comment

Up