Аргументы для протоколов без сохранения состояния (контекст: простая двухточечная связь)

(Итак, этот вопрос задавался раньше , но в общем смысле, и большинство ответов относились к общему сетевому взаимодействию с несколькими серверами / клиентами / и т. д.)

В контексте простого протокола связи точка-точка, каковы преимущества / недостатки протоколов с отслеживанием состояния и без сохранения состояния? Я считаю, что без сохранения состояния лучше (учитывая большой доступ к HTTP) с помощью простой команды -ответить на пакеты, но я не уверен, почему. Я также работаю с супервизором, у которого был большой опыт использования протоколов с отслеживанием состояния с порядковыми номерами, методами установления соединения и т. Д., И он постоянно поощряет меня использовать протокол с отслеживанием состояния. Мы зашли в тупик и не можем убедить друг друга в правильности подхода.

Другой вопрос о простых протоколах связи точка-точка вызвал некоторые хорошие примеры, а именно HDLC (с отслеживанием состояния) и MODBUS (без гражданства).


person Jason S    schedule 22.12.2009    source источник
comment
p.s. не уверен, нужно ли делать вики сообщества. Если вы чувствуете себя неуверенно, дайте мне знать.   -  person Jason S    schedule 22.12.2009


Ответы (1)


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

В протоколе без сохранения состояния нет «Привет» или «До свидания». Каждый запрос - это просто «Дай мне это», «Возьми это» или что-то подобное, и каждый запрос стоит отдельно. Если клиент что-то дает серверу, ему все равно, что сервер с этим делает. Если клиенту нужно знать, что он только что дал серверу, он снова запросит это для проверки.

Это (безгражданство) звучит хорошо, и это хорошо для двух независимых процессов (сервера и клиента), особенно если они слабо связаны.

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

Представьте себе хирурга и его ассистента, которые передают ей инструменты. Хирург говорит "скальпель", и она знает, что общение было завершено, когда она берет скальпель в руку. Ассистент с отслеживанием состояния может отслеживать состояние связи и знать, что после «scapel» следует команда «всасывания» или «втягивания», и быть готовым с подходящим инструментом. Итак, у разговора есть состояние - начало и конец - «привет» и «до свидания». Это хорошо, поскольку сокращает задержку и снижает накладные расходы на связь.

Вы можете сделать протокол хирурга / ассистента не имеющим гражданства, но повлияет ли это на качество с точки зрения общего результата?

person Lindsay Morsillo    schedule 01.08.2013