Re: Высоконагруженный Web
От: vsb Казахстан  
Дата: 12.02.15 20:55
Оценка: 1 (1)
Здравствуйте, garryg, Вы писали:

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


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

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

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

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

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


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

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

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

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

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

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


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

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

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