Надежная передача сообщений с использованием тактовых сигналов с синхронизированными частотами

Иллюстрации

Показать все

Изобретение относится к способам, системам и компьютерным программным продуктам для надежной передачи сообщений с использованием тактовых сигналов с синхронизированными частотами. Технический результат - обеспечение максимально однократной доставки сообщений. Источник и адресат используют тактовые сигналы с синхронизированными частотами. Сообщениям присваиваются значения «времени жизни» (TTL), так что информация состояния обновляется в источнике и удаляется в адресате, когда истекает соответствующее время таймера сообщения, основанное на значении TTL. Соответственно, ресурсы, потребляемые для поддержания информации состояния в адресате, могут быть освобождены за более короткий период времени. Источник может повторно передать информацию о состоянии к адресату сообщения, если релевантная информация о состоянии была удалена. ID экземпляров процессора сообщений гарантируют максимально однократную доставку, если в адресате сообщения произошла непреднамеренная потеря памяти. Варианты осуществления настоящего изобретения могут также использоваться для точно однократной доставки, например, когда значения TTL являются бесконечными и ID экземпляров не используются. 4 н. и 46 з.п. ф-лы, 7 ил.

Реферат

Область техники

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

Предшествующий уровень техники

Компьютерные системы и связанные с ними технологии оказывают влияние на многие аспекты жизни общества. Реально, способность компьютерных систем обрабатывать информацию трансформировала наш образ жизни и деятельности. Компьютерные системы в настоящее время выполняют огромное множество задач (например, обработку текстов, планирование, управление базами данных), которые до внедрения компьютерных систем выполнялись вручную. Позже компьютерные системы стали связывать друг с другом и с другими электронным устройствами для формирования как проводных, так и беспроводных сетей, по которым компьютерные системы и другие электронные устройства могли передавать электронные данные. В результате множество задач, выполняемых в компьютерной системе (например, речевая связь, доступ к электронной почте, управление бытовыми электронными устройствами, просмотр Web-страниц и распечатка документов), включает в себя обмен электронными сообщениями между рядом компьютерных систем и/или других электронных устройств через проводные и/или беспроводные компьютерные сети.

Сети стали в действительности настолько разносторонними, что простая сетевая вычислительная система может осуществлять информационный обмен с любой одной из миллионов других вычислительных систем, распространенных по всему миру, через конгломерат сетей, часто определяемый понятием «Интернет». Такие вычислительные системы могут включать в себя настольные, портативные или планшетные персональные компьютеры, персональные цифровые помощники (PDA), телефоны или любые другие компьютеры, способные осуществлять связь через цифровую сеть.

Для осуществления информационного обмена через сеть одна вычислительная система (упоминаемая здесь как «передающая вычислительная система») формирует или иным образом получает доступ к электронному сообщению и передает электронное сообщение по сети к другой вычислительной системе (упоминаемой здесь как «приемная вычислительная система»). Электронное сообщение может считываться человеком-пользователем, если электронное сообщение представляет собой, например, сообщение электронной почты или сообщение службы мгновенного обмена сообщениями, или может считываться вместо этого приложением, исполняемым на принимающей вычислительной системе. Электронное сообщение может формироваться приложением, исполняемым на передающей вычислительной системе, возможно, с участием человека-пользователя.

Хотя такой электронный обмен сообщениями предпочтительным образом позволяет вычислительным системам обмениваться информацией, сети иногда не могут доставить электронное сообщение. В зависимости от важности электронного сообщения, это может оказаться пагубным, а иногда иметь катастрофические последствия. Соответственно, разрабатываются технологии надежной электронной передачи сообщений.

Цель технологий надежной электронной передачи сообщений состоит в доставке электронного сообщения от источника к адресату по коммуникационной сети, которая может терять, дублировать, переупорядочивать и задерживать сообщения. Некоторые электронные сообщения могут доставляться и обрабатываться многократно без какого-либо ущерба. Однако это не имеет места для всех сообщений. Самый надежный способ состоит в том, чтобы гарантировать, что сообщение будет доставлено однократно или не будет доставлено совсем.

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

