Разгоняем сервис до 1M RPS: Java/Spring Boot под нагрузкой. Создаем воспроизводимую базовую реализацию и наблюдаемость.

Коротко: во второй части цикла мы не разгоняем сервис и не пытаемся получить красивую цифру RPS. Мы собираем воспроизводимый базовый стенд, на котором любой следующий результат можно объяснить: фиксируем API и набор данных, делаем три явно переключаемых пути чтения, добавляем метрики, структурированные логи, трассировки, Grafana и k6, а затем проверяем, что для каждого запроса можем … —Читать далее—

Loading

Hikari CP глазами разработчика

Оглавление Введение: зачем нужен пул соединений? Для высоконагруженных серверных приложений взаимодействие с базой данных (БД) является одной из самых “тяжелых” операций. Установление нового подключения к БД – дорогостоящая операция: она включает сетевые взаимодействия, аутентификацию, выделение памяти и т.д. Если для каждого запроса к БД открывать новое соединение, приложение быстро столкнется с огромными накладными расходами: каждый … —Читать далее—

Loading

Что backend-разработчик должен знать про PostgreSQL

Оглавление Термины ACID: PostgreSQL гарантирует атомарность, консистентность, изолированность, долговечность транзакций. Эти свойства достигаются сочетанием MVCC, журнала WAL и механизмов блокировок. MVCC (Multi-Version Concurrency Control): многоверсионный контроль параллелизма. База хранит несколько версий строки при обновлениях, позволяя читателям работать со стабильным снимком данных без блокирования пишущих транзакций, и наоборот. Каждая транзакция оперирует в собственной “видимости” согласно своему … —Читать далее—

Loading

Блокировка строк в базах данных: подробное руководство для backend-разработчика по безопасной конкурентности

Оглавление Введение В современном приложении несколько пользователей или потоков могут одновременно обращаться к одним и тем же данным в базе данных. Такой конкурентный доступ (concurrent access) без должной координации может приводить к разного рода аномалиям и ошибкам. Например, возможны ситуации: Чтобы обеспечить целостность данных и избежать подобных проблем, используются механизмы блокировок. Блокировки гарантируют, что критические … —Читать далее—

Loading

Нормализация баз данных глазами разработчика

Оглавление Введение Нормализация базы данных – это процесс организации данных в реляционной базе с целью устранения избыточности и аномалий в данных. Проще говоря, мы структурируем таблицы и связи между ними так, чтобы каждая “факт” хранился в одном месте. Это снижает риск несогласованности данных, облегчает их обновление и экономит место. В этой статье мы разберем нормальные … —Читать далее—

Loading