ГридРПК
Эта статья может быть слишком технической для понимания большинства читателей . ( сентябрь 2011 г. ) |
GridRPC в распределенных вычислениях — это удаленный вызов процедур по сетке . Эта парадигма была предложена рабочей группой GridRPC. [1] форума Open Grid Forum (OGF), и API был определен [2] чтобы клиенты могли получить доступ к удаленным серверам так же просто, как вызов функции. Он используется среди многочисленных промежуточных программ Grid из-за простоты реализации и был стандартизирован OGF в 2007 году. Из соображений совместимости между различными существующими промежуточными программами за API последовал документ [3] описание правильного использования и поведения различных реализаций API GridRPC. Затем были проведены работы по управлению данными GridRPC , [4] который был стандартизирован в 2011 году.
Объем
[ редактировать ]Целью этого стандарта является предоставление рекомендаций по реализации промежуточного программного обеспечения . Он касается следующих тем:
- Определение конкретной структуры данных для аргументов в промежуточном программном обеспечении GridRPC.
- Определение типа данных, который будет использоваться вместе со структурой данных аргументов.
- Определение семантики создания, уничтожения, времени жизни и копирования для структуры данных аргументов.
- Определение возможных возможностей самоанализа аргументов вызова и атрибутов удаленных функций (например, типов данных, счетчиков).
- Определение механизмов обработки постоянных данных, например, определение и использование такого понятия, как «дескрипторы данных» (которые могут быть такими же или похожими на тип данных grpc_data_t). Это также может включать такие концепции, как семантика отложенного копирования , аренда данных или тайм-ауты.
- Определение механизмов API для управления рабочими процессами .
- Оцените совместимость и взаимодействие с другими системами, например, Web Services Resource Framework .
- Желаемые свойства. Предлагаемая рекомендация не обязательно будет определять какие-либо свойства, такие как потокобезопасность, безопасность и отказоустойчивость, но она не должна быть несовместима с любыми такими полезными свойствами.
- Продемонстрировать реализуемость всех частей API.
- Продемонстрируйте и оцените как минимум две реализации полной рекомендации промежуточного программного обеспечения GridRPC.
Контекст
[ редактировать ]Среди существующих подходов к программированию промежуточного программного обеспечения и приложений существует один простой, мощный и гибкий подход заключается в использовании серверов, доступных в разных административных доменах, посредством классического клиент-сервер или парадигма удаленного вызова процедур (RPC). Эту модель реализуют сетевые серверы (NES). который также называется GridRPC. Клиенты отправляют запросы на вычисления брокеру ресурсов, цель которого — найти сервер доступен в Grid. Планирование часто применяется для балансировки работы между серверами и списком доступные серверы отправляются обратно клиенту; затем клиент может отправить данные и запрос одному из предложил серверы для решения этой проблемы. Благодаря росту пропускной способности сети и уменьшению сетевых задержек, небольшие вычислительные запросы теперь можно отправлять на серверы, доступные в Grid. Чтобы эффективно использовать современные масштабируемые Ресурсные платформы важно также обеспечить масштабируемость на уровнях промежуточного программного обеспечения. Этот сервис-ориентированный подход не нов.
В прошлом несколько исследовательских проектов были нацелены на эту парадигму. Основным промежуточным программным обеспечением, реализующим API, являются DIET, NetSolve/GridSolve, Ninf, но некоторые другие среды используют его, например интерфейс SAGA из OGF, и без стандартизированных вызовов API, например OmmiRPC, XtremWeb. Модель RPC через Интернет имеет также использовался для нескольких приложений. Прозрачно через Интернет можно решить большие проблемы оптимизации. используя различные подходы, просто заполняя веб-страницу для удаленных вычислений по обработке изображений, используя математические библиотеки или исследования эвристики и методов разрешения для разреженной линейной алгебры, такой как GridTLSE. [5] Этот подход предоставления вычислительных услуг через Интернет также очень близок к сервис-ориентированным вычислениям (SOA). парадигмы и является основой облачных вычислений .
Презентация стандартизации и GridRPC API
[ редактировать ]Одним из простых, но эффективных способов выполнения заданий в вычислительной сети является использовать промежуточное программное обеспечение GridRPC, которое опирается на GridRPC парадигма. Для каждого запроса промежуточное программное обеспечение GridRPC управляет представление входных и выходных данных о выполнении задания на удаленном ресурсе и т.д. Чтобы сделать сервис доступным, программисту должен реализовать два кода: клиент, где определяются данные и который запускается пользователем при запросе услуги и сервером, который содержит реализацию службы, которая выполняется на удаленный ресурс.
Одним из шагов к облегчению разработки таких кодексов является определение GridRPC API, черновой вариант которого был предложен в ноябре 2002 г. [6] и который является стандартом Open Grid Forum (OGF), поскольку Сентябрь 2007 г. Таким образом, можно скомпилировать и использовать исходный код GridRPC, который не задействует конкретные данные промежуточного программного обеспечения. выполняется с помощью любого промежуточного программного обеспечения, совместимого с GridRPC.
Из-за разницы в выборе реализации GridRPC API, документ, описывающий взаимодействие между GridRPC также было написано промежуточное программное обеспечение. Его главная цели — описать разницу в поведении GridRPC. промежуточное программное обеспечение и предложить общий тест, который будет проверять все промежуточное программное обеспечение GridRPC. должен пройти.
Затем были проведены обсуждения по управлению данными в рамках Промежуточное программное обеспечение GridRPC. Проект API был предложен во время OGF'21 в октябре 2007 г. Целью создания этого документа является предоставление явные функции для управления обменом данными между Платформа GridRPC и клиент, поскольку (1) размер данных, используемых в Grid-приложения могут быть большими, и бесполезная передача данных должна быть избегал; (2) данные не всегда хранятся на стороне клиента, но могут быть доступен либо на ресурсе хранения, либо в GridRPC. платформа. Следовательно, побочным эффектом является то, что полностью совместимый с GridRPC код может быть написан и скомпилирован с любым промежуточным программным обеспечением GridRPC, реализующим API управления данными GridRPC.
Парадигма GridRPC
[ редактировать ]Модель GridRPC изображена на следующем рисунке. Вот как осуществляется связь: (1) серверы регистрируют свои службы в реестре; (2) когда клиенту требуется выполнение услуги, он обращается к реестру и (3) реестр возвращает клиенту дескриптор; (4) затем клиент использует дескриптор для вызова службы на сервере и (5) в конечном итоге получает обратно результаты.
ГридРПК API
[ редактировать ]Механизмы, задействованные в API, должны предоставлять средства для синхронного и/или асинхронные вызовы службы. В последнем случае клиенты должны также иметь возможность ждать блокирующим или неблокирующим способом после завершение оказания конкретной услуги. Это, естественно, включает в себя некоторые данные структур и проводит к строгому определению функций API.
Типы данных GridRPC
Для реализации API необходимы три основных типа данных: (1) grpc_function_handle_t — это тип переменных, представляющих удаленная функция, привязанная к данному серверу. После выделения клиентом такую переменную можно использовать для запуска службы столько раз, сколько желанный. Он явно аннулируется пользователем, когда он не нужен. больше; (2) grpc_session_t — это тип переменных, используемых для определить конкретный неблокирующий вызов GridRPC. Такая переменная обязательное получение информации о статусе работы, для клиент должен дождаться, отменить или узнать статус ошибки вызова; (3) grpc_error_t группирует все виды ошибок и возвращает статус коды, участвующие в API GridRPC.
Функции GridRPC
grpc_initialize() и grpc_finalize() Функции аналогично MPI вызовам инициализации и финализации . Обязательно, чтобы любой вызов GridRPC выполняется между этими двумя вызовами. Они читают файлы конфигурации, подготовьте среду GridRPC и завершите ее.
Чтобы инициализировать и разрушить дескриптор функции, grpc_function_handle_init() и grpc_function_handle_destruct(). необходимо использовать функции называется. Поскольку дескриптор функции может быть динамически связан с сервер, из-за механизмов обнаружения ресурсов, например, вызов в grpc_function_handle_default() позволяет отложить сервер выбора до тех пор, пока на дескрипторе не будет сделан фактический вызов.
grpc_get_handle() позволяет клиенту получить дескриптор функции соответствующий идентификатору сеанса ( например, неблокирующему вызову), который имеет было выполнено ранее.
В зависимости от типа вызова, блокирующего или неблокирующего, клиент может использовать grpc_call() и grpc_call_async() функция. В последнем случае клиент получает после вызова сеанс Идентификатор, который можно использовать для проверки или ожидания завершения, отмените вызов и проверьте статус ошибки неблокирующего вызова.
После совершения уникального или нескольких неблокирующих вызовов клиент может используйте: grpc_probe() , чтобы узнать, произошло ли выполнение службы. завершенный; grpc_probe_or(), чтобы узнать, есть ли одно из предыдущих неблокирующие вызовы завершены; grpc_cancel() для отмены вызов; grpc_wait() для блокировки до завершения запрошенная услуга; grpc_wait_and() для блокировки до тех пор, пока все службы не будут соответствующие идентификаторам сеанса, используемые в качестве параметров, завершены; grpc_wait_or() для блокировки до тех пор, пока какая-либо служба, соответствующая идентификаторы сеанса, используемые в качестве параметров, завершились; grpc_wait_all() для блокировать до тех пор, пока не будут завершены все неблокирующие вызовы; и grpc_wait_any() , чтобы дождаться, пока какой-либо ранее выданный неблокирующий запрос запрос завершен.
Код, совместимый с GridRPC
[ редактировать ]Расскажите о библиотеке (+ссылка), с которой должен компилироваться код, и приведите простой пример.
Документы GridRPC
[ редактировать ]- Модель GridRPC и API для приложений конечных пользователей . Ссылка OGF: GFD-R.52 (2007 г.)
- Тестирование совместимости для спецификации API GridRPC . Ссылка OGF: GFD.102 (2007).
- API управления данными в GridRPC . Ссылка OGF: GFD-RP.186 (2011 г.)
Реализации GridRPC
[ редактировать ]Ссылки
[ редактировать ]- ^ «Области и группы форума Open Grid» . Архивировано из оригинала 11 августа 2011 г. Проверено 23 мая 2011 г.
- ^ «Архивная копия» (PDF) . Архивировано из оригинала (PDF) 28 сентября 2011 г. Проверено 23 мая 2011 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ http://www.ogf.org/documents/GFD.102.pdf. [ только URL-адрес PDF ]
- ^ http://www.ogf.org/documents/GFD.186.pdf. [ только URL-адрес PDF ]
- ^ «Архивная копия» . Архивировано из оригинала 13 июля 2011 г. Проверено 23 мая 2011 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Сеймур, Кейт; Накада, Хидемото; Мацуока, С.; Донгарра, Джек; Ли, Крейг; Казанова, Анри (ноябрь 2002 г.). «Обзор GridRPC: API удаленного вызова процедур для грид-вычислений». Грид-вычисления — ГРИД 2002 . Конспекты лекций по информатике. Том. 2536. стр. 274–278. дои : 10.1007/3-540-36133-2_25 . ISBN 978-3-540-00133-1 .
- ^ Кэрон, Эдди; Деспре, Фредерик (2006). «DIET: масштабируемый набор инструментов для создания сетевых серверов в сети». Международный журнал приложений для высокопроизводительных вычислений . 20 (3): 335–352. CiteSeerX 10.1.1.126.236 . дои : 10.1177/1094342006067472 . S2CID 1050715 .
- ^ Ярхан, А.; К. Сеймур; К. Саги; З. Ши; Дж. Донгарра (2006). «Последние разработки в Gridsolve». Международный журнал приложений для высокопроизводительных вычислений . 20 (1): 131–141. CiteSeerX 10.1.1.62.3205 . дои : 10.1177/1094342006061893 . S2CID 3019675 .
- ^ Накада, Хидемото; Сато, Мицухиса; Секигути, С (1999). «Проектирование и реализация Ninf: на пути к глобальной вычислительной инфраструктуре». Вычислительные системы будущего поколения, проблема метакомпьютеров . 15 (5–6): 649–658. CiteSeerX 10.1.1.177.2195 . дои : 10.1016/s0167-739x(99)00016-3 .
- ^ Сато, М; Хирано, М; Танака, Ю; Секигути, С (2001). «OmniRPC: средство Grid RPC для кластерных и глобальных вычислений в OpenMP». Параллельное программирование с общей памятью OpenMP . Конспекты лекций по информатике. Том. 2104. стр. 130–136. CiteSeerX 10.1.1.28.7334 . дои : 10.1007/3-540-44587-0_12 . ISBN 978-3-540-42346-1 .