Как использовать OSGI для достижения нулевого времени простоя? - PullRequest
2 голосов
/ 06 ноября 2011

Я думаю об использовании servicemix для моего производственного сервера. Интересно, если я использую сервлеты OSGI, это означает, что я могу развернуть новую версию своего приложения без простоя? Если нет, есть ли способ добиться нулевого простоя сервера? спасибо.

Ответы [ 4 ]

4 голосов
/ 07 ноября 2011

Динамические службы OSGi могут помочь вам обновить сервер без перезагрузки. Это, однако, означает, что ваше приложение находится на вершине OSGi. Динамического приобретения сервиса недостаточно. Приложение должно сохранять свое состояние при достижении динамизма. См. Модель зрелости OSGi по чартерам Грэма. [1]

В реальном мире нулевое время простоя достигается путем репликации / кластеризации. Пример установки подобен, Два сервера serviceMix, основанные на балансировщике нагрузки. Когда мы обновляем один сервер, вы указываете балансировщик нагрузки на другой, и наоборот. просто пример.

[1] http://www.infoq.com/news/2011/09/mmm-osgi

1 голос
/ 16 ноября 2011

Хотя вы можете развернуть несколько версий пакета OSGi в одном и том же контейнере, это действительно не поможет, поскольку вашим сервлетам нужно будет привязываться к разным URL-адресам, чтобы избежать конфликтов портов. Затем клиенты должны знать, чтобы переключиться на этот новый URL. Это можно абстрагировать, динамически обновляя конфигурацию маршрутизации на прокси-сервере и т. Д. В любом случае, это усложняет развертывание, а ваша архитектура все еще ограничена другими способами (HA и т. Д.).

Вместо этого лучшим вариантом будет использование кластера экземпляров Servicemix (и балансировщик нагрузки) на разных машинах. Затем выполните стандартную остановку / повторное развертывание / запуск на каждом сервере, чтобы выполнить обновление. Это также учитывает потребности в высокой доступности и горизонтальной масштабируемости и т. Д.

1 голос
/ 08 ноября 2011

OSGi может сократить или даже устранить запланированное время простоя на одном сервере. Он может быть равен нулю (или близок к нулю, если не имеет значения), если вы можете развернуть новую версию перед ее развертыванием.

Однако проблема, о которой говорили другие комментаторы, заключается в незапланированном простое: OSGi не может спасти вас от аппаратного сбоя на сервере.

Для обеспечения устойчивости вы должны иметь более одного сервера, например кластер. Если у вас есть это, на самом деле не имеет большого значения, сколько времени потребуется для обновления программного обеспечения на одном конкретном сервере (если это не часов или дней .. .).

1 голос
/ 06 ноября 2011

Нулевое время простоя невозможно, независимо от того, что вы используете. В реальном мире слишком много внешних факторов. OSGi помогает снизить время простоя в сценариях обновления, позволяя одновременно запускать разные версии службы, позволяя соединениям использовать более новую службу, а затем, после последнего активного соединения, старый сервлет будет отключен.

...