Система и способ выполнения очереди запросов в отношении цифровых объектов

Иллюстрации

Показать все

Изобретение относится к серверу и способу выполнения очереди запросов в отношении цифровых объектов. Технический результат заключается в обеспечении устранения конфликтов при последовательном выполнении пересекающихся запросов. В способе выполняют получение с клиентского устройства первого запроса на выполнение первой задачи, содержащего указание на цифровые объекты из первого множества цифровых объектов, разделение первого запроса на множество подзапросов, каждый из подзапросов содержит информацию о первой задаче и указание на цифровые объекты из первого множества цифровых объектов, расчет уникального идентификатора подзапроса на основании содержимого этого подзапроса, сохранение подзапросов и их идентификаторов в хранилище подзапросов, получение с клиентского устройства второго запроса на выполнение второй задачи, содержащего указание на цифровой объект, связанный со вторым запросом, определение наличия в хранилище подзапросов подзапроса, содержащего указание на тот же цифровой объект, указание на который содержится во втором запросе, удаление в найденном подзапросе указания на этот цифровой объект, выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах. 2 н. и 26 з.п. ф-лы, 6 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ

[1] Настоящая технология относится к системе и способу выполнения очереди запросов в отношении цифровых объектов.

УРОВЕНЬ ТЕХНИКИ

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

[3] В заявке на патент США US 20070073720 A1 «Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods» («Почтовый сервер для обработки ограниченного пороговым значением количества сообщений электронной почты определенного пользователя, и относящийся к нему способ») отмечается возможность при направлении пользователем серии заданий для выполнения нескольких одинаковых команд (дубликатов). Такая ситуация возможна, указывается в данном патенте, когда одно взаимодействующее приложение находится в режиме блокировки, а другое взаимодействующее приложение продолжает повторно направлять задание. Формула данного патента предусматривает способ обработки сообщений электронной почты, включая: сохранение программой, управляющей заданиями в отношении сообщений электронной почты, множества заданий в отношении множества пользователей; и в случае, когда количество заданий одного пользователя, обрабатываемых одной программой, управляющей заданиями, в очереди превышает предельно установленное количество, осуществление обработки предельного количества сообщений электронной почты для данного пользователя.

[4] Таким образом, улучшение существующих компьютерных систем обработки очередей заданий возможно.

СУЩНОСТЬ ТЕХНОЛОГИИ

[5] Целью настоящей технологии является устранение или смягчение по меньшей мере некоторых из неудобств, присутствующих на существующем уровне техники.

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

[7] В некоторых вариантах осуществления технологии, способ дополнительно включает в себя выполнение второго запроса.

[8] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.

[9] В некоторых вариантах осуществления технологии, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.

[10] В некоторых вариантах осуществления технологии, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.

[11] В некоторых вариантах осуществления технологии, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.

[12] В некоторых вариантах осуществления технологии, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.

[13] В некоторых вариантах осуществления технологии, алгоритм вероятностной структуры данных является фильтром Блума.

[14] В некоторых вариантах осуществления технологии, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, сервер дополнительно осуществляет блокировку исполнения третьего запроса на выполнение третьей задачи.

[15] В некоторых вариантах осуществления технологии, сервер, после выполнение подзапросов в отношении цифровых объектов из первого множества цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.

[16] В некоторых вариантах осуществления технологии, сервер, после выполнения второго запроса в отношении цифровых объектов, осуществляет разблокировку исполнения третьего запроса на выполнение третьей задачи.

[17] В некоторых вариантах осуществления технологии, цифровые объекты являются сообщениями электронной почты.

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

