Распараллеливание работы клиентских программ

Опубликовано в Технологии > Серверные технологии

17.1. Введение

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

17.2. Преимущества параллельной работы

Параллельная организация работы применяется в серверах по двум основным причинам:

  • она позволяет сократить наблюдаемое время отклика (и поэтому повысить общую производительность сервера);
  • она дает возможность устранить предпосылки возникновения тупиковых ситуаций.

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

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

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

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