Для уменьшения количества сообщений квитирования, которые необходимо передавать, разработано совокупное подтверждение. При совокупном подтверждении передающая вычислительная система присваивает последовательный номер каждому электронному сообщению в сессии. Последовательный номер для данного электронного сообщения в типовом случае получает приращение на единицу по сравнению с предшествующим электронным сообщением в сессии. Совокупное подтверждение, возвращаемое к передающей вычислительной системе, включает в себя последний последовательный номер непрерывной последовательности последовательных номеров, представляющих успешно принятые сообщения. Например, предположим, что принимающая вычислительная система приняла электронные сообщения, имеющие последовательные номера от 1 до 50 и от 55 до 99, но не приняла сообщения, имеющие последовательные номера от 51 до 54. Принимающая вычислительная система может возвратить совокупное сообщение подтверждения приема, идентифицирующее только принятые последовательности.

Однако, если передающая вычислительная система не смогла принять сообщение подтверждения приема (как индивидуальное, так и совокупное), то для передающей вычислительной системы может оказаться невозможным определить, была ли безуспешной доставка электронного сообщения или доставка сообщения подтверждения приема. То есть передающая вычислительная система находится в «сомнении», приняла ли принимающая вычислительная система электронное сообщение. В некоторых средах может быть приемлемой доставка и обработка электронных сообщений много раз. Таким образом, в этих средах (например, в связанных с передачей статического контента на Web-основе) передающая вычислительная система может повторно передавать электронное сообщение, если соответствующее сообщение подтверждения приема не принято. Однако в других средах, может оказаться неприемлемым многократно доставлять и/или обрабатывать электронные сообщения. Таким образом, в этих средах (например, в связи с передачей банковских транзакций) передающая вычислительная система не будет повторно передавать электронное сообщение, если соответствующее сообщение подтверждения приема не принято.

Для освобождения передающей вычислительной системы от обязанности принятия решения о повторной передаче, которое может оказаться некорректным, разработаны механизмы обнаружения дублирования. Механизмы обнаружения дублирования снижают вероятность обработки принимающей вычислительной системой одного и того же сообщения (или последовательности сообщений) более чем один раз. Для реализации механизмов обнаружения дублирования многие принимающие вычислительные системы сохраняют информацию состояний, связанную с передающими вычислительными системами. Например, приемная вычислительная система может сохранять индикацию (например, в базе данных или в списке) всех предшествующих сообщений (или последовательности сообщений), которые были ранее обработаны (например, идентифицированы посредством IP-адреса передающей вычислительной системы и номером последовательности). Таким образом, если принятое сообщение присутствует в списке (т.е. сообщение было ранее принято), то принятое сообщение игнорируется, и повторная обработка этого сообщения исключается. Приемные вычислительные системы в типовом случае сохраняют информацию о состоянии в течение длительных периодов времени, таких, например, как длительность сессии (потенциально бесконечно длительный период времени), чтобы существенно увеличить шансы обнаружения дублирования.

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

Некоторые другие надежные технологии передачи сообщений используют часы, которые синхронизированы с абсолютным временем. Однако синхронизация часов с абсолютным временем требует протокола синхронизации и высокой связности. В некоторых сетях, таких как, например, Интернет, высокая связность, по существу, невозможна, поскольку компьютерные системы часто соединяются с сетью и отсоединяются от сети. Кроме того, надежные технологии передачи сообщений с использованием часов с абсолютно синхронизированным временем могут быть более дорогостоящими для реализации. Соответственно, надежные технологии передачи сообщений, которые поддерживают состояние, используются более часто и часто требуются, когда невозможно обеспечение согласованности с более строгими операционными параметрами синхронизации с абсолютным временем. Таким образом, многие сетевые компьютерные системы требуются для распределения потенциально значительных ресурсов для поддержания состояния, связанного с информационным обменом с другими компьютерными системами. Поэтому выгодными были бы системы, способы и компьютерные программные продукты, которые облегчают надежную передачу сообщений более ресурсосберегающим способом.

Краткая сущность изобретения