[19] Другим объектом настоящей технологии является сервер. Сервер включает в себя процессор. Конфигурация процессора настроена таким образом, чтобы сервер мог осуществлять: получение с клиентского устройства по сети передачи данных первого запроса на выполнение первой задачи, первый запрос на выполнение первой задачи, включающий в себя первую задачу и указание на цифровые объекты из первого множества цифровых объектов, связанных с первой задачей; разделение первого запроса на множество подзапросов, каждый из подзапросов относящийся к части цифровых объектов из первого множества цифровых объектов, связанных с первым запросом, каждый из подзапросов, включающий в себя: информацию о первой задаче и указание на цифровые объекты из соответствующей части цифровых объектов; расчет уникального идентификатора подзапроса, причем уникальный идентификатор подзапроса основывается по меньшей мере частично на содержимом соответствующего подзапроса; сохранение подзапросов в хранилище подзапросов совместно с соответствующими им идентификаторами подзапросов; получение с клиентского устройства по сети передачи данных второго запроса на выполнение второй задачи, второй запрос на выполнение второй задачи, включающий в себя вторую задачу и указание на по меньшей мере один цифровой объект, связанный со вторым запросом; основываясь на уникальных идентификаторах подзапросов, хранящихся в хранилище подзапросов, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; обращение к указанному по меньшей мере одному подзапросу из множества подзапросов, и удаление из этого подзапроса указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи; выполнение подзапросов в отношении цифровых объектов, указания на которые содержатся в подзапросах после удаления из по меньшей мере одного подзапроса указанного по меньшей мере одного цифрового объекта.

[20] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер мог дополнительно осуществлять выполнение второго запроса.

[21] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется параллельно с выполнением по меньшей мере одного подзапроса.

[22] В некоторых вариантах воплощения сервера, выполнение второго запроса осуществляется после выполнения по меньшей мере одного подзапроса.

[23] В некоторых вариантах воплощения сервера, разделение первого запроса на множество подзапросов включает в себя определение сервером количества цифровых объектов в первом множестве цифровых объектов, и в котором разделение первого запроса на множество подзапросов осуществляется в случае, когда количество цифровых объектов в первом множестве цифровых объектов превышает пороговое значение.

[24] В некоторых вариантах воплощения сервера, расчет уникального идентификатора подзапроса осуществляется с использованием алгоритма хеширования.

[25] В некоторых вариантах воплощения сервера, определение по меньшей мере одного подзапроса из множества подзапросов, содержащего указания на тот по меньшей мере один цифровой объект, указание на который также содержится во втором запросе на выполнение второй задачи, осуществляется с использованием алгоритма вероятностной структуры данных.

[26] В некоторых вариантах воплощения сервера, алгоритм вероятностной структуры данных является фильтром Блума.

[27] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, в ответ на получение сервером с клиентского устройства третьего запроса на выполнение третьей задачи, мог дополнительно осуществлять блокировку исполнения третьего запроса на выполнение третьей задачи.

[28] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения подзапросов в отношении цифровых объектов из первого множества цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.

[29] В некоторых вариантах воплощения сервера, конфигурация процессора настроена таким образом, чтобы сервер, после выполнения второго запроса в отношении цифровых объектов, мог дополнительно осуществлять разблокировку исполнения третьего запроса на выполнение третьей задачи.

[30] В некоторых вариантах воплощения сервера, цифровые объекты являются сообщениями электронной почты.

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

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

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

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

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

[36] В контексте описания настоящей технологии, термин «компонент программного обеспечения» охватывает программное обеспечение (соответствующее конкретному оборудованию), которое является одновременно необходимым и достаточным для выполнения конкретной указанной функции (функций).

[37] В настоящем описании выражение «носитель информации, предназначенный для использования компьютером» (также кратко именуемый «носитель информации») охватывает носители любого характера и типа, в том числе оперативные запоминающие устройства, постоянные запоминающие устройства, диски (компакт-диски, DVD-диски, гибкие диски, жесткие диски и т.д.), USB-ключи, твердотельные накопители, ленточные накопители и т.д.

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

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

[40] Каждый из вариантов реализации технологии имеет по меньшей мере одну из вышеупомянутых целей и/или один из вышеупомянутых аспектов, но не обязательно все их. Следует иметь в виду, что некоторые аспекты настоящей технологии, которые стали результатом попытки достичь вышеупомянутой цели, могут не достигать этой цели и/или могут достигать другие цели, специально не упомянутые здесь.

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[42] Для лучшего понимания настоящей технологии, а также других ее аспектов и особенностей, предлагается обратиться к нижеследующему описанию, которым следует пользоваться совместно с прилагаемыми чертежами, на которых:

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

[44] Фиг. 2 является схематическим изображением способа разделения первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов на множество подзапросов на выполнение задачи в отношении подмножеств цифровых объектов, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.

[45] Фиг. 3 является схематическим изображением структуры первого запроса пользователя на выполнение задачи в отношении множества цифровых объектов, и структуры подзапросов, образованных в результате разделения указанного первого запроса, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.

