Здравствуйте!
Имеем два приложения, взаимодействующие друг с другом посредством сокетов.
Оба приложения могут быть многопоточными и находиться как на одной так и на разных машинах, а так же использовать как прямые функции управления сокетами, так и посредством сторонних библиотек.
Так же оба приложения могут выступать как в роли клиента, так и в роли сервера.
Одно приложение посылает другому сообщение и принимает от него ответ на это сообщение. В данный момент для взаимодействия приложений используются таймеры: если в течении таймаута не получен ответ - сообщение считается невалидным и весь запрос отбрасывается.
Таким образом, от значения таймаута зависит производительность и работоспособность всей системы в целом.
Как можно еще реализовать сетевое взаимодействие приложений с максимальной доставкой сообщений и минимальным таймаутом?
Так или иначе.Какой используется протокол запросов (stateless или statefull)?
Размер запроса и ответа?Что такое "максимальной доставкой сообщений" и "минимальным таймаутом"? Доставляй все сообщения максимально, делай таймаут нулевым, разрешаю. Дальше что?
Протокол используется простой: устанавливается сокет на хост и порт и слушаются все входящие сообщения.
Максимальная доставка сообщений - максимальное количество сообщений, которое может быть доставлено.
Минимальный таймаут - минимальное значение времени, необходимое на отправку, обработку и доставку сообщения.
Предположим, мы установили значение таймера равным одной единице: если за эту единицу времени ответ не получен, сервис считается недоступным.
Если это значение слишком мало, мы отбрасываем валидные ответы и наоборот, если значение слишком велико, мы ждем ответов от недоступных сервисов.
Думаю, модель взаимодействия приложений в сети достаточно распространенная.
Как же мне добиться производительности ответов хотя бы 100 тыс. запросов в секунду?
> Максимальная доставка сообщений - максимальное количество сообщений, которое может быть
> доставлено.Уменьшай заголовки. Это достигается упрощением протокола, например отказом от tcp или ip. То что ты написал про "слушается сокет" означает что ты даже не рассматривал вариант отказа от TCP.
> минимальное значение времени, необходимое на отправку, обработку
> и доставку сообщения.Минимальный таймаут - это бредятина. Таймаут это настройка. То что ты сказал называется задержкой передачи сообщения. И зависит она от устройства сети больше чем от протокола. Хотя протокол может её увеличить повторной посылкой потерянных при передаче данных.
> Как же мне добиться производительности ответов хотя бы 100 тыс. запросов в
> секунду?Проблема реализовать такой сервис, который обработает столько запросов, а не в сети.
PS: Вы не отвечаете на мой ответ. stateless и размер запроса/ответа?
> Уменьшай заголовки. Это достигается упрощением протокола, например отказом от tcp или ip.Вы шутите?!
А как же слать пакеты по сети?
Или Вы думаете, что все на одной машине крутится?
К сожалению, у меня нет mainframe
> Вы шутите?!
> А как же слать пакеты по сети?Кроме tcp есть уйма протоколов. Например столь же популярный, но намного более простой UDP, который идеально подходит для общения вида запрос-ответ.
Если всё работает в одной локальной сети можно использовать ethernet без обёртки ip.
>[оверквотинг удален]
> Так же оба приложения могут выступать как в роли клиента, так и
> в роли сервера.
> Одно приложение посылает другому сообщение и принимает от него ответ на
> это сообщение. В данный момент для взаимодействия приложений используются таймеры: если
> в течении таймаута не получен ответ - сообщение считается невалидным и
> весь запрос отбрасывается.
> Таким образом, от значения таймаута зависит производительность и работоспособность всей
> системы в целом.
> Как можно еще реализовать сетевое взаимодействие приложений с максимальной доставкой сообщений
> и минимальным таймаутом?не придумывать велосипед
http://www.zeromq.org/
Спасибо - интересная либа