Вышеуказанные проблемы, свойственные предшествующему уровню техники, преодолены с помощью принципов настоящего изобретения, которые направлены на создание способов, систем и компьютерных программных продуктов для надежной передачи сообщений с использованием тактовых сигналов с синхронизированными частотами. В некоторых вариантах осуществления адресат сообщения обрабатывает первую копию сообщения, имеющего идентификатор (ID) сообщения и значение TTL («время жизни»). Адресат сообщения обновляет кэш взаимодействия для указания, что сообщение, имеющее ID сообщения, обработано. Адресат сообщения получает вторую копию сообщения (также имеющую ID сообщения) после обработки первой копии сообщения и перед истечением времени таймера обратного отсчета, основанного на значении TTL. Адресат сообщения отклоняет вторую копию сообщения на основе кэша взаимодействия, указывающего, что сообщение, имеющее ID сообщения, уже обработано.

В других вариантах осуществления адресат сообщения обрабатывает первую копию сообщения, имеющую ID взаимодействия, ID сообщения и значение TTL. Адресат сообщения удаляет и продвигает информацию, связанную с ID взаимодействия, из своего кэша взаимодействия в ответ на истечение последнего времени таймера обратного отсчета, основанного на значении TTL, определенного в обрабатываемых сообщениях. Адресат сообщения принимает вторую копию сообщения после истечения времени таймера обратного отсчета. Адресат сообщения посылает запрос на указание продвижения ID взаимодействия соответствующему источнику сообщения, который имеет частоту тактового сигнала, которая синхронизирована с частотой тактового сигнала адресата сообщения. Адресат сообщения получает указание, что взаимодействие продвинуто в такой степени, что сообщение, имеющее ID сообщения, может игнорироваться. Адресат сообщения игнорирует вторую копию сообщения.

В других вариантах осуществления адресат сообщения получает первую копию сообщения, которая соответствует ID предыдущего экземпляра. Затем адресат сообщения обрабатывает первую копию сообщения в экземпляре процессора сообщения, который был инициализирован, чтобы иметь ID предыдущего экземпляра. Адресат сообщения обнаруживает, что содержимое памяти, используемой компьютерной системой адресата, было непреднамеренно потеряно. Адресат сообщения повторно инициализирует экземпляр процессора сообщения для получения ID обновленного экземпляра, отличающегося от ID прежнего экземпляра. Адресат сообщения получает вторую копию сообщения после повторной инициализации экземпляра процессора сообщения, причем вторая копия сообщения соответствует ID прежнего экземпляра. Адресат сообщения отклоняет вторую копию сообщения, поскольку вторая копия сообщения соответствует ID экземпляра, который отличается от ID обновленного экземпляра.

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

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

Краткое описание чертежей

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

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

Фиг.2 - первый приведенный для примера поток сообщений, обеспечивающий надежную обработку передачи сообщений, когда ID сообщения поддерживается в кэше взаимодействия в адресате сообщения.

Фиг.3 - второй приведенный для примера поток сообщений, обеспечивающий надежную обработку сообщения, когда ID сообщения перекачивается из кэша взаимодействия в адресате сообщения.

Фиг.4 - третий приведенный для примера поток сообщений, обеспечивающий надежную обработку сообщения, когда адресат сообщения испытывает непреднамеренные потери данных в памяти.

Фиг.5 - подходящая операционная среда, соответствующая принципам настоящего изобретения.

Фиг.6 - примерная блок-схема способа, используемого источником сообщения для надежной доставки сообщения.

Фиг.7 - примерная блок-схема способа, используемого адресатом сообщения для надежной обработки сообщения.

Детальное описание предпочтительных вариантов осуществления изобретения

Описанные выше проблемы, свойственные предшествующему уровню техники, преодолеваются с помощью принципов настоящего изобретения, которое направлено на способы, системы и компьютерные программные продукты для надежной передачи сообщений с использованием тактовых сигналов с синхронизированными частотами. В некоторых вариантах осуществления адресат сообщения обрабатывает первую копию сообщения, имеющего ID сообщения и значение TTL. Адресат сообщения обновляет кэш взаимодействия для указания, что сообщение, имеющее ID сообщения, обработано. Адресат сообщения принимает вторую копию сообщения (также имеющую ID сообщения) вслед за обработкой первой копии сообщения и перед истечением времени таймера обратного отсчета, соответствующего значению TTL. Адресат сообщения отклоняет вторую копию сообщения на основе кэша взаимодействия, указывающего, что сообщение, имеющее ID сообщения, было ранее обработано.

