Масштабируемый API-сервер с Restlet? - PullRequest
3 голосов
/ 23 сентября 2010

Мы планируем новый сервер API, который будет в основном обслуживать ответы JSON с интерфейсом RESTful.Мы обеспокоены масштабом и доступностью.Мы на правильном пути, используя Restlet с Jetty (или другим разъемом)?

Один вопрос, который мы задаем, есть ли в мире Java что-то вроде Phusion Passenger?Например, готовое решение для поддержания работоспособности экземпляров сервера?

Ответы [ 2 ]

9 голосов
/ 06 октября 2010

Ваш вопрос на самом деле не столько о Restlet, сколько о разработке сайта с высокой масштабируемостью и высокой доступностью.Мы находим, что Restlet очень хорошо масштабируется с правильной архитектурой системы.

Вообще говоря, вы хотите:

  • Запустить кластер машин веб-сервера, а нетолько один.
  • Убедитесь, что ваше приложение не имеет общего доступа , т. е. состояние приложения не сохраняется на ваших веб-серверах, если это вообще возможно.
  • Используйте балансировщик нагрузки для распространения запросов на наименее загруженные веб-серверы.
  • Убедитесь, что ваши ответы JSON кешируются .
  • Добавьте HTTP кэш обратного прокси-сервера (например, Squid) на границе вашего сайта.По мере разогрева кешей между вашим сайтом и вашими клиентами большая часть входящего трафика будет обрабатываться ими, а не вашими веб-серверами.
  • Пишите ваш код клиента в повторных запросах , которые не удаются,Таким образом, если веб-сервер умирает, следующий запрос будет сбалансирован по нагрузке на уцелевшую машину.
  • И, конечно, вы хотите автоматизировать свой сайт, чтобы вызвать сбой веб-серверов и т. Д. (Это часть, котораявозможно, лучше спросить об этом на ServerFault.com.)

REST - это архитектурный стиль, который идеально подходит для этого типа настройки.

Как упоминает @matt, вам нужно следить за необработаннымпроизводительности, но, как правило, вашей первой заботой должно быть создание масштабируемой архитектуры высокой доступности.

Вот несколько хороших источников:

и особенно:

Overstock.com управляет масштабным веб-сайтом и интенсивно использует Restlet длясделай это.

2 голосов
/ 23 сентября 2010

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

...