Как правильно сделать приложение High load Java? - PullRequest
0 голосов
/ 18 марта 2020

Я работаю над веб-проектом, где я использую Spring, mysql, Hibernate и docker. Нет проблем сделать дизайн db, все работает.

Как проверить правильность дизайна БД?

Как предвидеть высокую нагрузку на проект?

Я знаю о нагрузочных испытаниях Гатлинга. У меня есть только производственная среда. Как управлять производственной средой с помощью таких тестов?

А как насчет гибернации, есть ли некоторая перегрузка db?

Не могли бы вы посоветовать проверенные книги, о подходах с высокой нагрузкой для производства?

1 Ответ

2 голосов
/ 18 марта 2020

1. Мы не можем предвидеть высокую нагрузку проекта . Мы можем отслеживать нашу систему и прогнозировать будущую загрузку на основе исторической нагрузки.

  • Spring Boot Actuator: для получения данных метрик
  • Prometheus: для сбора метрик вашего приложения
  • Графана: для визуализации данных ваших метрик.

Чтобы предотвратить взлом системы sh из-за высокой нагрузки или DDOS, вы можете использовать Guava RateLimiter.

2 , Для баз данных вам необходимо отслеживать медленные запросы, чтобы знать, правильна ли ваша структура БД. Если запрос медленный, вы можете использовать ключевое слово объяснения, чтобы проверить, правильно ли используется индекс вашего запроса.

Включить ведение журнала запросов в таблицу general_log:

mysql> SET GLOBAL general_log = 'ON';
mysql> SET global log_output = 'table';

Затем запросите медленные запросы в таблице:

SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 10

3. Чтобы сделать ваше приложение высоконагруженным, есть 2 варианта:

  • В большинстве случаев узким местом является база данных, вы можете разделить базу данных на несколько баз данных, например таблицы, связанные с пользователями. будет находиться в отдельной базе данных, таблицы, относящиеся к порядку, будут находиться в другой базе данных (https://microservices.io/patterns/data/database-per-service.html).
  • Для системы с очень высокой нагрузкой вы должны спроектировать свою систему в облаке с помощью Google Двигатель Kubernetes или Amazon EKS.
...