СИСТЕМА ОБРАБОТКИ ЗАПРОСОВ, СПОСОБ ОБРАБОТКИ ЗАПРОСОВ И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ, СОДЕРЖАЩИЙ ИНСТРУКЦИИ ДЛЯ ОБРАБОТКИ ЗАПРОСОВ
REQUEST PROCESSING SYSTEM, REQUEST PROCESSING METHOD AND COMPUTER-READABLE MEDIUM HAVING REQUEST PROCESSING INSTRUCTIONS

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к обработке запросов. Более конкретно, настоящее изобретение относится к способу обработки запросов и компьютерному программному продукту, содержащему инструкции, при выполнении которых реализуется способ обработки запросов, а также системе, реализующей способ обработки запросов.
УРОВЕНЬ ТЕХНИКИ
В настоящее время известен «прямолинейный» способ обработки запросов. Некоторое программно-аппаратное решение (далее - модуль обработки) в состоянии принять одновременно некоторое количество (N) запросов. Под это в модуле обработки резервируется пул рабочих нитей (thread working pool), каждая из которых может находиться в одном из двух состояний: либо состоянии обработки запроса («занята»), либо ожидания запроса, который она может исполнить («свободна»).
При передаче запроса модулю обработки первая же свободная рабочая нить этого пула получает его на исполнение. В худшем случае (при полной загрузке) все эти нити будут одновременно исполнять поступившие запросы, для чего им потребуется N соединений как с собственными ресурсами (например, с базой данных), так и с внешними,  когда задача включает в себя подачу запроса к другой системе. Если соединения с используемыми ресурсами лимитированы, т.е. их меньше, чем N (число рабочих нитей пула), то рабочие нити пула выстраиваются в очередь за ресурсом. Обычно эта очередь реализуется с помощью стандартных средств синхронизации, например семафоров: рабочие нити приостанавливают свое исполнение, пока требуемый ресурс не освободится. Этот способ был принят в качестве ближайшего аналога (прототипа) настоящего изобретения.
Известный способ обработки запросов имеет ряд недостатков.
Во-первых, в процессе его реализации рабочая нить, ожидающая ресурс, не работает, даже когда есть другие задачи, не требующие занятого ресурса. То есть значительные ресурсы могут быть заняты ожиданием, что приводит к задержкам обработки запросов. Во-вторых, при реализации известного способа в случае сбоя сервера все промежуточные результаты теряются, т.к. алгоритм запроса реализован как последовательно исполняющаяся функция. Задача сохранения промежуточных результатов и реализации алгоритма, который бы после сбоя возобновлял работу с последней сохраненной точки, ведет к значительному усложнению программного кода и его последующего сопровождения и развития. В-третьих, запрос, начавший исполняться одним модулем обработки, исполняется им до конца - он не может быть передан другому модулю обработки для балансировки нагрузки. В результате возможна несимметричная загрузка узлов системы.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Задача, стоявшая перед разработчиками настоящего изобретения, заключалась в создании способа обработки запросов, который бы не обладал вышеуказанными недостатками.
Для решения поставленной задачи разработчиками предпринято следующее. Обработка запросов логически разделена на части, типизированные и названные фазами таким образом, что для обработки каждой фазы определенного типа становится возможным применить обособленный логически связанный алгоритм, при этом логика разделения определяется контекстом обработки запросов, в том числе используемыми для обработки запроса ресурсами, и, в целом, может быть направлена на сокращение среднего времени обработки запросов. Модули обработки специализированы не на обработке запросов целиком, а выполнены с возможностью обработки фаз определенных типов (являются средствами обработки фаз определенных типов), при этом они могут быть обособленны как на программном, так и на аппаратном уровне, кроме того, локальный пул рабочих нитей средства обработки выделен для каждого типа фаз, для обработки которых оно предназначено. Каждая фаза полностью обрабатывается одним из предназначенных для обработки фаз такого типа средством обработки с сохранением результата обработки. В случае неудовлетворительного результата обработки запроса или сбоя в процессе обработки, проблемная фаза может быть обработана повторно без необходимости повторно обрабатывать уже обработанные фазы.
Технический результат настоящего изобретения заключается в сбалансированности нагрузки на модули выполнения, повышении отказоустойчивости системы обработки запросов, а также в обеспечении возможности практически неограниченного наращивания ресурсов системы.
Указанный технический результат достигается тем, что способ обработки запросов включает в себя прием 1 запроса, который может быть обработан посредством выполнения конечного числа логически обособленных фаз; помещение 2 запроса в очередь на обработку; отличающийся тем, что способ обработки также включает в себя извлечение 3 фазы из очереди для обработки любым свободным средством обработки фазы, способным обработать данную фазу запроса; обработка 4 извлеченной из очереди для обработки фазы; сохранение 5 результатов обработки; в случае успешной обработки данной фазы - помещение следующей фазы запроса в очередь на обработку или, если (проверка 7 того, была ли обработанная фаза последней фазой запроса) была обработана последняя фаза, завершение 8 обработки запроса; в случае (проверка 6 успешности обработки фазы) неуспешной обработки фазы - возврат 9 данной фазы в очередь на обработку; в случае нештатного завершения обработки запроса - возобновление обработки данного запроса, начиная с фазы, следующей за последней успешно выполненной фазой.
Сбалансированность нагрузки на модули обработки при таком способе обработки запросов достигается тем, что к исполнению фазы привлекается любой свободный модуль обработки, способный обработать данную фазу, то есть фаза обрабатывается от начала до конца одним модулем обработки, но запрос исполняется тем модулем обработки, который «свободен». За счет этого запросы «мигрируют» с загруженных модулей обработки на простаивающие, тем самым обеспечивая балансировку нагрузки между модулями обработки.
Повышение отказоустойчивости системы при таком способе обработки запросов достигается тем, что в случае сбоя в ходе обработки запроса, ранее выполненные фазы запроса повторно обрабатывать не потребуется, и обработку запроса можно будет продолжить с фазы, на которой произошел сбой.
Возможность практически неограниченного наращивания вычислительных мощностей системы при таком способе обработки запросов обеспечивается за счет того, что дополнительные модули обработки, как и модули хранения данных, могут включаться в систему, работающую по заявленному способу, в соответствии с потребностями задачи, в целях увеличения числа одновременно выполняющихся запросов.
В дальнейшем заявленное изобретение будет детально описано со ссылками на прилагаемые чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 показывает блок-схему обработки фазы запроса согласно настоящему изобретению.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
В предпочтительном варианте осуществления настоящего изобретения настоящий способ обработки запросов может быть использован в веб-сервисах, например системах продаж и обслуживания, задачи которых определяют необходимость в многоэтапной обработке информации, с требованием к высокой устойчивости и производительности. Примером системы, использующей настоящее изобретение, может служить автоматизированная система приема платежей, предназначенная для приема платежей в счет оплаты приобретаемых товаров и услуг, где запросами являются команды на выполнение платежей, поступающие от клиентских платежных терминалов, а фазами - процессы формирования и отправка команд на списание денежных средств, на их зачисление на лицевые счета получателей, на передачу данных о выполненной оплате поставщикам услуг и т.п. Сервер базы данных содержит в себе базу данных, в которой содержится информация о клиентах, серверах приложений поставщиков, а также подлежащие обработке запросы. Сервер базы данных выполнен с возможностью приема запросов, их обработки и отправки на серверы приложений (модули обработки) поставщиков. Таким образом, система, работающая согласно настоящему изобретению, представляет собой конвейер обработки запросов.
После того как выполнен прием 1 запроса, который может быть обработан посредством выполнения конечного числа логически обособленных фаз, выполняется помещение 2 запроса в очередь на обработку очередной (в данном частном случае - первой) фазы.
Дополнительно может быть выполнена проверка принятого запроса на соответствие установленным правилам. Такими правилами может быть, например, корректность заполнения запроса. При отрицательном результате проверки обработка запроса может не выполняться. Кроме того, запрос, не прошедший проверку, может также подвергнуться альтернативному варианту обработки, однако это выходит за рамки настоящего изобретения. При положительном результате проверки запроса на соответствие установленным правилам может выполниться проверка на предмет того, не является ли обрабатываемый запрос дубликатом одного из ранее принятых. При положительном результате этой проверки обработка запроса может не выполняться.
Свободные рабочие нити средств обработки, предназначенные для обработки фаз такого типа, регулярно обращаются к очереди для извлечения фаз в целях обработки. Таким образом, в какой-то момент времени выполняется извлечение 3 фазы, помещенной в очередь, свободной нитью подходящего модуля обработки (приоритетов друг перед другом модули обработки не имеют). При этом рабочая нить резервируется (переходит из состояния «свободна» в состояние «занята»).
Далее рабочей нитью модуля обработки выполняется обработка 4 фазы и сохранение 5 результата ее обработки в базе данных. Дальнейшие действия зависят от результата проверки 6 успешности обработки фазы.
Если фаза обработана успешно, то дальнейшие действия зависят от проверки 7 того, была ли обработанная фаза последней фазой запроса. Необходимо понимать, что данная проверка 7 может быть сведена к проверке наличия в очереди на обработку невыполненной " фазы запроса. То есть проверка 7 может быть организована за счет очередности выполнения фаз. Если проверка 7 дала положительный результат, то выполняется завершение обработки запроса. В противном случае выполняется извлечение следующей фазы запроса, помещенной в очередь на обработку. В случае успешной обработки фазы рабочая нить высвобождается (переходит в состояние «свободна»).
Если по результатам проверки 6 фаза не была обработана успешно, в зависимости от условий, обработка фазы может быть выполнена повторно или работа над запросом может быть прекращена. Такие условия могут быть связаны с характером сбоя, с причинами неуспешности обработки фазы, а также со свойствами самой фазы.
Если обработку неуспешно обработанной фазы необходимо повторить, выполняется помещение 9 этой фазы в очередь на обработку. При этом для этой фазы может быть задан тайм-аут, по истечении которого фаза может быть вновь извлечена из очереди на обработку. Определение величины тайм-аута для фазы может быть выполнено с учетом числа попыток выполнить эту фазу и/или других условий. В обоих случаях (отправлена ли фаза повторно в очередь на обработку или обработка запроса прекращена) рабочая нить высвобождается (переходит в состояние «свободна»).
При возникновении сбоев, приводящих к нештатному завершению обработки запроса, после восстановления работоспособности системы, обработка возобновляется с фазы, на которой произошел сбой.
Система обработки запросов, согласно настоящему изобретению, может включать в себя по меньшей мере один модуль баз данных, выполненный с возможностью хранения и управления базой данных, содержащей данные о запросах и их фазах; необходимые средства приема-передачи данных, а также по меньшей мере один модуль обработки, являющийся средством обработки фаз по меньшей мере одного типа. Модуль обработки базы данных может быть выполнен в виде универсальной цифровой электронно-вычислительной машины (согласно ГОСТ 16325-88). Средства приема-передачи данных могут включать в себя любые известные средства, формирующие каналы передачи данных: как проводные, так и беспроводные.
Система обработки запросов обычно включает в себя различные машиночитаемые носители. Машиночитаемый носитель может представлять собой любой пригодный носитель, к которому система может осуществить доступ, причем такой носитель может включать в себя как энергозависимый, так и энергонезависимый носитель, а также съемный и несъемный носитель. В качестве примера, но не ограничения, машиночитаемый носитель может содержать компьютерную запоминающую среду и среду связи. Компьютерная запоминающая среда включает в себя как энергозависимый, так и энергонезависимый, съемный и несъемный носитель, реализованный любым способом или по любой технологии, используемой для хранения такой информации, как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерная запоминающая среда включает в себя, но не только, ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), флэш-память либо другую технологию памяти, компакт-диск (CD-ROM), цифровой универсальный диск (DVD) либо другие оптические дисковые запоминающие устройства, магнитные кассеты, магнитную ленту, магнитное дисковое запоминающее устройство либо другие магнитные запоминающие устройства или любой другой носитель, который можно использовать для хранения требуемой информации и к которому система обработки запросов может осуществить доступ. Среда связи обычно воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как сигнал несущей иди другой механизм транспортировки, и включает в себя любую среду для доставки информации. Термин «модулированный сигнал данных» означает сигнал, одна или несколько характеристик которого устанавливается или изменяется таким образом, чтобы закодировать информацию в этом сигнале. В качестве примера, но не исключения, среда связи включает в себя проводную среду, такую как проводная сеть или прямое проводное соединение, а также беспроводную среду, такую как акустическая, радиочастотная, инфракрасная и другая беспроводная среда. В состав машиночитаемых носителей следует также включить комбинации из любых вышеуказанных носителей (сред).
Накопители и ассоциированные с ними носители компьютерной среды хранения, обсужденные выше, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для системы обработки запросов.
С точки зрения множества возможных вариантов, в которых могут быть использованы принципы данного изобретения, следует отметить, что описанный здесь вариант осуществления вместе с соответствующими чертежами является лишь иллюстрацией и его не следует рассматривать как ограничение объема изобретения. Например, элементы проиллюстрированного варианта осуществления конвейерной обработки запросов могут быть реализованы аппаратными средствами. Проиллюстрированный вариант осуществления может быть модифицирован с точки зрения компоновки и в отдельных деталях, не выходя за рамки сущности изобретения. Таким образом, описанное изобретение охватывает все варианты осуществления, которые могут входить в объем, определяемый нижеследующей формулой изобретения и ее эквивалентами.