ru_java


ru.java

все о языке программирования java


Previous Entry Share Next Entry
OSGI + IMDG = ?
hedin wrote in ru_java
Вопрос к сообществу.

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

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

  • 1
возможно не совсем релевантно (опыт не очень большой - только со spark-ом) но с OSGI проблемы начинаются еще на этапе ассемблирования так называемого uber-jar (то есть перепаковки всех необходимых библиотек в один общий дистрибутив для деплоймента): все osgi-модули содержат определенные одноименные (и это собственно проблема) файлы с метаданными и вот именно процесс мержа портит эти файлы метаданных

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

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

Хммм неее OSGi это не про то как все собрать в один пакет ... разные бандлы должны собираться по отдельности.

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

ну я подозревал :)

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

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

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

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

добавлю - возможно вам удастся поднять в гриде свой собственный инстанс всей инфраструктуры OSGI (включая его класслоадеры) - например spring modules :) если получится - поделитесь новостью

вот еще нашлось только что :) Apache Karaf умеет "из коробки" работать с Hazelcast

получается вроде бы как раз OSGI + IMDG :)

http://karaf.apache.org/manual/cellar/latest-4/
http://karaf.apache.org/manual/cellar/latest-4/#_core_runtime_and_hazelcast

надеюсь информация будет полезна :)
сам удовольствия пока не имел :(

вот нашлась одна интересная ссылка

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

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

извиняюсь - oracle coherence

  • 1
?

Log in