Для меня кластеризация подразумевает ряд качеств системы, но она сводится к отказоустойчивости - сервер, сеть и постоянство данных. Существуют как слабо и тесно связанные системы, так и все ароматы между ними. В тесно связанных системах кластеризация выполняется на уровне, близком к аппаратному. Многие из старых систем кластеризации были более тесно связаны с приложениями, часто не признавая, что они были кластеризованы.
Слабосвязанные системы в наши дни являются нормой, поскольку большая степень отказоустойчивости достигается полностью на программном уровне. Системы в кластере используют только сетевое подключение, чтобы обеспечить отказоустойчивость. Обычно существуют специальные балансировщики нагрузки, которые направляют запросы на различные серверы кластера, используя для этого специализированное оборудование (иногда просто программное обеспечение).
Все приведенные вами примеры имеют своего рода «кластеризацию». Для описания подробностей о том, как каждая из архитектур выполняет это, потребуется ответ очень . Для меня различия в том, что получается «бесплатно», когда вы используете архитектуру, и в том, сколько работы вам нужно будет сделать, чтобы она работала оптимально.
То, как вы будете сочетать и сочетать упомянутые решения, зависит от того, как выглядит ваша архитектура и от ваших требований. У вас может быть магазин Terracotta для локального высокоскоростного хранения и облако для отдыха. Вы можете использовать Glassfish в качестве сервера приложений и использовать Terracotta в качестве слоя сохранения.
Вот мои мысли о технологиях, которые вы перечислили:
- Облачные приложения («Облако - это в основном кластер ...»)
Облачные приложения, с которыми проще всего работать, очевидно. Ваша единственная работа с точки зрения архитектуры - выбрать хорошего провайдера кластера. Конечно, Amazon и Google сделают это «правильно» с точки зрения отказоустойчивости и целостности данных. Есть много других игроков, которые, вероятно, делают это «достаточно хорошо» и дешевле. Вы программируете их API, которые имеют свои ограничения и расходы. Одна проблема с облачными приложениями состоит в том, что, скорее всего, будет очень трудно переключиться на новое. Опять же, у вас может быть [большая] часть вашего приложения, работающая на облачных серверах, и некоторые локальные системы для ваших требований с более высокой задержкой. Тенденция заключается в том, чтобы поместить большинство производственных функций в облако или, по крайней мере, запускать их до тех пор, пока вы не станете слишком большими или не нуждаетесь в некоторых услугах, которые они не могут предоставить.
- API кластеризации, такие как Terracotta
- Базы данных, такие как Oracle («кластеризованная база данных»)
- JBoss
Эти 3 системы предоставляют свои собственные возможности кластеризации. Может потребоваться, чтобы вы выполнили множество конфигураций машинного и сервисного уровней, чтобы система работала хорошо в производственной среде. Я слышал хорошие вещи о терракоте, которая является распределенным слоем постоянства. Я часто использовал Jgroups, который находится под Jboss, и это может быть сложно запустить правильно, но Jboss также может иметь некоторые хорошие конфигурации / документацию по умолчанию. Скорее всего, Oracle будет сложнее всего кластеризовать правильно. Администраторы баз данных зарабатывают много денег, настраивая конфигурации Oracle.
- Виртуальные машины (то есть «это устройство представляет собой кластер виртуальных машин ...»)
- Серверы приложений, такие как Tomcat, GlassFish
Это наиболее аморфные для определения с точки зрения кластеризации. Некоторые виртуальные машины считаются «кластеризованными» в том смысле, что они совместно используют сетевое оборудование и объединительные платы питания, но на самом деле не являются кластерами по сравнению с облачными вычислениями. Как уже упоминалось, есть некоторые кластерные аппаратные решения, которые очень индивидуальны и требуют много специальных знаний в предметной области, чтобы нормально работать.
У меня очень мало опыта работы с серверами приложений, такими как Tomcat и Glassfish.У нас есть собственное программное обеспечение для кластеризации поверх Jgroups и мы полностью запустили Jetty.Серверы приложений сами по себе не являются «кластеризованными», но пакеты, такие как Jboss и Terracotta, запускаются поверх них для обеспечения кластеризации, и у них есть внутренние проекты, для которых написано программное обеспечение для кластеризации.
Надеюсь, что это поможет.