Разработка масштабируемого приложения - PullRequest
1 голос
/ 11 июля 2011

Запуск нового проекта электронной коммерции, который в основном состоит из двух основных проектов: основного приложения и веб-клиента.

  1. Базовое приложение будет выступать в качестве поставщика услуг, серверной части веб-клиента (или других клиентов), предоставляя все свои функции в веб-службе REST-ful / JSON.

  2. Веб-клиент будет выступать в качестве внешнего интерфейса и потребителя службы для основного приложения.

Оба проекта в основном основаны на: Spring, Apache CXF, Maven, а также Tomcat или Jetty. Git as VCS. CouchDB как БД. Также распределенная система кэширования, такая как Memcached.

Принцип заключается в том, чтобы проект (как основной, так и веб-интерфейс) был таким, чтобы его можно было масштабировать и распространять на несколько узлов в Интернете.

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

Вопросы:

  1. Исходя из описанного выше стека технологий, что может отсутствовать или стоит добавить?
  2. Какие-нибудь книги, материалы или рекомендации по конкретным случаям, которые касаются предмета?

Ответы [ 4 ]

0 голосов
/ 22 августа 2011

Вы не упомянули производительность и нагрузочное тестирование - вы должны также измерить производительность вашего приложения и масштабируемость:

  • Как отдельный узел справляется с высокой нагрузкой?
  • Какую производительность вы получаете, добавляя один узел?

Не ожидайте и не угадывайте что-либо и начинайте как можно скорее - это само по себе спасет ваше состояние.

Для решения на основе REST посмотрите Apache httpd и mod_jk для балансировки нагрузки .

0 голосов
/ 12 июля 2011

Взгляните на CQRS принципы.Хотя отличная масштабируемость является лишь побочным эффектом применения CQRS, она идеально подходит для облачных вычислений , основной целью которых является обеспечение эластичной масштабируемости. Вот потрясающее видео из класса Грега Янга.

PS.Несмотря на то, что большинство материалов основано на стеке .NET, эти принципы являются кроссплатформенными.

0 голосов
/ 13 июля 2011

@ Ellead: Пройдите через кластеризацию Tomcat (репликация сеанса): http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

Просто позаботьтесь об одноэлементных объектах весной (имейте в виду, что синглтон на JVM)

0 голосов
/ 11 июля 2011

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

Высокопроизводительные веб-сайты имеет несколько замечательных вещей.Также проверьте Squid для HTTP-кэширования.

...