[46] Фиг. 4 является схематическим изображением структуры хранения подзапросов в хранилище подзапросов с использованием Апачи Зукипер™, реализованной в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.

[47] Фиг. 5 является блок-диаграммой способа 500, выполняемого на сервере 102, изображенном на Фиг. 1, выполняемого в соответствии с вариантами осуществления настоящей технологии, не ограничивающими ее объем.

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

ПОДРОБНОЕ ОПИСАНИЕ

[49] На Фиг. 1 изображена принципиальная схема сетевой компьютерной системы 100, компоненты которой находятся в связи друг с другом с помощью сети 112 передачи данных.

[50] Важно иметь в виду, что сетевая компьютерная система 100 представлена как наглядный вариант осуществления настоящей технологии. Таким образом, нижеследующее описание должно рассматриваться исключительно как описание наглядных примеров настоящей технологии. Это описание не предназначено для определения объема или установления границ настоящей технологии. Некоторые полезные примеры модификаций сетевой компьютерной системы 100 также могут быть охвачены нижеследующим описанием. Целью этого описания является исключительно оказание помощи в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающий список, и специалистам в данной области техники будет понятно, что возможны и другие модификации. Кроме того, это не должно интерпретироваться так, что там, где это еще не было сделано, т.е. там, где не были изложены примеры модификаций, никакие модификации невозможны, и/или что то, что описано, является единственным способом осуществления этого элемента данной технологии. Как будет понятно специалисту в данной области техники, это, скорее всего, не так. Кроме того, следует иметь в виду, что сетевая компьютерная система 100 представляет собой в некоторых конкретных проявлениях достаточно простой вариант осуществления настоящей технологии, и в подобных случаях представлен здесь с целью облегчения понимания. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.

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

[52] Сервер 102 может представлять собой обычный компьютерный сервер. В примере варианта осуществления настоящей технологии, сервер 102 представляет собой сервер Dell™ PowerEdge™, на котором используется операционная система Microsoft™ Windows Server™.

[53] Излишне говорить, что сервер 102 может представлять собой любое другое подходящее аппаратное и/или прикладное программное, и/или системное программное обеспечение или их комбинацию. В представленном варианте осуществления настоящей технологии, не ограничивающем ее объем, сервер 102 является одиночным сервером. В других вариантах осуществления настоящей технологии, не ограничивающих ее объем, функциональность сервера 102 может быть разделена, и может выполняться с помощью нескольких серверов.

[54] В целом, варианты осуществления сервера 102 хорошо известны в данной области техники. Таким образом, достаточно отметить, что сервер 102 содержит, среди прочего, интерфейс сетевой связи (не изображен) для двусторонней связи по сети 112 передачи данных; и процессор (не изображен), соединенный с интерфейсом сетевой связи, который выполнен с возможностью выполнять различные процедуры, включая те, что описаны ниже. С этой целью процессор может сохранять или иметь доступ к машиночитаемым инструкциям, выполнение которых инициирует процессор, и выполнять различные описанные здесь процедуры.

[55] К задачам сервера 102 относятся прием сообщений электронной почты, предназначенных пользователю 121, их хранение, передача их из ящика пользователю 121, осуществление с сообщениями электронной почты операций, в том числе операций по запросам пользователя 121. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех сообщений электронной почты из определенной папки (например, из папки входящие, отправленные, черновики, нежелательная почта, либо из любой иной папки, созданной пользователем либо предоставляемой по умолчанию провайдером услуг пользователю 121). К таким операциям могут также относиться перемещение сообщений электронной почты из одной папки в другую, пометка всех или некоторых сообщений электронной почты как прочитанных, пометка всех или некоторых сообщений электронной почты как непрочитанных, пометка всех или некоторых сообщений электронной почты как нежелательных, присвоение одному, всем или нескольким сообщениям электронной почты определенной категории, создание новых папок, удаление папок, и многие другие.

[56] В альтернативных воплощениях настоящей технологии, в качестве неограничивающего примера, сетевая компьютерная система 100 может включать в себя вместо сервера 102 либо дополнительно к у серверу 102, сервер облачного хранилища данных, либо иной сервер цифровых объектов, каковыми могут являться отдельные файлы, либо группы файлов, в том числе упорядоченные группы файлов. В качестве неограничивающего примера, к операциям, осуществляемым по запросу пользователя, могут относиться удаление одного, нескольких или всех файлов, хранящихся в определенной папке облачного хранилища данных, перемещение файлов из одной папки в другую, переименование файлов, создание, удаление, переименование папок, перемещение папок, в том числе вкладывание одной папки в другую папку, и многие другие.

