![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Добрый вечер !
очень хочется найти информацию о том как правильно спроектировать высоконагруженный сайт Сайт-торговую площадку ! на JAVA . продажа товаров в интернете ! если у кого есть такой опыт или ссылки на то как устроены подобные сайты буду признателен если вы поделитесь. (ebay , РЖД , ozon и др.) как вариант что взять для сайта - web контейнер tomcat - и создать из 3х инстанцев кластер или взять jboss или glassfish и стоить кластер на них ? Будет ли оправдано использовать hibernate - или это медленно ? какую базу использовать и как рассчитать ее нагрузку ? коннектов в секунду? где можно почитать такую теорию ? с показателями нагрузок и пр. пр... как вариант подойдет информация о том как устроены торговые площадки типа forex - с огромной нагрузкой на сервера . И еще один вопрос - как технически организовать следующее - если пользователь залогинен и у него есть сессия - как можно перебросить его с одного web сервера на другой - без потери сессии и незаметно для него ? Это сообщение отредактировал(а) Atum - 9.12.2012, 20:23 |
|||
|
||||
| danilych |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 2.2.2011 Репутация: 3 Всего: 3 |
Сразу хочу сказать, что для высоконагруженных сайтов используются кэши, чтобы не лазить в БД. Потому как БД самое узкое место в системе. Да и масштабировать ее на несколько серверов не легко. Для решения этой проблемы придумали NoSQL базы типа MongoDB и др.
Для разработки порекомендовал бы использовать Ioc контейнер, например, Spring - оч. удобная штука + Spring MVC. Hibernate тоже бояться не стоит, работает довольно быстро (использую на своем сайте эти технологии pokerist.by) Часто для высоконагруженных систем испльзуют распределенный кэш. Для java в этом смысле бесплатных решений оч. не много. Почитайте Terracotta bigMemory Go - бесплатная штука, но кэш только до 32 гигов, дальше платно. Также на хаброхабре посмотрите блог сайта одноклассники - они java используют и описывают проблемы и их решения |
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Спасибо за наводку и советы ! Обязательно посмотрю Terracotta bigMemory Go. MongoDB - пока не вижу смысла использовать. Если в качестве базы использовать Postgresql - то там огромные возможности для линейного масштабирования вплоть до 64х процессоров. Есть такие штуки как PL/Proxy и PgBouncer - кэш имеет смысл использовать когда этот ресурс базы уже задействован и проведен полный ее тюнинг... Спасибо за совет по поводу Spring MVC + Hibernate = если это действительно быстро - то это отличное решение. |
|||
|
||||
| danilych |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 2.2.2011 Репутация: 3 Всего: 3 |
Я думаю, что прежде чем масштабировать базу, лучше в сторону кеша посмотреть - данные из кэша вытягиваются на порядок быстрее, чем из БД. Да и всякие часто используемые объекты лучше в кеше держать. Главная страница так 100% должна быть в кэше. А уже когда и этого будет мало - тогда думать о горизонтальном масштабировании - первое дело разделить по разным серверам базу, сервер приложений и web сервер и т.д.
|
|||
|
||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Да , всё разнесено на разные машины . Все таки считаете что кэш нужен ?! тогда как насчет ehcache ? ПО схеме - nginx - web cache (Oracle) - tomcat (spring+hibernate)+postgresql возможно ли переложить функции web cache - на nginx ? или все таки лучше иметь web cache ? |
|||
|
||||
| 4epT |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
У нас для кеша используется Redis. Работает очень быстро. Проблем ни разу не было ... В java можно использовать фреймверк Jedis для работы с Redis, так же можно использовать Spring data. В качестве веб сервера, я бы выбирал что то легкое, например tomcat ... в большинстве случаев его хватает. В качестве БД можно делать связку NoSQL и SQL решений, на NoSQL переносить одну часть задач (если такие есть), на sql другие. Spring MVC поддерживаю, хорошая штука. ну и естественно nginx будет в качестве балансировщика.
|
|||
|
||||
| danilych |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 2.2.2011 Репутация: 3 Всего: 3 |
У меня nginx используется как front-end, а так же используется для отдачи статики - картинки, *.js, *.css файлы. Можно конечно на nginx настроить кеширование страниц, но если на сайте есть регистрация пользователей, то на страницах как правило, показывается его имя, так же для пользователя с правами администратора необходимо отображать какие-то дополнительные блоки. Если использовать кэш на уровне nginx, то для всех страница будет одинакова. Поэтому я за кэш на уровне сервера приложений. Ehcache отличное решение пока размер кэша не будет превышать 32 Гб, т.к. далее все становится платным (BigData Go - бесплатен, но ограничен 32 гб, BigData Max - распределенный, но платный). Поэтому, на мой взгляд, если 32 гб будет не достаточно, то лучше действительно посмотреть в сторону reddis или mongoDb. |
||||
|
|||||
| Atum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 3.10.2008 Репутация: нет Всего: нет |
Может тогда как то исхитриться и собрать страницу с именем пользователя через шаблоны velocity и SSI ? и, как вариант, не кешировать этот кусок страницы. или брать имя из куков после авторизации - предварительно их туда поместить. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |