Статьи

Для чего служат асинхронные сервера

11 августа 2013

Project-Prism-300x200Для начала давайте разберемся, что же такое асинхронность. Многие люди понимают, но не могут выразить словами. Что же означает асинхронность?  Простыми словами это когда часть работы можно отдать кому-то и потом прийти за результатом.

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

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

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

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