[57] Сервер 102 соединен с сетью 112 передачи данных через линию связи (не пронумерована).

[58] Сервер 102 включает в себя носитель информации 104, который может использоваться сервером 102. В принципе, данный носитель информации 104 может быть носителем абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д., а также их комбинации.

[59] Носитель информации 104 сервера 102 предназначен также для хранения модуля 106 почтового сервиса.

[60] Модуль 106 почтового сервиса может представлять собой программу или часть программы, выполняемую на соответствующем оборудовании и способную осуществлять хранение и/или обработку сообщений электронной почты. Оборудование для модуля 106 почтового сервиса может представлять собой один компьютер или одну компьютерную систему, однако ни одно, ни другое не является обязательным в отношении предлагаемой технологии.

[61] В данном контексте, использование термина «модуль 106 почтового сервиса» не означает, что каждая задача (например, предусмотренная принятыми инструкциями или запросами) или какая-либо конкретная задача будет принята, выполнена или ее выполнение будет обеспечено тем же самым программным обеспечением и/или оборудованием; предполагается, что выполнение любой задачи или запроса либо обработка результатов задачи или запроса может осуществлять любое число компонентов программного обеспечения или устройств.

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

[63] Почтовые ящики представляют собой часть дискового пространства, выделяемого на носителе информации 104 для хранения сообщений электронной почты пользователей, в том числе пользователя 121, где на указанной части дискового пространства ящик хранится как обычный каталог файловой системы. При этом сообщения электронной почты представляют собой файлы данных, находящиеся в данном каталоге файловой системы.

[64] Модуль 106 почтового сервиса может включать в себя базы данных (не изображены), обеспечивающие хранение сообщений электронной почты.

[65] Модуль 106 почтового сервиса может также обеспечивать хранение метаданных сообщений электронной почты, в том числе идентификаторов сообщений электронной почты.

[66] Модуль 106 почтового сервиса может включать в себя также системы управления базами данных.

[67] В данном воплощении настоящей технологии, системы управления базами данных реализованы с использованием Апачи Зукипер™ (Apache ZooKeeper™), являющимся централизованным сервисом для поддержки информации о конфигурации, поддержки присвоения наименований, для обеспечения распределенной синхронизации, и для обеспечения групповых сервисов. Апачи Зукипер™ является программным обеспечением Апачи Софтвере Фаундейшн, предоставляющим программное обеспечение с открытым исходным кодом для обеспечения распределенных координации между серверами, а также обеспечивающее ведение регистра имен для крупных распределенных систем. Апачи Зукипер™ включает в себя набор утилит, которые могут использоваться для имплементации блокировок, барьеров, и прочих механизмов координации между серверами.

[68] Особенностью Апачи Зукипер™ является то, что его архитектура предусматривает возможность резервного обеспечения выполнения задач. Если один из ведущих элементов системы (главный сервер 102) дает сбой, то роль главного сервера 102 может взять на себя другой сервер 102.

[69] В альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании любого другого подходящего программного обеспечения. Например, системы управления базами данных могут быть основаны на использовании Redis (REmote Dictionary Server), сетевого журналируемого хранилища данных типа «ключ - значение» с открытым исходным кодом. В других альтернативных воплощениях настоящей технологии, системы управления базами данных могут быть основаны на использовании RabbitMQ. RabbitMQ представляет собой платформу, реализующую систему обмена сообщениями между компонентами программной системы (Message Oriented Middleware) на основе стандарта AMQP (Advanced Message Queuing Protocol).

[70] Модуль 106 почтового сервиса включает в себя также рабочие приложения 108. В данном воплощении настоящей технологии, синхронизацию и координацию работы рабочих приложений 108 обеспечивает Апачи Зукипер™.

[71] Рабочие приложения 108 могут обеспечивать получение, хранение и отправку сообщений электронной почты пользователя 121.

