DeepEdit!

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

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

Использование многопоточного сервера

Сначала кратко повторим то, что говорилось в главе 2 о процессах многопоточного сервера. Обслуживание клиентских запросов при использовании MTS происходит следующим образом:
Запускается прослушивающий процесс Net8. Его конфигурация, хранимая в файле listener.ora, определяет, через какой порт (или порты) будут приниматься запросы на соединения.
Каждая база данных, которая должна стать доступной, запускается и регистрируется в прослушивающем процессе. Тем самым прослушивающий процесс узнает, какие службы и экземпляры доступны в данный момент.
После запуска базы данных запускаются диспетчеры (если в файле инициализации init.ora присутствуют параметры, относящиеся к MTS). Каждому диспетчеру назначен определенный адрес. При запуске диспетчер регистрирует свой адрес в прослушивающем процессе. Для этого диспетчер обращается к прослушивающему процессу либо по его стандартному адресу, либо по сетевому имени, указанному в файле init.ora. Сетевое имя прослушивающего процесса может разрешаться в более чем один адрес, если используются множественные прослушивающие процессы.
После того как диспетчеры зарегистрировались, прослушивающий процесс получает возможность перенаправлять им входящие запросы на соединения. Вспомните, что если базы данных запустятся до прослушивающего процесса, то они все равно успешно зарегистрируются, но использование MTS окажется невозможным и все соединения будут устанавливаться как выделенные.
Клиенты соединяются с прослушивающим процессом по его сетевому адресу. Прослушивающий процесс проверяет, возможно ли обслуживание запроса. Если запрос не может быть обслужен, сеанс не открывается. При положительном результате проверки прослушивающий процесс посылает клиенту сообщение с сетевым адресом наименее загруженного диспетчера.
Клиент разрывает соединение с прослушивающим процессом и устанавливает соединение с диспетчером, используя полученный адрес.
После того как соединение установлено, диспетчер передает прослушивающему процессу новое значение нагрузки. Это позволяет прослушивающему процессу балансировать входящие запросы на соединения между диспетчерами, работающими по одному протоколу.
Диспетчер помещает клиентский запрос в очередь запросов разделяемого сервера. Разделяемый сервер извлекает запрос из очереди и выполняет его обработку, после чего помещает результат в очередь ответов. Диспетчер извлекает результат из очереди ответов и возвращает его клиенту, пославшему запрос. После этого клиент отсоединяется от диспетчера.
9. После отсоединения клиента диспетчер остается доступным. Разделяемый сервер продолжает обработку других запросов из очереди. Если запрос находится в очереди слишком долго, могут быть запущены другие разделяемые серверы, максимальное число которых определено в файле init.ora. Таким образом, разные запросы одного клиента могут обрабатываться более чем одним разделяемым сервером.
1 Последовательность обслуживания клиентского запроса в среде многопоточного сервера схематически показана на рис. 11.1. Единственный не отраженный там этап — это отсоединение клиента.
 









jAntivirus