В других вариантах осуществления адресат сообщения обрабатывает первую копию сообщения, имеющую ID взаимодействия, ID сообщения и значение TTL. Адресат сообщения удаляет информацию продвижения, связанную с ID взаимодействия, из кэша взаимодействия в ответ на истечение последнего времени таймера обратного отсчета, соответствующего значению TTL, определенному в обработанных сообщениях. Адресат сообщения принимает вторую копию сообщения вслед за истечением времени таймера обратного отсчета. Адресат сообщения посылает запрос на указание продвижения ID взаимодействия соответствующему источнику сообщения, который имеет частоту тактового сигнала, синхронизированную с частотой тактового сигнала адресата сообщения. Адресат сообщения принимает указание на то, что взаимодействие продвинулось настолько, что сообщение, имеющее ID сообщения, может игнорироваться. Адресат сообщения игнорирует вторую копию сообщения.

В других вариантах осуществления адресат сообщения принимает первую копию сообщения, которая соответствует ID предыдущего экземпляра. Затем адресат сообщения обрабатывает первую копию сообщения экземпляром процессора сообщений, который был инициализирован для получения ID предыдущего экземпляра. Адресат сообщения обнаруживает, что содержание памяти, используемой компьютерной системой адресата, было непреднамеренно потеряно. Адресат сообщения повторно инициализирует экземпляр процессора сообщений для получения ID обновленного экземпляра, отличающегося от ID предыдущего экземпляра. Адресат сообщения принимает вторую копию сообщения вслед за повторной инициализацией экземпляра процессора сообщения, причем вторая копия сообщения соответствует ID предыдущего экземпляра. Адресат сообщения отклоняет вторую копию сообщения, поскольку вторая копия сообщения соответствует ID экземпляра, который отличается от ID обновленного экземпляра.

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

Варианты осуществления, в рамках объема изобретения, включают в себя машиночитаемые носители для хранения исполняемых компьютером команд или структур данных. Такие машиночитаемые носители могут представлять собой любые доступные носители, доступ к которым может осуществляться универсальной или специализированной компьютерной системой. К примеру, но не в качестве ограничения, машиночитаемые носители могут содержать физические носители для хранения информации, такие как оперативная память (RAM, ОЗУ), постоянная память (ROM, ПЗУ), электронно-стираемая программируемая постоянная память (EEPROM, ЭСППЗУ), ПЗУ на компакт-дисках (CD-ROM) или иные устройства памяти на оптических дисках, устройства памяти на магнитных дисках или иные магнитные устройства памяти, или любые иные носители, которые могут быть использованы для хранения желательного средства программного кода в форме исполняемых компьютером команд, машиночитаемых команд или структур данных, и к которым может получать доступ универсальная или специализированная компьютерная система.

В этом описании в последующей формуле изобретения термин «сеть» определяется как один или более каналов передачи данных, которые обеспечивают возможность транспортировки электронных данных между компьютерными системами и/или модулями. Когда информация передается или обеспечивается по сети или по другому коммуникационному соединению (проводному, беспроводному или комбинации проводного или беспроводного соединений) на компьютерную систему, соединение надлежащим образом рассматривается как машиночитаемый носитель (среда передачи). Таким образом, любое соединение надлежащим образом определяется как машиночитаемый носитель. Комбинации вышеуказанного также должны быть включены в объем машиночитаемых носителей. Исполняемые компьютером команды содержат, например, команды и данные, которые обуславливают исполнение универсальной компьютерной системой или специализированной компьютерной системой некоторой функции или группы функций. Исполняемые компьютером команды могут быть, например, командами в двоичном формате, в промежуточном формате, например, на языке ассемблера или даже в форме исходного кода.