[72] Рабочие приложения 108 могут также обеспечивать получение, по сети передачи данных 112, одного или нескольких запросов пользователя 121 на выполнение задач, направляемых на сервер 102 с клиентского устройства 114.

[73] Запросы пользователя 121 включают в себя собственно задачу, подлежащую выполнению (например, удаление сообщений электронной почты без возможности восстановления), и указание на цифровые объекты из первого множества цифровых объектов, связанные с данной задачей (например, пометка в качестве подлежащих удалению без возможности восстановления всех сообщений электронной почты, полученных с адреса электронной почты spam@spam.com и находящихся в папке «удаленные»).

[74] Рабочие приложения 108 могут также обеспечивать исполнение запросов пользователя 121. В случае получения нескольких запросов пользователя 121 на выполнение задач, рабочие приложения 108 могут осуществлять их исполнение последовательно либо параллельно.

[75] Рабочие приложения 108 могут также осуществлять определение количества цифровых объектов, в отношении которых поступил запрос на выполнение определенной задачи.

[76] Рабочие приложения 108 могут также осуществлять разделение запроса пользователя 121 на множество подзапросов.

[77] Порядок разделения запроса 202 на множество 2020 подзапросов будет проиллюстрирован ниже со ссылками на Фиг. 2 при описании способа 500. Структура запроса 202 и подзапросов 2022, 2024 и 2026 из множества 2020 подзапросов будет ниже проиллюстрирована со ссылками на Фиг. 3 при описании способа 500.

[78] Рабочие приложения 108 могут также обеспечивать расчет уникальных идентификаторов подзапросов.

[79] Рабочие приложения 108, разделив запрос на множество подзапросов и произведя расчет уникальных идентификаторов подзапросов, могут сохранять подзапросы из множества подзапросов вместе с уникальными идентификаторами соответствующих подзапросов в хранилище 110 подзапросов.

[80] Носитель информации 104 сервера 102 предназначен также для хранения данных, сохраненных в хранилище 110 подзапросов. Хранилище 110 подзапросов, в частности, хранит подзапросы 2022, 2024 и 2026 из множества 2020 подзапросов.

[81] В одном из воплощений данной технологии, для обеспечения хранения подзапросов в хранилище 110 подзапросов, используется Апачи Зукипер™. В других воплощениях настоящей технологии могут использоваться библиотеки RabbitMQ, ZeroMQ, либо любое другое подходящее программное обеспечение.

[82] На Фиг. 4 схематически представлена структура хранения подзапросов в хранилище 110 подзапросов с использованием Апачи Зукипер™, которая будет объяснена подробнее при описании этапа 508 способа 500.

[83] При разделении одним из рабочих приложений 108 запроса 202 на множество 2020 подзапросов, рабочее приложение 108 формирует множество 2020 подзапросов и сохраняет подзапросы в вышеуказанное хранилище 110 подзапросов. Хранилище 110 подзапросов доступно для рабочих приложений 108, которые могут считывать информацию из хранилища 110 подзапросов.

[84] Как было отмечено выше, сервер 102, изображенный на Фиг. 1, может быть реализован как один сервер 102 либо как несколько взаимосвязанных серверов 102. Рабочие приложения 108 могут быть распределены между этими серверами 102. Говоря о сервере 102 в целом, важно иметь в виду, что различные воплощения сервера 102 даны исключительно в иллюстрационных целях. Таким образом, специалисты в данной области техники смогут понять подробности других конкретных вариантов осуществления воплощения почтовых серверов, которые могут использоваться для реализации настоящей технологии. Таким образом, представленный здесь пример не ограничивает объем настоящей технологии.

[85] Сервер 102, изображенный на Фиг. 1, соединен с сетью 112 передачи данных через линию связи (не пронумерована). В некоторых вариантах осуществления настоящей технологии, не ограничивающих ее объем, сеть 112 передачи данных связи может представлять собой Интернет. В других вариантах осуществления настоящей технологии, сеть 112 передачи данных может быть реализована иначе - в виде глобальной сети передачи данных, локальной сети передачи данных, частной сети передачи данных и т.п.

[86] Реализация линии связи не ограничена, и будет зависеть от того, какие устройства присоединены к сети 112 передачи данных. В качестве примера, но не ограничения, подключение сервера 102 к сети 112 передачи данных может быть осуществлено по проводной связи (соединение на основе сети Ethernet).

[87] Чер