Поделиться через


Проектирование для масштабируемости

Масштабируемость — это возможность приложения обслуживать дополнительную нагрузку с линейным увеличением использования ресурсов. Масштабируемость важна в любом распределенном приложении. Ограничения масштабируемости обычно связаны с использованием ресурсов и непреднамеренно созданными зависимостями в проектировании приложения.

В следующем списке описываются проблемы масштабируемости и предлагаются решения.

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

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

  • Лояльность клиентов. Две ситуации зависимости могут быть непреднамеренно созданы приложением: когда приложение зависит от состояния данных, которые клиент отправляет со своим запросом, и когда приложению требуется клиент-специфическое состояние. Избегайте проектирования зависимости состояния между клиентом и приложением.

  • Привязка к серверу. Приложение COM+ может ограничить свою масштабируемость, создав привязку к серверу, где приложение зависит от доступа к конкретному серверному компьютеру для получения информации. Это сходство может происходить со многими приложениями, ориентированными на базу данных. Лучший способ избежать узких мест на сервере — секционировать данные на различных серверах. Например, распределяйте данные клиентов между серверами с помощью самого часто используемого ключа или распределяйте базу данных клиентов по нескольким серверам по фамилии (например, Server1: a-f, Server2: g-m, Server3: n-z).

    Заметка

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

     

  • Время существования объекта. Чтобы быть масштабируемым, приложение COM+ должно уделять пристальное внимание продолжительности жизни объектов. Хотя объект существует, он потребляет ресурсы. Важно убедиться, что сроки существования объектов, удерживающих дорогие ресурсы, тщательно управляются. Для объектов с высоким спросом, которые не используют дорогостоящие ресурсы, пул объектов COM+ может увеличить масштабируемость, поскольку можно администрати́вно настроить значения пула, чтобы воспользоваться любым доступным у вас оборудованием. И это естественный способ управления подключениями: например, если у вас есть лицензия на 20 подключений SQL, вы можете диктовать это с помощью параметра Max Pool.

  • Группирование компонентов приложения. Чтобы повысить масштабируемость приложения COM+, компоненты среднего уровня должны быть разделены на службы, зависящие от времени, и службы, не зависящие от времени. Это позволяет сосредоточиться на возможном использовании службы Microsoft Windows для реализации необходимых действий компонента. Например, можно выбрать использование таких служб, как очередь сообщений или компоненты очереди COM+ для обработки асинхронных задач, не зависящих от времени.

Проектирование для доступности

Проектирование для развертывания

Проектирование для безопасности