Re[2]: Высоконагруженный Web
От: garryg  
Дата: 12.02.15 21:47
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, garryg, Вы писали:


G>>планируем в компании разработку сайта и одним из требования высокая нагрузка (посещаемость 30к+ пользователей в пике 50к — 70к).


vsb>А что означает эта цифра? Надо исходить из числа запросов. На новостной сайт посетитель может делать запрос раз в 5 минут. В каком-нибудь онлайн-покере раз в секунду, а то и чаще.


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

G>>вопрос платформы сразу был определен — Java (Spring Boot, Spring MVC, JPA+hibernate, ehcache), AngularJs

G>>с базой данных так же более менее ясно (MySQL or Postgress), вот только реплицировать ли её...

vsb>Ну на чтение реплицировать обычно несложно. Вот если упрётесь в предел по записи, будет тяжело. Но у вас же JPA + ehcache, зачем вам масштабировать базу? Настройте грамотно кеш и будет счастье.

Это да, но как быть с транзакционностью в такой репликации!?

G>>Но что-то мне подсказывает такой нагрузки держать не будет сайт (хоть сайт и простой по функциональности, регистрация/авторизация/просмотр статей, отправка/прием сообщений)...


vsb>Вообще говоря современный сервер средней руки (пара современных Xeon-ов по 8 ядер, 64 GB RAM, SSD-raid) способен выдержать на таком функционале, думаю, порядка 10000 запросов в секунду, если реализация будет хорошая. Этого хватит, даже если весь мир ломанётся читать ваш сайт. А кеширование от cloudflare даст ещё больший запас по прочности.


боюсь как бы GC не стал затыкаться при такой апликухи на серваке...

G>>И почитав статьи, стало быть люди пишут про некоторые архитектуры, которые используют несколько инстанцев на которые перенаправляет лоад-балансер.

G>>Но толи статьи плохие попадались, либо это все так неоднозначно, ни каких конкретных архитектур ненашел, одна "вода".

G>>1. Может кто подскажет матерьял для изучения или хорошую статью!?

G>>2. Совсем не ясно какие бывают лоадбалансеры?, как настраиваются? (попадался только ngnix, но о настрайках ничего конкретного)
G>>3. И что с Базой Данных, реплицировать её ли, если да, то как с ней после работать...
G>>4. И с какими неожиданными моментами можно сталкнуться (чего ожидать)?

G>>Вообщем есть пробелы в понимании выше описанных вещей, если кто сталкивался буду очень рад помощи — наставления на путь истенный.


vsb>Ставите кучку серверов с томкатом в каждом. Ставите один сервер с nginx-ом, настраиваете там распределение запросов по серверам. Если в сессии ничего не хранить кроме аутентификационных данных, то сессию можно не реплицировать и на nginx-е настроить, чтобы он по JSESSIONID выбирал бэкэнд, на который надо направлять запрос. Все мануалы по настройке есть в сети.


вот мысли были об этом
на практике не делал такого?

vsb>Базу реплицировать легко на чтение (в одну базу идёт запись, данные от неё раскидываются по read-only копиям). На запись традиционные БД реплицировать прозрачно для приложения сложно. Обычно распределяют данные по какому-нибудь естественному признаку (например по стране) и раскладывают в разные базы. Но это достаточно сложная логика.


vsb>Моё имхо, не нужен вам кластер. Хороший физический сервер, без всяких виртуалок ставите туда базу, туда же томкат (чтобы байты по сети не гонять безтолку) и всё будет быстро работать.


томкат это хорошо, но в качестве контейнера думал о GlassFish либо WildFly — что скажешь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.