DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Объединение соединений и балансировка нагрузки

Каким образом прослушивающий процесс определяет, какому диспетчеру передать запрос клиента? Мерой загруженности каждого диспетчера служит число обслуживаемых им в данный момент соединений. Чтобы прослушивающий процесс мог следить за числом активных соединений, диспетчеры посылают ему уведомления о каждом установлении или разрыве соединения. Если в системе присутствует более одного диспетчера или более одного узла, то при перенаправлении клиентского запроса прослушивающий процесс принимает во внимание загруженность диспетчеров и количество соединений с каждым узлом. Этот процесс называется балансировкой нагрузки на уровне соединений (connection load balancing).
Но каким образом диспетчер одновременно обслуживает многих пользователей? Устанавливает ли он физическое соединение с базой данных для каждого клиента? Конечно, нет — это привело бы к такому же расходу ресурсов, как и при использовании выделенных серверов. Задача решается за счет объединения соединений (connection pooling). Если клиент бездействует в течение определенного времени, то специальный механизм тайм-аута освобождает транспортное соединение между этим клиентом и диспетчером, сохраняя логическое соединение. Освобожденное физическое соединение может использоваться диспетчером для обслуживания других входящих запросов. Когда клиент снова активизируется, диспетчер восстанавливает физическое соединение.
Объединение соединений и балансировка нагрузки на уровне соединений использоваться только на сервере и только при наличии установленного и сконфигурированного многопоточного сервера.
Подробнее обо всем этом будет рассказано в главе 11.
 









jAntivirus