Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кластер из web серверов, кластер для сайта 
:(
    Опции темы
Atum
Дата 9.12.2012, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Добрый вечер !

очень хочется найти информацию о том как правильно спроектировать высоконагруженный сайт
Сайт-торговую площадку ! на JAVA .

 продажа товаров в интернете ! если у кого есть такой опыт

 или ссылки на то как устроены подобные сайты буду признателен если вы поделитесь. (ebay , РЖД , ozon и др.)
 
как вариант что взять для сайта - web контейнер tomcat - и создать из 3х инстанцев кластер или взять jboss или glassfish и стоить кластер на них ?
Будет ли оправдано использовать hibernate  - или это медленно ?

какую базу использовать и как рассчитать ее нагрузку ? коннектов в секунду?

где можно почитать такую теорию ? с показателями нагрузок и пр. пр...


как вариант подойдет информация о том как устроены торговые площадки типа forex -  с огромной нагрузкой на сервера .

И еще один вопрос - как технически организовать следующее - если пользователь залогинен и у него есть сессия - как можно перебросить его с одного web сервера  на другой -  без потери сессии и незаметно для него ? 

Это сообщение отредактировал(а) Atum - 9.12.2012, 20:23
PM MAIL   Вверх
danilych
Дата 9.12.2012, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



Сразу хочу сказать, что для высоконагруженных сайтов используются кэши, чтобы не лазить в БД. Потому как БД самое узкое место в системе. Да и масштабировать ее на несколько серверов не легко. Для решения этой проблемы придумали NoSQL базы типа MongoDB и др.

Для разработки порекомендовал бы использовать Ioc контейнер, например, Spring - оч. удобная штука + Spring MVC. Hibernate тоже бояться не стоит, работает довольно быстро (использую на своем сайте эти технологии pokerist.by) Часто для высоконагруженных систем испльзуют распределенный кэш. Для java в этом смысле бесплатных решений оч. не много. Почитайте Terracotta bigMemory Go - бесплатная штука, но кэш только до 32 гигов, дальше платно. Также на хаброхабре посмотрите блог сайта одноклассники - они java используют и описывают проблемы и их решения
PM MAIL   Вверх
Atum
Дата 10.12.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Цитата(danilych @ 9.12.2012,  22:30)
Сразу хочу сказать, что для высоконагруженных сайтов используются кэши, чтобы не лазить в БД. Потому как БД самое узкое место в системе. Да и масштабировать ее на несколько серверов не легко. Для решения этой проблемы придумали NoSQL базы типа MongoDB и др.

Для разработки порекомендовал бы использовать Ioc контейнер, например, Spring - оч. удобная штука + Spring MVC. Hibernate тоже бояться не стоит, работает довольно быстро (использую на своем сайте эти технологии pokerist.by) Часто для высоконагруженных систем испльзуют распределенный кэш. Для java в этом смысле бесплатных решений оч. не много. Почитайте Terracotta bigMemory Go - бесплатная штука, но кэш только до 32 гигов, дальше платно. Также на хаброхабре посмотрите блог сайта одноклассники - они java используют и описывают проблемы и их решения

Спасибо за наводку и советы ! 

Обязательно посмотрю Terracotta bigMemory Go.

MongoDB  - пока не вижу смысла использовать.

Если в качестве базы   использовать Postgresql - то там огромные возможности для  линейного масштабирования вплоть до 64х процессоров.

Есть такие штуки как PL/Proxy и PgBouncer -  кэш имеет смысл использовать когда этот ресурс базы уже задействован и проведен  полный ее тюнинг...

Спасибо за совет по поводу Spring MVC + Hibernate =  если это действительно быстро - то это отличное решение. 

PM MAIL   Вверх
danilych
Дата 11.12.2012, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



Я думаю, что прежде чем масштабировать базу, лучше в сторону кеша посмотреть - данные из кэша вытягиваются на порядок быстрее, чем из БД. Да и всякие часто используемые объекты лучше в кеше держать. Главная страница так 100% должна быть в кэше. А уже когда и этого будет мало - тогда думать о горизонтальном масштабировании - первое дело разделить по разным серверам базу, сервер приложений и web сервер и т.д.
PM MAIL   Вверх
Atum
Дата 11.12.2012, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Цитата(danilych @ 11.12.2012,  08:45)
Я думаю, что прежде чем масштабировать базу, лучше в сторону кеша посмотреть - данные из кэша вытягиваются на порядок быстрее, чем из БД. Да и всякие часто используемые объекты лучше в кеше держать. Главная страница так 100% должна быть в кэше. А уже когда и этого будет мало - тогда думать о горизонтальном масштабировании - первое дело разделить по разным серверам базу, сервер приложений и web сервер и т.д.

Да , всё разнесено на разные машины .

Все таки считаете что кэш нужен ?!  тогда как насчет ehcache  ? 

ПО схеме - nginx - web cache (Oracle) - tomcat (spring+hibernate)+postgresql

возможно ли переложить функции web cache - на nginx ?  или все таки  лучше иметь  web cache ?
PM MAIL   Вверх
4epT
Дата 11.12.2012, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



У нас для кеша используется Redis. Работает очень быстро. Проблем ни разу не было ... В java можно использовать фреймверк Jedis для работы с Redis, так же можно использовать Spring data. В качестве веб сервера, я бы выбирал что то легкое, например tomcat ... в большинстве случаев его хватает. В качестве БД можно делать связку NoSQL и SQL решений, на NoSQL переносить одну часть задач (если такие есть), на sql другие. Spring MVC поддерживаю, хорошая штука. ну и естественно nginx будет в качестве балансировщика.
PM MAIL   Вверх
danilych
Дата 11.12.2012, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



Цитата(Atum @ 11.12.2012,  08:52)
Цитата(danilych @ 11.12.2012,  08:45)
Я думаю, что прежде чем масштабировать базу, лучше в сторону кеша посмотреть - данные из кэша вытягиваются на порядок быстрее, чем из БД. Да и всякие часто используемые объекты лучше в кеше держать. Главная страница так 100% должна быть в кэше. А уже когда и этого будет мало - тогда думать о горизонтальном масштабировании - первое дело разделить по разным серверам базу, сервер приложений и web сервер и т.д.

Да , всё разнесено на разные машины .

Все таки считаете что кэш нужен ?!  тогда как насчет ehcache  ? 

ПО схеме - nginx - web cache (Oracle) - tomcat (spring+hibernate)+postgresql

возможно ли переложить функции web cache - на nginx ?  или все таки  лучше иметь  web cache ?

У меня nginx используется как front-end, а так же используется для отдачи статики - картинки, *.js, *.css файлы. Можно конечно на nginx настроить кеширование страниц, но если на сайте есть регистрация пользователей, то на страницах как правило, показывается его имя, так же для пользователя с правами администратора необходимо отображать какие-то дополнительные блоки. Если использовать кэш на уровне nginx, то для всех страница будет одинакова.
Поэтому я за кэш на уровне сервера приложений.

Ehcache отличное решение пока размер кэша не будет превышать 32 Гб, т.к. далее все становится платным (BigData Go - бесплатен, но ограничен 32 гб, BigData Max - распределенный, но платный). Поэтому, на мой взгляд, если 32 гб будет не достаточно, то лучше действительно посмотреть в сторону reddis или mongoDb.
PM MAIL   Вверх
Atum
Дата 12.12.2012, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 3.10.2008

Репутация: нет
Всего: нет



Цитата(danilych @ 11.12.2012,  16:25)
 Если использовать кэш на уровне nginx, то для всех страница будет одинакова.
Поэтому я за кэш на уровне сервера приложений.


Может тогда как то исхитриться и собрать страницу с  именем   пользователя через шаблоны  velocity  и SSI ? и, как вариант, не кешировать этот кусок страницы.

или брать имя из куков после авторизации - предварительно их туда поместить.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.