В этом описании и в последующей формуле изобретения термин «компьютерная система» определен как один или более модулей программного обеспечения, один или более модулей аппаратных средств или как комбинации указанного, которые работают совместно для исполнения операций над электронными данными. Например, определение компьютерной системы включает в себя компоненты аппаратных средств персонального компьютера, а также модули программного обеспечения, такие как операционная система персонального компьютера. Физическая конфигурация модулей не важна. Компьютерная система может включать в себя один или более компьютеров, связанных через сеть. Аналогичным образом, компьютерная система может включать в себя одиночное физическое устройство (такое как мобильный телефон или PDA), где внутренние модули (такие как память и процессор) работают вместе для выполнения операций над электронными данными.

Специалистам в данной области техники должно быть понятно, что изобретение может быть реализовано в сетевых вычислительных средах с множеством типов конфигураций компьютерных систем, включая персональные компьютеры, портативные компьютеры, карманные устройства, мультипроцессорные системы, микропроцессорную или программируемую бытовую электронику, сетевые РС, миникомпьютеры, компьютеры-мэйнфреймы, мобильные телефоны, PDA, пейджеры и т.п. Изобретение также может быть реализовано в средах распределенных систем, где локальные и удаленные компьютерные системы, которые связаны (проводными каналами передачи данных, беспроводными каналами передачи данных или комбинацией проводных или беспроводных каналов передачи данных) через сеть, выполняют задачи. В среде распределенной системы программные модули могут находиться как в локальных, так и в удаленных устройствах памяти.

В этом описании и в последующей формуле изобретения термин «источник сообщения» определен как инициатор надежного обмена при передаче сообщений. Источник сообщения может представлять как приложение, которое создало сообщение, подлежащее надежной доставке, так и инфраструктуру, которая управляет надежным обменом. В модели обработки протокола SOAP (Простой протокол доступа к объектам) источником является первоначальный отправитель.

В этом описании и в последующей формуле изобретения термин «адресат сообщения» определен как цель надежного обмена при передаче сообщений. Адресат сообщения может представлять как приложение, которое использует сообщение, так и инфраструктуру, которая управляет надежным обменом. В модели обработки протокола SOAP адресатом является конечный получатель.

В этом описании и в последующей формуле изобретения термин «источник сообщения» и «адресат сообщения» имеют «синхронизированную частоту тактового сигнала», когда частота тактовых импульсов источника сообщения и адресата сообщения находится в пределах определенного верхнего предела для допустимого ухода частот.

Уход (дрейф) может быть определен различными способами. По отношению к всемирному универсальному времени дрейф может быть определен следующим образом:

Дрейф = |(S2 - S1) - (D2 - D1)|/(C2 - C1),

а верхний предел может быть определен как

верхний предел = Min (задержка одностороннего распространения) /Max (TTL).

Здесь S1 и D1 являются значениями тактового сигнала в источнике и в адресате, соответственно, в случае, когда универсальное время имеет значение C1, и S2, и D2 являются значениями тактового сигнала в источнике и в адресате, соответственно, в следующем случае, когда универсальное время имеет значение C2. Дрейф является допустимым (то есть тактовые сигналы источника и адресата могут рассматриваться как имеющие синхронизированные частоты), когда Дрейф < Верхнего предела.

Задержка одностороннего распространения измеряется от адресата к источнику (например, определяется задержкой сообщения “REQACKACK”, инициированного адресатом для неизвестного источника). Значение TTL представляет собой TTL, определенное для сообщения, например, как некоторое целое кратное задержки двустороннего распространения. Таким образом, большие значения TTL для конкретного сообщения приводят в результате к более жестким требованиям к скорости дрейфа тактовых сигналов источника и адресата. С другой стороны, меньшие значения TTL для конкретного сообщения приводят в результате к менее жестким требованиям к скорости дрейфа тактовых сигналов источника и адресата.

Относительно всемирного универсального времени дрейф, с точки зрения источника, может быть выражен следующим образом:

Дрейф Источника = (D2 - D1)/(S2 - S1).

Дрейф, с точки зрения адресата, может быть выражен следующим образом:

Дрейф Адресата = (S2 - S1)/(D2 - D1),

И верхний предел может быть выражен следующим образом:

Верхний Предел = Min (задержка одностороннего распространения) /Max (TTL).

