Оптимизация производительности в ArcGIS

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

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

Оценка потребностей пользователей

Оптимизация — это больше, чем просто минимизация времени отклика на HTTP-запросы. Сервис, который отправляет быстрые ответы с низкой задержкой, но бесполезные, не оптимизирован должным образом. Определите, кто и зачем будет пользоваться ресурсом или сервисом. Поймите, на какие вопросы пользователь захочет получить ответы, взаимодействуя с ресурсом. Используйте структурированное тестирование, чтобы убедиться, что ресурс хорошо работает на различных клиентских устройствах, с которых пользователи будут получать доступ к ресурсам. Учитывайте отзывы пользователей о полезности ресурса как во время разработки, так и после того, как ресурс стал доступен для общего использования.

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

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

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

  • В целом, задержка в сети оказывает большее влияние на работу пользователей, чем пропускная способность сети для повседневных операций с ГИС. Для таких действий, как загрузка данных, копирование файлов или просмотр больших наборов данных изображений, также важна пропускная способность.
  • Трафик из ArcGIS Pro непосредственно в базы данных чувствителен к задержкам. Много мелких запросов делается при просмотре и редактировании данных или при работе со схемой и ее изменении.
  • Трафик от ArcGIS Server к базам данных, файловым или объектным хранилищам также требует малой задержки и, как правило, высокой пропускной способности. Это позволяет серверному процессу получать доступ к данным, преобразовывать их в соответствии с запросами пользователей и отправлять пользователям оптимизированный ответ.
  • Клиенты, такие как браузеры, обращающиеся к веб-приложениям, менее чувствительны к сетевым ограничениям, чем настольные клиенты, поскольку такие инструменты как ArcGIS Maps SDK for JavaScript оптимизируют запросы для снижения избыточного трафика.
  • Многие современные сети стирают различие между локальными и облачными ресурсами с помощью сетевого пиринга и других технологий, что может привести к очень низкой задержке между облачными ресурсами и локальными ресурсами или клиентами. В целом, рекомендуется, чтобы клиенты, серверные процессы, хранилище и базы данных размещались в одной «сетевой зоне», например, размещайте все в облаке или локально. Однако в некоторых сценариях допускается отделение клиентов от серверов или серверов от баз данных. Насколько эта конструкция подходит для вашей системы, зависит от дизайна сети и структурированного тестирования соответствующих рабочих процессов для понимания возможных последствий.

Использование кэширования запросов и ответов

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

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

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

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

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

Сопутствующие ресурсы:

Стратегии кэширования слоев изображений карты

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

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

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

Чтобы узнать больше о кэшировании слоя изображений карты, ознакомьтесь со следующими ресурсами:

Стратегии кэширования векторных слоев

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

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

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

Стратегии кэширования листов объектов

В отличие от векторных листов и растровых листов, листы объектов не создаются заранее в рамках запланированного процесса. Вместо этого они создаются поддерживающими функциональность клиентами, запрашивающими стандартизированные экстенты данных для стандартных уровней масштабирования. Поскольку эти запросы идентичны у разных клиентов, объекты могут кэшироваться и повторно использоваться или повторно отправляться разным клиентам. Эта функциональность доступна только для клиентов, которые предназначены для ее использования, в первую очередь через ArcGIS Maps SDK for JavaScript, а также через ArcGIS Pro и собственные приложения, созданные с помощью ArcGIS Maps SDKs.

Использование листов объектов основано на двух ключевых допущениях:

  • Сервис поддерживает листы объектов. Листы объектов используются только при выполнении запросов к векторным слоям (на основе картографического сервиса или сервиса объектов), которые поддерживают эту возможность, зависящую от версии. Размещенные сервисы объектов на основе ArcGIS Online поддерживают эту функциональность в течение нескольких лет. В ArcGIS Enterprise отдельные слои в размещенном сервисе объектов должны быть настроены с помощью запроса REST API, чтобы включить кэширование листов объектов, а кэшированные листы объектов хранятся в хранилище объектов.
  • Клиент, отправляющий запрос, поддерживает листы объектов. Как правило, клиенты, поддерживающие листы объектов, автоматически запрашивают их у сервисов, которые их поддерживают. Хотя ArcGIS Online предоставляет несколько уровней кэширования для этих листов объектов, слои на базе ArcGIS Enterprise имеют дополнительные преимущества для наилучшего использования этой функции.

Размещенные сервисы объектов в ArcGIS Online также включают опцию включения оптимизированной прорисовки слоев, которая может генерировать данные с пониженным разрешением в базе данных, используемые для отображения меньших (более удаленных) масштабов. Эти данные с уменьшенным разрешением автоматически запрашиваются в процессе создания листов объектов при использовании этих масштабов, что, в свою очередь, повышает скорость отклика.

Дополнительные сведения о кэшировании листов объектов см. в следующих ресурсах:

Стратегии оптимизации кэширования на стороне клиента

В ArcGIS Enterprise вы можете настроить как картографические сервисы, так и сервисы объектов так, чтобы они возвращали заголовок Cache-Control, который позволяет браузеру пользователя использовать преимущества кэширования содержимого ответа на основе значения Etag.

Когда клиенты отправляют запросы в ArcGIS Server для запроса экспорта карты или запроса к сервису объектов с примененной настройкой, ответ от сервера может быть кэширован браузером и повторно использован в течение определенного периода времени. Однако в зависимости от использования сервиса объектов и связанных с ним данных в приложении, может потребоваться изменить время использования кэшированного ответа. Это можно сделать с помощью добавления свойства cacheControlMaxAge к определению JavaScript Object Notation (JSON) сервиса.

Сеть доставки ресурсов (CDN)

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

Как общедоступные размещенные векторные слои, так и статические ресурсы веб-приложений, размещенные в ArcGIS Online, автоматически используют глобальную CDN для кэширования листов объектов и статических ответов приложений. Более подробно об управлении кэшем CDN для размещенных векторных слоев в ArcGIS Online. ArcGIS Online CDN также используется для ускорения отклика для общедоступных кэшированных слоев изображений карт (растровые листы) и слоев векторных листов, а также различных сервисов базовых карт ArcGIS Online.

CDN также можно использовать с веб- приложениями, размещенными в ArcGIS Enterprise, но будьте внимательны и проводите различие между статическими ресурсами, которые подходят для кэширования в CDN, такими как файлы HTML, CSS и JavaScript, и более динамическими ответами REST API, которые не следует кэшировать, чтобы избежать непредвиденного поведения пользователя. Также обратите особое внимание на использование CDN в связи с обновлениями. Кэш CDN должен быть принудительно аннулирован при обновлении ArcGIS Enterprise или изменении приложения, чтобы гарантировать, что пользователи не получат устаревшую информацию.

В записи блога подход Сети доставки ресурсов (CDN) к ArcGIS Enterprise с использованием AWS CloudFront приведен один из примеров использования CDN с ArcGIS Enterprise.

Top