ИНТЕЛЛЕКТУАЛЬНАЯ МАРШРУТИЗАЦИЯ
INTELLIGENT ROUTING

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Во многих типах клиент-серверных архитектур, в отношении запроса, сделанного посредством клиента, осуществляется определенная форма маршрутизации до того, как он достигнет сервера, который выполняет запрос. Этот тип маршрутизации может осуществляться вследствие многих причин, таких как распределение нагрузки между группами серверных компьютеров, обеспечение более высокого качества обслуживания для определенных категорий клиентов, и другого.
В некоторых случаях, сервер, который осуществляет маршрутизацию, и сервер, который выполняет клиентский запрос, является одним и тем же физическим сервером. В этих случаях, сервер, как правило, осуществляет маршрутизацию клиентского запроса по сети и обратно к тому же самому физическому серверу для обработки. Этот тип маршрутизации может быть неэффективным.
Раскрытие, выполненное в настоящем документе, представляется с учетом этих и других соображений.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В настоящем документе описаны технологии для интеллектуальной маршрутизации. В частности, в результате реализации концепций и представленных в настоящем документе технологий, если выполняющий сервер и маршрутизатор находятся в одной и той же физической вычислительной системе, оптимизированная транспортировка используется для переноса клиентского запроса от маршрутизатора на сервер и возвращения ответа. Например, оптимизированная транспортировка может являться транспортировкой только в пределах одного компьютера, которая не требует маршрутизации клиентского запроса по сети. Скорее, транспортировка только в пределах одного компьютера обеспечивает оптимизированный механизм для маршрутизации клиентского запроса без использования сетевого стека.
В соответствии с одним вариантом осуществления, модуль маршрутизатора принимает клиентский запрос. В ответ на прием такого запроса, модуль маршрутизатора получает сетевой адрес модуля сервера для выполнения запроса. Например, модуль маршрутизатора может опросить средство распределения (распределитель) нагрузки для получения сетевого адреса модуля сервера. Тогда, модуль маршрутизатора на основе сетевого адреса модуля сервера определяет, исполняется ли он на том же самом физическом компьютере, что и модуль сервера. В одном варианте реализации, для осуществления этого определения модуль маршрутизатора сравнивает сетевой адрес модуля сервера со списком сетевых адресов, на которые отвечает сервер, на котором исполняется модуль маршрутизатор.
Если модуль маршрутизатора определяет, что модуль сервера не исполняется на том же самом физическом компьютере, то модуль маршрутизатора переадресовывает клиентский запрос на модуль сервера с использованием стандартного сетевого транспортного протокола, такого, как протокол управления передачей/межсетевой протокол ("TCP/IP"), гипертекстовый транспортный протокол ("HTTP") или другой тип транспортного протокола. Если модуль маршрутизатора определяет, что модуль сервера исполняется на том же самом компьютере, то модуль маршрутизатора переадресовывает клиентский запрос на модуль сервера с использованием оптимизированной транспортировки. Например, в одном конкретном варианте реализации, оптимизированная транспортировка может представлять собой транспортировку, при которой используется бинарное кодирование, например, TCP-транспортировку. В соответствии с другим вариантом реализации, оптимизированная транспортировка представляет собой оптимизированную транспортировку только в пределах одного компьютера, например, привязку именованного канала, для обеспечения связи между модулем маршрутизатора и модулем сервера без использования сетевого стека. Оптимизированная транспортировка также используется для передачи ответа из модуля сервера в модуль сервера.
Следует понимать, что вышеописанное изобретение также может быть реализовано в качестве управляемого компьютером устройства, компьютерного процесса, вычислительной системы, либо в качестве такого изделия, как машиночитаемый носитель. Эти и другие различные характерные особенности будут ясны из прочтения нижеследующего подробного описания и рассмотрения связанных с ним чертежей.
Данное описание сущности изобретения предоставлено для введения подборки концепций в упрощенной форме, которые дополнительно описываются ниже в подробном описании. Данное описание сущности изобретения не предназначено для определения основных характеристик или существенных признаков заявленного изобретения, и при этом не подразумевается использование этого описания сущности изобретения для ограничения объема заявленного изобретения. Кроме того, заявленное изобретение не ограничивается вариантами реализации, которые устраняют любые или все из недостатков, указанные в любой части данного раскрытия.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 является схемой сети, изображающей одну иллюстративную рабочую среду для представленных в настоящем документе вариантов осуществления;
Фиг.2 является схемой сети, изображающей аспекты одного варианта осуществления, представленного в настоящем документе, для оптимизированной маршрутизации;
Фиг.3 является схемой последовательности операций, изображающей один иллюстративный процесс для оптимизированной маршрутизации клиентского запроса в одном варианте осуществления, представленном в настоящем документе; и
Фиг.4 является схемой архитектуры компьютера, изображающей иллюстративные компьютерные аппаратные средства и архитектуру программного обеспечения для вычислительной системы, приспособленной для реализации аспектов вариантов осуществления, представленных в настоящем документе.
ПОДРОБНОЕ ОПИСАНИЕ
Нижеследующее подробное описание ориентировано на технологии для оптимизированной маршрутизации. Несмотря на то, что описанное в настоящем документе изобретение представлено в общем контексте программных модулей, которые исполняются в компьютерной системе в сочетании с исполнением операционной системы и прикладных программ, специалисты в данной области техники признают, что могут быть осуществлены и другие варианты реализации в сочетании с другими типами программных модулей. В целом, программные модули включают в себя стандартные подпрограммы, программы, компоненты, структуры данных и другие типы структур, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Кроме того, специалисты в данной области техники оценят, что описанное в настоящем документе изобретение может быть осуществлено на практике и при других конфигурациях компьютерной системы, включая портативные устройства, многопроцессорные системы, основанную на микропроцессорах или программируемую бытовую электронику, миникомпьютеры, универсальные компьютеры и т.п.
В нижеследующем подробном описании выполняются ссылки на сопроводительные чертежи, которые являются его частью и которые изображают посредством иллюстрации определенные варианты осуществления или примеры. Теперь, со ссылкой на чертежи, на которых одинаковые цифры представляют одинаковые элементы для всех чертежей, будут представлены аспекты вычислительной системы и методологии оптимизации маршрутизации.
Обращаясь к Фиг.1, будут предоставлены подробности относительно иллюстративной рабочей среды для представленных в настоящем документе вариантов осуществления. В частности, Фиг.1 изображает аспекты системы 100, которая формирует иллюстративную операционную среду для представленных в настоящем документе вариантов осуществления. Как изображено на Фиг.1, клиентский компьютер 104 соединяется с одним или несколькими серверными компьютерами 102A-102B через сеть 106. Следует понимать, что сети, рассматриваемые в настоящем документе, такие как сеть 106, являются лишь иллюстративными, и что в фактических вариантах реализации представленной в настоящем документе технологии может быть использовано больше или меньше сетей. Кроме того, также следует понимать, что, несмотря на то, что на Фиг.1 проиллюстрирована одна сеть 106, может быть использовано больше сетей, чем изображено в представленных в настоящем документе различных вариантах осуществления. Кроме того, следует понимать, что сеть 106 может охватывать, например, сеть Интернет. Например, клиентский компьютер 104 может быть расположен на одном континенте, в то время как серверы 102A-102B располагаются на другом.
Кроме того, следует понимать, что клиентский компьютер 104 может содержать любой тип вычислительной системы, приспособленной для формирования запроса на серверный компьютер. Например, клиентский компьютер 104 может содержать стандартную систему настольного компьютера или ноутбука, серверный компьютер, карманную вычислительную систему, телеприставку или беспроводный мобильный телефон с информационными возможностями.
Как показано на Фиг.1, каждый из серверных компьютеров 102A-102B может быть оборудован модулем 108A-108B маршрутизатора, соответственно, и модулем 110A-110B сервера, соответственно. Модули 108A-108B маршрутизатора содержат программы, которые принимают запросы от клиентского компьютера 104. Модули 108A-108B маршрутизатора также обеспечивают функциональные возможности для запросов маршрутизации, принятых от клиентского компьютера 104 надлежащим модулем 110A-110B сервера для обработки. Ответы от соответствующих модулей 110A-110B сервера возвращаются на модуль 108A-108B маршрутизатора, который переадресовал изначальный запрос на модуль сервера. Затем модуль маршрутизатора переадресовывает ответ на клиентский компьютер 104. Следует понимать, что модуль 110A-110B сервера содержит компонент программного обеспечения, сконфигурированный для приема запросов и ответа на них. Например, модули 110A-110B сервера могут содержать программы web-серверов, web-службы (сервисы) и другие типы компонентов сервера.
Для определения того, на какой из модулей 110A-110B сервера должен быть направлен клиентский запрос, принятый от клиентского компьютера 104, модули 108A-108B маршрутизатора, конфигурируются для использования служб регулятора 112 нагрузки. Регулятор нагрузки является программным обеспечением или компонентом аппаратных средств, сконфигурированным для определения одного из модулей 110A-110B сервера для выполнения запроса от клиентского компьютера 104. Следует понимать, что регулятор 112 нагрузки может использовать различные алгоритмы для определения соответствующего модуля 110A-110B сервера, включающие в себя, в числе прочего, текущую нагрузку серверных компьютеров 102A-102B по обработке, обеспечивая более высокое качество обслуживания для определенных категорий клиентских компьютеров 104 и другие факторы. Следует понимать, что представленные в настоящем документе варианты осуществления не зависят от любого конкретного механизма, используемого регулятором 112 нагрузки для определения модуля 110A-110B сервера, который должен выполнять конкретный клиентский запрос.
Если от клиентского компьютера 104 принят запрос посредством одного из модулей 108A-108B маршрутизатора, то модуль маршрутизатора, который принимает запрос, опросит регулятор 112 нагрузки для получения сетевого адреса модуля 110A-110B сервера для выполнения клиентского запроса. Как только модуль 108A-108B маршрутизатора получает сетевой адрес модуля 110A-110B сервера для выполнения запроса, модуль маршрутизатора переадресовывает клиентский запрос на соответствующий модуль 110A-110B сервера. Например, если модулю 108A маршрутизатора предписано переадресовать клиентский запрос на модуль 110B сервера, то устанавливается сетевое соединение 114B с модулем 110B сервера через соответствующее сетевое соединение. Таким же образом, если маршрутизатору 108B предписано переадресовать клиентский запрос на модуль 110A сервера, то клиентский запрос переадресовывается через сетевое соединение 114D. Подобным образом, если модулю 108A маршрутизатора предписано переадресовать запрос на модуль 110A сервера, то для клиентского запроса сетевое соединение 114A устанавливается между модулем маршрутизатора и модулем 110A сервера. Таким же образом, если модулю 108B маршрутизатора предписано переадресовать клиентский запрос на модуль 110B сервера, то сетевое соединение 114C устанавливается между модулем 108B маршрутизатора и модулем 110A сервера, и после этого переадресовывается клиентский запрос. Ответы от надлежащего модуля 110A-110B сервера также возвращаются на модуль 108A-108B маршрутизатора через то же самое сетевое соединение.
В примере, проиллюстрированном на Фиг.1, сетевое соединение 114A устанавливается между модулем 108A маршрутизатора и модулем 110A сервера, даже при том, что эти компоненты исполняются на одном и том же серверном компьютере 102A. Таким же образом, сетевое соединение 114C устанавливается между модулем 108B маршрутизатора и модулем 110B сервера, даже при том, что эти компоненты исполняются на одном и том же физическом серверном компьютере 102B. Установление сетевых соединений 114A и 114С этим способом является очень неэффективным. Различные концепции и технологии, описанные ниже со ссылкой на Фиг.2-4, устраняют этот конкретный сценарий маршрутизации.
Обращаясь к Фиг.2, будут описаны аспекты иллюстративной системы 200 для обеспечения оптимизированной маршрутизации между модулем 108A маршрутизатора и модулем 110A сервера. В системе 200, изображенной на Фиг.2, модуль 108A маршрутизатора сконфигурирован для создания оптимизированного маршрута к модулю 110A сервера, если модуль 108A маршрутизатора и модуль 110A сервера исполняются на одном и том же физическом серверном компьютере 102A. Дополнительные подробности относительно этого процесса будут предоставлены ниже.
Как показано на Фиг.2, модуль 108A маршрутизатора может принимать клиентский запрос 202 от клиентского компьютера 104. В ответ на прием клиентского запроса 202, модуль 108A маршрутизатора передает запрос 204 на регулятор 112 нагрузки для получения сетевого адреса модуля 110A-110B сервера для исполнения клиентского запроса 202. В ответ на прием запроса 204, регулятор 112 нагрузки возвращает целевой адрес 206 модуля 110A-110B сервера для выполнения клиентского запроса 202.
Когда модуль 108A маршрутизатора принимает целевой адрес 206 из регулятора 112 нагрузки, модуль 108A маршрутизатора определяет, исполняется ли модуль сервера, который должен выполнить клиентский запрос 202, на том же самом физическом компьютере 102A, что и модуль 108A маршрутизатора. Например, в одном варианте реализации, модуль 108A маршрутизатора осуществляет это определение посредством сравнения целевого адреса 206 со списком сетевых адресов 208, на которые отвечает серверный компьютер 102A. Если целевой адрес выявлен в списке сетевых адресов 208, то модуль 108A маршрутизатора заключает, что модуль 110B сервера исполняется на том же самом физическом серверном компьютере 102 A. Если целевой адрес 206 не содержится в списке сетевых адресов 208, то модуль 108A маршрутизатора заключает, что модуль сервера, который должен выполнить клиентский запрос 202, исполняется на другом физическом компьютере, таком как серверный компьютер 102B.
Если модуль 108A маршрутизатора заключает, что модуль сервера, который должен выполнить клиентский запрос 202, исполняется на другом физическом серверном компьютере, таком как модуль 110B сервера, то модуль 108A маршрутизатора переадресовывает клиентский запрос 202 на модуль 110B сервера согласно стандартной сетевой транспортировке 212. Например, механизм транспортного протокола TCP/IP может быть использован для переадресации клиентского запроса 202 на соответствующий модуль 110B сервера и для возвращения ответа на клиентский запрос 202 на модуль 108A маршрутизатора.
Однако, если модуль 108A маршрутизатора определяет, что модуль сервера, который должен выполнить клиентский запрос 202, исполняется на том же самом физическом серверном компьютере 102A, то модуль 108A маршрутизатора переадресовывает клиентский запрос 202 на соответствующий модуль 110A сервера через оптимизированную транспортировку 210. В соответствии с одним вариантом осуществления, оптимизированная транспортировка 210 представляет собой TCP-транспортировку, в которой используется бинарное кодирование.
В альтернативном варианте осуществления, оптимизированная транспортировка 210 представляет собой оптимизированную транспортировку только в пределах одного компьютера. Оптимизированная транспортировка 210 является транспортировкой, в которой не используется сетевой стек и, следовательно, является в высшей степени оптимизированной, по сравнению с другими типами транспортировок. Например, в одном варианте осуществления, оптимизированная транспортировка только в пределах одного компьютера содержит привязку именованного канала Windows Communication Foundation ("WCF"). Привязка именованного канала создает область разделяемой памяти на серверном компьютере 102A, через которую могут связываться модуль 108A маршрутизатора и модуль 110A сервера. Следует понимать, что несмотря на то, что привязка именованного канала WCF используется в одном описанном в настоящем документе конкретном варианте реализации, могут быть использованы и другие известные специалистам в данной области техники типы механизмов для связи между процессами для создания транспортировки между модулем 108A маршрутизатора и модулем 110B сервера, если эти компоненты исполняются на одном и том же физическом компьютере. Дополнительные подробности относительно этого процесса будут предоставлены ниже со ссылкой на Фиг.3-4.
Теперь, со ссылкой на Фиг.3, будут предоставлены дополнительные подробности относительно представленных в настоящем документе вариантов осуществления для оптимизированной маршрутизации. В частности, Фиг.3 является схемой последовательности операций, иллюстрирующей аспекты действия модулей 108A-108B маршрутизатора в соответствии с одним вариантом осуществления, представленным в настоящем документе.
Следует понимать, что описанные в настоящем документе логические действия реализуются (1) в качестве последовательности реализованных в компьютере действий или программных модулей, работающих в вычислительной системе, и/или (2) в качестве взаимосвязанных схем машинной логики или схемных модулей в пределах вычислительной системы. Вариант реализации является вопросом выбора, зависящим от производительности и других требований вычислительной системы. Соответственно, описанные в настоящем документе логические операции рассматриваются по-разному, как операции состояния, структурные устройства, действия или модули. Эти операции, структурные устройства, действия и модули могут быть реализованы в программном обеспечении, в программируемом оборудовании, в цифровых логических схемах специального назначения и любом их сочетании. Также следует понимать, что может быть выполнено больше или меньше действий, чем изображено на чертежах и описано в настоящем документе. Эти действия также могут быть выполнены и в отличном от описанного в настоящем документе порядке.
Процедура 300 начинается с действия 302, где модуль 108A маршрутизатора извлекает список сетевых адресов 208, который серверный компьютер 102A использует для связи. От действия 302 процедура 300 переходит к действию 304, где модуль 108A маршрутизатора определяет, был ли принят клиентский запрос 202 от компьютера, такого как, например, клиентский компьютер 104. В противном случае, процедура 300 возвращается к действию 304, где выполняется другое такое определение. Следует понимать, что несмотря на то, что функциональные возможности, изображенные на Фиг.3, иллюстрируются как осуществляемые в цикле, в других вариантах осуществления механизм зацикливания может и не использоваться. Например, в одном варианте реализации, процесс, изображенный на Фиг.3, может быть запущен, если принят клиентский запрос. В результате, в таком варианте реализации отсутствует необходимость в зацикливании процесса изображенным на Фиг.3 способом.
Если модуль 108A маршрутизатора принимает клиентский запрос 202, то процедура 300 переходит к действию 306. При действии 306 модуль 108A маршрутизатора передает запрос 204 на регулятор нагрузки 112 для получения целевого адреса 206 из модуля 110A-110B сервера для выполнения клиентского запроса 202. Как только модуль 108A маршрутизатора принимает целевой адрес 206, модуль 108A маршрутизатора сравнивает целевой адрес 206 с сетевым адресом, содержащимся в списке 208 сетевых адресов, для определения того, исполняется ли модуль маршрутизатора 108A и модуль 110A-110B сервера, который будет выполнять клиентский запрос 202, в одной и той же физической компьютерной системе.
Если модуль 108 маршрутизатора и модуль 110A-110B сервера, который будет выполнять клиентский запрос 202, не исполняются на одном и том же физическом компьютере, процедура 300 переходит от действия 310 к действию 312. При действии 312 модуль 108A маршрутизатора использует стандартную сетевую транспортировку 212 для переадресации клиентского запроса 202 на модуль сервера, такой как модуль 110B сервера, и приема ответа из модуля 110B сервера в качестве реакции на клиентский запрос 202. От действия 312 процедура 300 переходит к действию 304, описанному выше, где другой такой клиентский запрос может быть обработан аналогичным образом.
Если модуль 108A маршрутизатора определяет, что целевой адрес модуля 110A-110B сервера, который должен выполнить клиентский запрос 202, исполняется на том же самом физическом серверном компьютере, процедура 300 переходит от действия 310 к действию 314. В результате действия 314 модуль 108A маршрутизатора использует оптимизированную транспортировку 210 для переадресации клиентского запроса 202 на модуль сервера, такой как модуль 110A сервера, который будет выполнять клиентский запрос 202, и для приема ответа на клиентский запрос 202. Как рассматривалось выше, оптимизированная транспортировка 210 может представлять собой, в одном варианте осуществления, транспортировку, в которой используется двойное кодирование. Например, оптимизированная транспортировка 210 может представлять собой TCP-транспортировку. Альтернативно, оптимизированная транспортировка 210 может представлять собой оптимизированную транспортировку только в пределах одного компьютера, в которой используется бинарное кодирование, например, привязка именованного канала. От действия 314 процедура 300 возвращается к действию 304, рассматриваемому выше, где другой клиентский запрос 202 может быть принят и обработан подобным образом.
Фиг.4 изображает иллюстративную архитектуру 400 компьютера для компьютера, приспособленного исполнять компоненты программных средств, описанные в настоящем документе для оптимизированной маршрутизации, представленным выше способом. Архитектура компьютера, изображенная на Фиг.4, иллюстрирует обычный настольный компьютер, ноутбук или серверный компьютер, и может быть использована для исполнения любых аспектов компонентов программного обеспечения, представленных в настоящем документе, описанных как исполняемые на клиентском компьютере 104, серверных компьютерах 102A-102B и регуляторе 112 нагрузки.
Компьютерная архитектура, изображенная на Фиг.4, включает в себя блок 402 центрального процессора ("центральный процессор"), системную память 408, включающую в себя оперативную память 414 ("RAM") и постоянную память 416 ("ROM"), и системную шину 404, которая соединяет память с центральным процессором 402. Базовая система ввода-вывода, содержащая основные подпрограммы, которые помогают передавать информацию между элементами в пределах компьютера 400, как, например, во время запуска, сохраняются в памяти 416 ROM. Кроме того, компьютер 400 включает в себя запоминающее устройство 410 большой емкости для сохранения операционной системы 418, прикладных программ и других программных модулей, которые более подробно описаны в настоящем документе.
Запоминающее устройство 410 большой емкости соединено с центральным процессором 402 через контроллер (не показан) запоминающего устройства большой емкости, соединенный с шиной 404. Запоминающее устройство 410 большой емкости и связанный с ним машиночитаемые носители обеспечивают энергонезависимое хранилище для компьютера 400. Несмотря на то, что описание содержащихся в настоящем документе машиночитаемых носителей относится к запоминающему устройству большой емкости, такому как жесткий диск или дисковод для компакт-дисков, специалистам в данной области техники следует понимать, что машиночитаемый носитель может являться любым доступным компьютерным носителем данных, к которому можно осуществить доступ посредством компьютера 400.
В качестве примера, но не ограничения, машиночитаемые носители могут включать в себя энергонезависимые и энергонезависимые, сменные и несменные носители данных, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Например, машиночитаемые носители включают в себя, но не в ограничительном смысле, память RAM, память ROM, стираемую программируемую постоянную память (EPROM), электрически стираемую программируемую постоянную память (EEPROM), флэш-память или твердотельную память другой технологии, диск CD-ROM, цифровые универсальные диски ("DVD"), диски HD-DVD, диски BLU-RAY, или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитное дисковое запоминающее устройство или другие магнитные устройства хранения данных, либо любую другую среду, которая может быть использована для хранения желаемой информации и к которой можно осуществлять доступ посредством компьютера 400.
В соответствии с различными вариантами осуществления, компьютер 400 может работать в сетевой среде с использованием логических соединений с удаленными компьютерами через сеть, такую как сеть 420. Компьютер 400 может соединяться с сетью 420 через блок 406 сетевого интерфейса, соединенный с шиной 404. Следует понимать, что блок 406 сетевого интерфейса также может быть использован для соединения с другими типами сетей и удаленных компьютерных систем. Компьютер 400 также может включать в себя контроллер 42 ввода-вывода для приема и обработки входных данных от большого количества других устройств, включающих в себя клавиатуру, мышь или электронное перо (не показаны на Фиг.4). Таким же образом, контроллер ввода-вывода может обеспечить выходные данные на дисплейное устройство, принтер или другой тип выходного устройства (также не показано на Фиг.4).
Как кратко упоминалось выше, многие программные модули и массивы данных могут быть сохранены в запоминающем устройстве 410 большой емкости и в памяти 414 RAM компьютера 400, включая операционную систему 418, подходящую для управления работой сетевого настольного компьютера, ноутбука или серверного компьютера. В запоминающем устройстве 410 большой емкости 410 и памяти 414 RAM также могут храниться один или несколько программных модулей. В частности, в запоминающем устройстве 410 большой емкости и памяти 414 RAM могут храниться модуль 108 маршрутизатора и модуль 110 сервера, каждый из которых был подробно описан выше относительно Фиг.1-3. В запоминающем устройстве 410 большой емкости и RAM 414 также могут храниться и другие типы программных модулей и данных.
Следует понимать, что компоненты программных средств, описанные в настоящем документе, при загрузке их в центральный процессор 402 и исполнении, преобразовывают центральный процессор 402 и весь компьютер 400 из вычислительной системы общего назначения в вычислительную систему специального назначения, настроенную таким образом, чтобы обеспечивать функциональные возможности, представленные в настоящем документе. Центральный процессор 402 может быть построен из любого количества транзисторов или других схемных элементов на дискретных компонентах, которые могут по отдельности или совместно принимать любое количество состояний. Более конкретно, центральный процессор 402 может действовать в качестве конечного автомата в ответ на исполняемые команды, содержащиеся в пределах раскрытых в настоящем документе программных модулей. Эти исполняемые компьютером команды могут преобразовать центральный процессор 402 посредством определения того, как центральный процессор 402 переключается между состояниями, тем самым преобразовывая транзисторы или другие дискретные элементы аппаратных средств, составляющие центральный процессор 402.
Кодирование представленных в настоящем документе программных модулей также может преобразовывать физическую структуру представленного в настоящем документе машиночитаемого носителя. Особое преобразование физической структуры может зависеть от различных факторов в различных вариантах реализации этого описания. Примеры таких факторов могут включать в себя, но не ограничиваются: технологию, используемую для реализации машиночитаемого носителя, независимо от того, характеризуется ли машиночитаемый носитель как первичное или вторичное запоминающее устройство, и т.п. Например, если машиночитаемый носитель реализован в качестве памяти на основе полупроводников, то программные средства, раскрытые в настоящем документе, могут быть закодированы в машиночитаемом носителе посредством преобразования физического состояния полупроводниковой памяти. Например, программные средства могут преобразовывать состояние транзисторов, конденсаторов или других элементов схемы на дискретных компонентах, составляющих полупроводниковую память. Программные средства также могут преобразовывать физическое состояние таких компонентов для сохранения на них данных.
В качестве другого примера, машиночитаемые носители, раскрытые в настоящем документе, могут быть реализованы с использованием магнитной или оптической технологии. В таких вариантах реализации, представленное в настоящем документе программное обеспечение может преобразовывать физическое состояние магнитных или оптических носителей, если на нем закодировано программное обеспечение. Эти преобразования могут включать в себя изменение магнитных параметров конкретных положений в пределах заданного магнитного носителя. Эти преобразования также могут включать в себя изменение физических характеристик или параметров конкретных положений в пределах заданного оптического носителя для изменения оптических параметров этих положений. Также возможны и другие преобразования физического носителя без отступления от объема и сущности настоящего описания, причем предшествующие примеры обеспечены исключительно для упрощения этого рассмотрения.
В свете вышеупомянутого, следует понимать, что в компьютере 400 имеют место много типов физических преобразований для сохранения и исполнения представленных в настоящем документе компонентов программного обеспечения. Также следует понимать, что компьютер 400 может содержать и другие типы вычислительных устройств, включая портативные компьютеры, встроенные вычислительные системы, карманные персональные компьютеры и другие типы вычислительных устройств, известных специалистам в данной области техники. Также предполагается, что компьютер 400 может не включать в себя все изображенные на Фиг.4 компоненты и может включать в себя другие компоненты, которые явно не изображены на Фиг.4, или могут использовать архитектуру, полностью отличную от изображенной на Фиг.4.
На основе вышесказанного, следует понимать, что в настоящем документе обеспечены технологии для оптимизированной маршрутизации. Несмотря на то, что представленное в настоящем документе изобретение было описано языком, характерным для особенностей конструкции компьютера, методологических и преобразовательных действий, заданных вычислительных машин и машиночитаемых носителей, следует подразумевать, что объем изобретения, определенный в приложенной формуле изобретения, не обязательно ограничивается заданными характерными особенностями, действиями или носителями, описанными в настоящем документе. Скорее, заданные характерные особенности, действия и носители раскрываются в качестве иллюстративных форм реализации формулы изобретения.
Описанное выше изобретение предоставлено исключительно для иллюстрации и не должно рассматриваться в качестве ограничения. Могут быть выполнены различные модификации и изменения описанного в настоящем документе изобретения без следования иллюстративным вариантам осуществления и областям применения, иллюстрированным и описанными без отступления от истинной сущности и объема настоящего изобретения, который определяется нижеследующей формулой изобретения.