Вышеуказанное предполагает, что оба тактовых сигнала увеличивают свою частоту. То есть S2>S1 и D2>D1. В некоторых случаях, например когда тактовый сигнал адресата увеличивает свою частоту, может иметь место соотношение, когда Дрейф Источника >1 и Дрейф Адресата <1. Дрейф допустим (то есть тактовые сигналы источника и адресата могут рассматриваться как имеющие синхронизированные частоты), когда Дрейф Адресата < Верхнего Предела. Задержка одностороннего распространения измеряется от адресата к источнику. Значение TTL представляет собой величину TTL, определенную по сообщению, например, как некоторое кратное значение задержки двустороннего распространения.

Понятно, что варианты осуществления изобретения не требуют, чтобы тактовые сигналы были синхронизированы с абсолютным временем.

Архитектура передачи сообщений

На фиг.1 представлен пример компьютерной архитектуры 100, которая обеспечивает надежную передачу сообщений с использованием тактовых сигналов с синхронизированными частотами. Как показано в компьютерной архитектуре 100, компьютерные системы 102, 103, 104, 106 и 107 соединены с сетью 101. Сеть 101 может представлять собой локальную сеть (LAN), сеть широкого охвата (WAN) или даже Интернет. Компьютерные системы, соединенные с сетью 101, могут принимать данные от других компьютерных систем и посылать данные к другим компьютерным системам, соединенным с компьютерной архитектурой 101. Соответственно, компьютерные системы 102, 103, 104, 106 и 107, а также другие подсоединенные компьютерные системы, могут обмениваться по сети 101 данными, связанными с сообщениями (например, дейтаграммами IP-протокола и других протоколов более высокого уровня, таких как Протокол управления передачей (TCP), Протокол пересылки гипертекста (HTTP), Простой протокол пересылки почты (SMTP) и т.д.).

Компьютерные системы 102, 103, 104, 106 и 107 включают в себя соответствующие кэши 122, 123, 124, 126 и 127 взаимодействия, соответственно. Каждый из кэшей 122, 123, 124, 126 и 127 взаимодействия может поддерживать списки идентификаторов (ID) взаимодействия, соответствующих последовательностям взаимодействия с другими компьютерными системами и ID сообщений, которые обрабатывались для каждой последовательности взаимодействия. Каждый из кэшей 122, 123, 124, 126 и 127 взаимодействия также может поддерживать значения «времени жизни» (TTL) для каждого сообщения. Значение TTL может указывать на длительность времени, в течение которого источник пытается доставить сообщение адресату. Если время, соответствующее значению TTL, истекает в источнике, то источник может указать, что сообщение больше не требует подтверждения приема (например, в результате того, что источник рассматривает его как потерянное). Если время, соответствующее значению TTL, истекает в адресате, то адресат может затем удалить соответствующий ID сообщения и/или ID взаимодействия из кэша взаимодействия (при этом освобождая ресурсы системы).

Компьютерные системы 102, 103, 104, 106 и 107 включают в себя соответствующие часы (источники тактовых сигналов) 112, 113, 114, 116 и 117, соответственно. Каждые из часов 112, 113, 114, 116 и 117 могут иметь синхронизированные частоты. То есть часы идут во времени, по существу, с одной и той же частотой. Например, может иметься общая согласованность для часов 112, 113, 114, 116 и 117 в определении секунд, минут, часов, дней, месяцев, лет и т.д. Таким образом, даже если абсолютное время множества часов не синхронизированы, относительные изменения во времени между множеством часов могут быть согласованными.

Соответственно, когда, спустя некоторый период времени, первые часы уходят вперед на несколько минут, будет иметь место весьма высокая вероятность того, что вторые часы (имеющие частоту, синхронизированную с первыми часами) уйдут вперед на то же самое число минут. Например, может быть так, что первые часы имеют абсолютное время 5:05 РМ, а вторые часы имеют абсолютное время 5:07 РМ. Если, спустя шесть минут первые часы покажут время 5:11 РМ, то будет весьма вероятно, что вторые часы покажут время 5:13 РМ.

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

