Выбор Java Spring в качестве масштабируемой серверной инфраструктуры для большого сайта - PullRequest
5 голосов
/ 26 мая 2011

В настоящее время я сталкиваюсь с дилеммой относительно использования подходящей серверной инфраструктуры.

По сути, я хочу выбрать лучший фреймворк для создания большого веб-сайта, который будет обслуживать миллионы просмотров страниц. Сам веб-сайт будет сильно зависеть от базы данных и ajax, и поэтому его необходимо планировать для масштабируемости с самого начала.

Мои желания / потребности в подходящей серверной платформе следующие:

  • Поддержка языка высокого уровня на основе ОО с некоторой поддержкой метапрограммирования.
  • Правильная масштабируемость и балансировка нагрузки на уровне платформы.
  • Архитектура MVC.
  • Поддержка ORM или, по крайней мере, поддержка отображения уровня объекта.
  • Поддержка правильной маршрутизации (перезаписи URL).

Мой вопрос, наконец, заключается в том, является ли среда Java Spring подходящим кандидатом для управления большим веб-сайтом с учетом потребностей и потребностей, которые были упомянуты выше? Должен ли я придерживаться чего-то вроде Django или Rails?

Ответы [ 6 ]

13 голосов
/ 26 мая 2011

Весна - это хорошая основа.Однако само по себе это не решит ваших проблем с масштабируемостью (и никакой другой фреймворк не позволит).

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

Другими словами, подумайте об общем дизайне системы, а не о конкретной структуре кодирования.

2 голосов
/ 20 июня 2011

Другим хорошим выбором - и при этом основанным на стандартах - будет просто Java EE.EE 6 - хороший вариант, и JBoss AS 7 - который поддерживает EE 6 - добился больших успехов, мал, эффективен и молниеносен.И является бесплатным и открытым исходным кодом.

Java EE 6, как стандарт, имеет почти все, что вам нужно: CDI в качестве модели программирования, веб-интерфейс на основе JSF, JAX-RS для RESTful webсервисы, JPA2 для объектно-реляционного отображения, и, если вам это нужно, обмен сообщениями JMS и т. д. и т. д. Учебное пособие по Java EE 6 от Sun / Oracle - это, вероятно, то место, с которого вы можете начать знакомство с этой технологией.

И если вы решите использовать JBoss в качестве среды выполнения, у вас также будет отличный инструментарий - набор плагинов Eclipse, упрощающих создание приложений Java EE.

2 голосов
/ 26 мая 2011

Я бы предпочел следующее.

  1. Spring Framework (архитектура MVC и принцип DI).
  2. Hibernate Framework.
  3. Механизм кэширования с использованием memcache / Infinispan для снижения нагрузки на серверы.
  4. Горизонтальная балансировка нагрузки с использованием нескольких экземпляров сервера / дБ.
1 голос
/ 14 марта 2015

Веб-сервер: -Статическое содержимое для размещения на веб-сервере: http://nginx.org/en/. -Множество активов может быть размещено в сети доставки контента. Включение сжатия gzip @ веб-сервера и сервера приложений. GUI должен быть толстым клиентом и получать данные с сервера только после инициализации. -Снизить количество поездок на сервер. -Сжать содержимое (HTML, CSS, JS, вставлять изображения в сам HTML и т. Д.)

Сервер приложений: -Убедитесь, что вы используете методы объединения для всех задействованных ресурсов, таких как БД, обработчики сообщений и т. Д. -Хорошие методы кодирования, которые оптимизированы для сбора мусора. -Использование серверов приложений NBIO (JBoss Wildfly, Netty, Tomcat 8 и т. Д.)

База данных: -Кластеризация БД. Денормализация базы данных и поддержание мягкой целостности в коде, а не в БД. Проверка ссылочной целостности и ограничений требует огромных затрат при выполнении запросов (присоединение, вставка, обновления и т. Д.) -Вы можете выглядеть @ мигрируя в базы данных ACID NoSQL, например, Orient DB.

1 голос
/ 26 мая 2011

Практически любой фреймворк, если его правильно использовать, подойдет. Spring / Spring MVC - хороший выбор:

  • поддерживает пользовательские сопоставления URL
  • Поддержка ORM
  • Поддержка кэширования - это будет очень важно для вашей масштабируемости
0 голосов
/ 26 мая 2011

Я бы пошел на весну.

  • Простой
  • Поддерживает все необходимые вам функции + многое другое
  • Хорошая поддержка сообщества
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...