Здравствуйте, 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 — что скажешь?