В некоторых вариантах осуществления адресат может забыть, что он обрабатывал некоторое сообщение (например, в результате удаления данных взаимодействия сообщения из памяти) после того, как источник принял решение, что сообщение (А) было обработано или (В) было потеряно. На практике событие (А) может возникнуть, когда адресат принимает заголовок АСКАСК (от источника), содержащий соответствующий ID сообщения. На практике событие (В) может возникнуть, когда время, соответствующее значению TTL, истекло. То есть адресат знает, что источник рассматривает сообщение как потерянное, если его время, соответствующее значению TTL, истекло. В некоторых вариантах осуществления сообщения квитируются спустя минимальное время задержки двустороннего распространения (путем посылки сообщения вслед за приемом подтверждения). Таким образом, значение TTL может быть установлено на величину, превышающую задержку двустороннего распространения. На практике значение TTL устанавливается на некоторое кратное значение задержки двустороннего распространения для поддержки некоторых повторных передач (или на бесконечную величину для обеспечения точной доставки).

Может иметь место ситуация, когда компьютерная система 107 включает в себя сервер (например, Web-сервер), который принимает электронные сообщения от большого количества клиентов (например, Web-браузеров), включая клиентов на компьютерных системах 102, 103, 104 и 106. Соответственно, компьютерная система 107 может выполнить процесс обработки сообщения (например, экземпляр 137 процесса обработки сообщения), который осуществляет обработку сообщений, принятых от любого из клиентов.

Алгоритм источника сообщений

Фиг.6 иллюстрирует примерную блок-схему способа 600 для источника сообщений, обеспечивающего надежную доставку сообщения. Способ 600 включает в себя действие добавления ID взаимодействия, номера последовательности и значения TTL к сообщению. Например, компьютерная система 106 может добавить ID 152 взаимодействия, отсчет 153 и значение 154 TTL к сообщению 151. Соответственно, сообщение будет иметь формат Msg(ID, N, TTL, Data), в котором данные подкрепляются информацией отслеживания, используемой инфраструктурой надежной передачи сообщений.

Идентификатор ID уникальным образом идентифицирует взаимодействие между источником сообщения и адресатом сообщения. Номер N сдвига сообщения может представлять собой целочисленное значение, идентифицирующее сдвиг (например, порядковый ранг) сообщения во взаимодействии между источником сообщения и адресатом сообщения. Совместно ID взаимодействия и номер N сдвига сообщения могут уникальным образом идентифицировать надежное сообщение. Значение TTL идентифицирует длительность, в течение которой источник сообщения будет пытаться доставить сообщение надежным образом.

Способ 600 включает в себя действие запуска таймера обратного отсчета с длительностью, равной значению TTL (действие 602). Например, компьютерная система 106 может начать обратный отсчет с длительностью значения 154 TTL. Способ 600 включает в себя действие передачи сообщения. Например, компьютерная система 106 (источник сообщения) может передать сообщение 151 к компьютерной системе 107 (адресату сообщения).

Может иметь место ситуация, когда источник сообщения устанавливает значение TTL на величину, равную кратному значению задержки двустороннего распространения между источником сообщения и адресатом сообщения. В течение определенного интервала (например, равного задержке двустороннего распространения) источник сообщения может попытаться повторно передать сообщение (например, сообщение 151). Например, если задержка двустороннего распространения между компьютерными системами 106 и 107 равна 10 мс, то значение 154 TTL может быть установлено на 60 мс. Установка значения 154 TTL на 60 мс позволила бы осуществить, по меньшей мере, шесть повторных передач (в зависимости от конкретного интервала).

Способ 600 включает в себя действие обнаружения истечения интервала повторной передачи (действие 604). Например, компьютерная система 106 может обнаружить истечение интервала повторной передачи, соответствующего сообщению 151.

Способ 600 включает в себя действие определения того, было ли квитировано сообщение (блок 605 принятия решения). Если сообщение было квитировано («да» в блоке 605 принятия решения), то в способе 600 выполняется действие 607. Например, компьютерная система 106 может принять сообщение подтверждения АСК 161, указывающее ID 152 взаимодействия и отсчет 153, от компьютерной с