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.