Рубрики
Без рубрики

Гибкий пул, пул реактивных соединений

Автор оригинала: Vlad Mihalcea.

Когда я начал работать над корпоративными проектами, мы использовали J2EE, и источник данных для объединения был предоставлен сервером приложений.

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

Наши последние архитектуры перешли от масштабирования к масштабированию. Таким образом, вместо одной большой машины, на которой размещаются все наши корпоративные службы, теперь у нас есть распределенная сеть обслуживания.

Это имеет множество преимуществ:

  • Каждая JVM настраивается в соответствии с внутренним поведением размещенной службы. Веб-узлы используют параллельный сборщик низкой паузы , в то время как пакетные службы используют сборщик пропускной способности
  • Развертывание пакетной службы не влияет на передние службы
  • Если одна служба выйдет из строя, это не повлияет на остальные

Но все эти службы в конечном итоге вызывают базу данных, и это всегда делается через подключение к базе данных. Сервер базы данных может предлагать только ограниченное количество одновременных подключений, поэтому подготовка подключений является обязательной.

Текущие решения для объединения подключений предлагают ограниченную поддержку мониторинга и отработки отказа. Это то, с чем мы боролись в последнее время, и именно поэтому я решил создать Flexipool .

Пул Flexi – это datasourceproxy, предлагающий лучший мониторинг и отказоустойчивость для следующих пулов соединений:

Мы пришли к выводу, что определение размеров пулов соединений не является предварительным проектным решением. В крупных корпоративных системах необходима адаптивность, и мониторинг-это первый шаг к принятию правильных решений.

Предварительный мониторинг

гистограмма параллельных подключений Это указывает, сколько соединений используется одновременно.
гистограмма одновременных Запросов на подключение Это указывает, сколько соединений запрашивается одновременно.
подключение Получить Миллис Временная гистограмма интервала получения соединения с целевым источником данных.
Подключение-миллис Время аренды-это продолжительность между моментом приобретения соединения и моментом его освобождения.
Гистограмма максимального размера Гистограмма размера целевого пула.
общее Количество Подключений В Миллисекундах Временная гистограмма общего интервала получения соединения.
Гистограмма размера переполненного бассейна Гистограмма переполнения бассейна.
гистограмма повторных попыток Гистограмма числа повторных попыток.

Стратегии отработки отказа

Когда используются все объединенные соединения, запрос на получение нового соединения будет ждать ограниченное количество времени, прежде чем отказаться. Это предотвращает перегрузку системы, но чтобы избежать отклонения запросов на подключение, необходимо правильно настроить размер пула подключений. Вам также придется учитывать скачки трафика и учитывать все другие сервисы, конкурирующие за ограниченное количество подключений к базе данных. Отслеживаемые данные могут дать вам лучшее представление об использовании соединений, поэтому вы будете лучше подготовлены при выборе правильного размера пула.

Пул Flexi был разработан таким образом, чтобы быть реактивным, поэтому он может лучше адаптироваться к скачкам трафика. Для этого он предлагает настраиваемый механизм стратегии отработки отказа.

Стратегия-это механизмы обеспечения безопасности получения соединения, средство, которое вызывается, когда соединение не было успешно извлечено из целевого пула соединений.

Пул Flexi поставляется со следующими стратегиями по умолчанию

  • Увеличение Пула По Тайм-Ауту Эта стратегия увеличит максимальный размер целевого пула соединений по истечении времени ожидания получения соединения. Пул соединений имеет минимальный размер и по требованию может увеличиться до максимального размера . Переполнение представляет собой буфер дополнительных соединений, позволяющий пулу соединений расти за пределы его начального максимального размера . Всякий раз, когда обнаруживается тайм-аут получения соединения, текущий запрос не завершится ошибкой, если пул не вырос до максимального размера переполнения .
  • Повторные попытки Эта стратегия полезна для тех пулов соединений, в которых отсутствует механизм повторных попыток получения соединения

В моей следующей статье будет показано, как Flexipool может помочь вам найти правильный размер пула.