В одном из проектов, над которыми мне довелось работать, был реализован механизм обмена данными между удалёнными компонентами системы, работавший по следующему сценарию: компонент-источник А на своей стороне подготавливает данные, предназначенные для передачи; компонент-получатель Б периодически открывает сеанс связи и забирает все данные, которые накопил А на момент подключения. Данные, поступающие уже в во время сеанса связи, откладываются до следующего подключения.
В какой-то момент я понял, что передача данных в такой схеме описывается с помощью обыкновенного дифференциального уравнения. Описание модели и выводы, которые удалось получить с её помощью, под катом.
Обозначим — объем данных в некоторых условных единицах, накопленных для обмена на стороне компонента А к моменту времени
. Пусть пауза между завершением сеанса обмена и началом следующего равна
единиц времени, а для передачи одной единицы данных требуется
единиц времени. Тогда на передачу
единиц данных требуется
единиц времени. Скорость передачи данных равна
Если скорость накопления данных на стороне А обозначить , то
является решением дифференциального уравнения:
Так как неограниченный рост объёма ещё непереданных данных является крайне нежелательной ситуацией, то важной задачей становится получение условий ограниченности решений этого уравнения.
Для простоты будем считать функцию непрерывной. Пусть
где
при всех , а
— постоянная, играющая роль среднего значения.
Рассмотрим несколько примеров. Пусть периодическая и её график имеет вид:

В этом случае ,
.
Численно проинтегрировав уравнение (1) для нескольких значений параметров и начальных значений
, получим следующие графики решений:


Из примеров видно: когда , решения ограничены и при различных значениях
система стремится к некоторому установившемуся режиму. Чем меньше длительность пауз между сеансами
, тем эта сходимость быстрее. При
такой сходимости не наблюдается, а решения с течением времени растут. Уменьшение длительности пауз замедляет скорость роста, но тенденция к неограниченному возрастанию
всё равно сохраняется.
В общем случае можно показать, что если , то решения уравнения (1) ограничены, а если
— будут получаться неограниченные решения. То есть ограниченность решений определяется только соотношением скоростей накопления и извлечения данных. Длительность пауз между сеансами обмена
, единственный параметр, которым можно легко управлять, принципиально не влияет на поведение системы. Хотя, как видно из соотношения (1) и примеров, с её увеличением скорость обмена уменьшается.
В итоге анализ модели позволяет сделать следующие выводы. Если скорость обмена оказывается недостаточной, и на стороне источника постоянно растёт объём данных для отправки, то пытаться исправить ситуацию уменьшением пауз между сеансами не имеет смысла. Помочь здесь может только увеличение производительности системы.
С другой стороны, в случае когда сервис обмена постоянно загружает компьютеры в ущерб другим задачам, верным решением будет рекомендовать увеличить в разумных пределах продолжительность пауз: это повлияет только актуальность данных, без риска переполнения источника неотправленными данными.
Подробные выкладки для условий ограниченности решений и некоторые другие вопросы, касающиеся рассмотренной модели, опубликованы в материалах школы-семинара ”Математическое моделирование, численные методы и комплексы программ” имени Е.В. Воскресенского. Посмотреть и скачать статью можно по этой ссылке.
Автор: Дмитрий Пашуткин