Я рассматриваю для разработки веб-приложения с Spring и OSGi. Кажется, что они совмещаются приятно. Каковы опции для кластеризации и выравнивания нагрузки такое приложение и каковы за и против каждого?
Ни OSGi, ни Spring не были созданы для решения таких проблем, как высокая доступность, кластеризация или балансировка нагрузки. Вы, конечно, можете построить кластерную систему с балансировкой нагрузки, используя Spring и OSGi, но вам, вероятно, понадобится что-то еще, например, способ обнаружения и передачи информации об отказах узлов и уровнях нагрузки.
Поскольку вы создаете веб-приложение, скорее всего, вы будете использовать один из многочисленных серверов приложений. Хорошие продукты AS обеспечивают кластеризацию. Некоторые из них также обеспечивают балансировку нагрузки. Вы также можете добиться балансировки нагрузки с помощью совершенно независимой установки, используя Apache, например, для фронтальных серверов приложений.
Если вы действительно хотите создать собственное решение, я видел, как JGroups используется в различных продуктах для обеспечения необходимой инфраструктуры для создания кластеризации и/или балансировки нагрузки. Некоторые продукты распределенного кэширования in-memory используют JGroups, например.
Говоря о распределенных кэшах, такие продукты, как Ehcache, могут помочь в решении проблем масштабирования и балансировки нагрузки.