15.5 Работа с дубликатами запросов RPC

15.5 Работа с дубликатами запросов RPC

Если служба основана на протоколе TCP, запросы и ответы будут доставляться надежно. TCP берет на себя обеспечение целостности доставляемых данных.

Если RPC базируется на UDP, то, в зависимости от требований конкретного приложения, клиент и сервер должны обеспечить собственный тайм-аут, повторную пересылку и стратегию выделения дублированных сообщений. Разработчик приложения может выбрать для клиента любую из следующих стратегий:

? Если в пределах тайм-аута не будет получен ответ, послать сообщение об ошибке конечному пользователю, который и должен снова инициировать запрос к службе.

? Если в пределах тайм-аута не будет получен ответ, отправить запрос еще раз. Повторять эту операцию до тех пор, пока не будет получен ответ или не будет достигнут максимальный предел повторной пересылки.

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

? Не фиксировать ранее выполненные операции. При поступлении запроса выполнить процедуру, даже если это был дубликат запроса. Отметим, что для некоторых процедур (например, чтение набора байт из файла) в этом нет ничего страшного. Конечно, клиент может и дальше получать двойные ответы, но может и блокировать их, отслеживая ранее выполненные транзакции.

? Хранить копии ответов, которые были отправлены в течение нескольких последних минут. При поступлении запроса с тем же операционным идентификатором сервер уже знает, что процедура выполнена и на нее уже был послан ответ, следовательно, он мог бы отослать назад копию исходного ответа. Если сервер выполняет затребованную процедуру в момент поступления дубликата запроса — он должен отбросить повторный запрос.

Каждое приложение клиент/сервер может выбрать стратегию соединения, наиболее подходящую своим конкретным требованиям.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Очереди запросов

Из книги автора

Очереди запросов Для блочных устройств поддерживаются очереди запросов (request queue), в которых хранятся ожидающие запросы на выполнение операций блочного ввода-вывода. Очередь запросов представляется с помощью структуры request_queue, которая определена в файле <linux/blkdev.h>.


Количество DNS-запросов

Из книги автора

Количество DNS-запросов Система DNS устанавливает соответствие имен хостов их IP-адресам, точно так же как телефонный справочник позволяет узнать номер человека по его имени. Когда вы набираете «www.yahoo.com» в адресной строке браузера, преобразователь DNS, к которому обратился


Формирование запросов

Из книги автора

Формирование запросов Если вы не хотите углубляться в детали техники поиска, то можете просто задать поисковой машине вопрос так же, как задали бы его человеку, у которого хотите получить совет. Например, «как быстро похудеть», «есть ли жизнь на Марсе», «где раки зимуют»


1.3.3. Язык запросов

Из книги автора

1.3.3. Язык запросов Для того чтобы Яндекс корректно понимал запросы, состоящие из нескольких слов, был разработан специальный язык запросов. Отдельные его элементы мы уже рассмотрели — это и специальные символы, используемые в обычном поиске, и дополнительные параметры,


10.1.3. Язык запросов

Из книги автора

10.1.3. Язык запросов Язык запросов, используемый в Яndex.Server, в полной мере соответствует языку запросов, с которым работает поисковая система Яндекс. Поэтому все, что можно использовать для поиска в Интернете, новостях, среди картинок, поддерживается и в версии программы,


Создание запросов TOP PERCENT

Из книги автора

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


6.2. Оптимизация запросов

Из книги автора

6.2. Оптимизация запросов Основным способом повышения производительности запросов являются индексы. Определить, действительно ли созданные вами индексы используются запросом, позволяет командаEXPLAIN <Текст запроса>; Набор данных, выводимый командой EXPLAIN, содержит


Множество с дубликатами (Multiset)

Из книги автора

Множество с дубликатами (Multiset) multiset - это ассоциативный контейнер, который поддерживает равные ключи (возможно, содержит множественные копии того же самого значения ключа) и обеспечивает быстрый поиск ключей.template ‹class Key, class Compare = less‹Key›, template ‹class U› class Allocator = allocator›class


Словарь с дубликатами (Multimар)

Из книги автора

Словарь с дубликатами (Multimар) multimар - ассоциативный контейнер, который поддерживает равные ключи (возможно, содержит множественные копии того же самого значения ключа) и обеспечивает быстрый поиск значений другого типа T, связанных с ключами.template ‹class Key, class T, class Compare =


Планы запросов

Из книги автора

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


Типы запросов

Из книги автора

Типы запросов Запрос SQL – это запрос, создаваемый при помощи инструкций SQL [15] .Запросы являются основным средством просмотра, изменения и анализа информации, которая содержится в одной или в нескольких таблицах базы данных. В этой главе, а также в главах 10 и 12,


Язык запросов

Из книги автора

Язык запросов Для более профессионального поиска существует специальный язык запросов. Рассмотрим использование этого языка на примере поиска слов песни «Яблоки на снегу». Ничего личного! Я не предлагаю вам петь эту песню. Ну, случайно пришла на ум. Можете потом поискать


12.8. Работа с данными при помощи запросов

Из книги автора

12.8. Работа с данными при помощи запросов В режиме таблицы доступны самые разные операции с данными – просмотр, сортировка, фильтрация, обновление и печать. Однако очень часто приходится проводить вычисления или просматривать данные из нескольких таблиц. Отобрать нужные


Работа с конструктором запросов

Из книги автора

Работа с конструктором запросов Широкие возможности для создания запросов имеет конструктор запросов, в котором можно задавать условия отбора по отдельным полям, определять способ сортировки результатов и создавать вычисляемые поля. Для знакомства с конструктором


Практическая работа 57. Построение запросов

Из книги автора

Практическая работа 57. Построение запросов Задание. В созданной в предыдущем уроке базе данных Taxi2008 постройте запросы в соответствии с приведенными в этом уроке примерами 1-4.Задание для самостоятельного выполненияПостройте запросы, позволяющие определить клиентов,