Это руководство поможет вам оценить правильный подход к требованиям асинхронной обработки на Salesforce Platform. В нем объясняется каждый подход, подробно излагаются сильные и слабые стороны каждого из них. Большинство подходов согласованы с функцией продукта, но некоторые подходы используют несколько функций в координации. Руководство содержит сценарии использования для выделения случаев использования каждого подхода.
Асинхронная обработка предоставляет два важных преимущества для архитектуры. Во-первых, это повышает масштабируемость, поскольку асинхронные процессы имеют более высокие контролирующие ограничения. Во-вторых, асинхронные запросы выполняются в собственных потоках, чтобы пользователи могли выполнять другую работу, а асинхронные задачи выполняются в фоновом режиме.
Обратите внимание, что данное руководство посвящено исключительно выбору технологии асинхронной обработки в Salesforce Platform. Другие ресурсы, помогающие процессу принятия решения, перечислены в разделе «Ресурсы».
| Платформа Salesforce Lightning - это комплексная платформа на основе искусственного интеллекта, которая объединяет сотрудников, автономных агентов на основе искусственного интеллекта, данные компании и приложения в единую надежную систему для повышения производительности и качества обслуживания клиентов. Он позволяет создать "агентское предприятие", подключив приложения Customer 360, Data Cloud и Slack для комплексной автоматизации. |
Данный документ не охватывает технологии в других экосистемах, например, MuleSoft, Informmatica, Commerce Cloud, Tableau и Marketing Cloud.
- Прежде чем использовать асинхронную обработку, убедитесь, что сценарии использования соответствуют схеме. Асинхронные схемы не имеют SLA, подчиняются нескольким управляющим механизмам, могут иметь ограничения нагрузки, определенные на основе лицензирования, и могут привести к задержкам обработки из-за ограниченного характера ресурсов, выделяемых на асинхронную инфраструктуру в Salesforce Platform. Учитывайте эти ограничения при использовании асинхронной обработки в сценариях, когда пользователю требуется ответ от системы, прежде чем он сможет продолжить работу.
- Асинхронная обработка с помощью Salesforce не позволяет удовлетворять безграничные потребности масштабирования. Salesforce Platform не бесконечно масштабируется, и асинхронные схемы имеют ограничения. Асинхронная обработка использует потоки, содержащие контекстную информацию, необходимую процессору для выполнения потока инструкций. Потоки могут выполняться параллельно. Количество доступных потоков в любом процессоре ограничено, поэтому платформа использует механизмы для максимально эффективного использования доступных потоков. Механизм управления потоками платформы предотвращает использование слишком большого количества потоков и негативное влияние на другие организации. Алгоритм добросовестного использования платформы также управляет количеством цепочек, доступных организации для каждого отдельного типа сообщений.
- Учитывайте события, которые могут привести к экстремальным нагрузкам. При создании асинхронных процессов убедитесь, что они могут предсказуемо управлять скачками загруженности и затишьями. Подумайте, как ваше внедрение обрабатывает непредвиденные события, например, перебои с электропитанием, и создайте гарантии, предотвращающие потерю данных или функциональность.
Данная таблица содержит инструменты, доступные для асинхронной обработки посредством Salesforce. См. данную таблицу для просмотра основных характеристик каждого инструмента в процессе принятия решений. См. раздел «Использование обращений и точек решения» для получения помощи в выборе подходящих инструментов для архитектуры.
| Подход | Описание | Необходимые навыки | Лицензии и ограничения |
|---|---|---|---|
| Apex в очереди | Используются для процессов, связанных с длительными операциями базы данных или выносками внешних веб-служб. Apex в очереди предлагает такие функции, как коды заданий, поддержка непримитивных типов и цепочка заданий. | Прокод | Количество лицензий может увеличить ограничения. |
| Batch Apex | Создавайте сложные, длительные процессы, охватывающие миллионы записей, разделив набор записей и обработав его управляемыми фрагментами. | Прокод | Количество лицензий может увеличить ограничения. |
| Запланированный Apex | Выполнить Apex в запланированное время, определенное выражением cron. Хотя действие планирования Apex посредством выражения cron является асинхронным процессом, основной код выполняется синхронно при запуске задания. | Прокод | Количество лицензий может увеличить ограничения. |
| Выноски продолжения Apex | Выполнение выносок из методов Apex, выполняемых в контексте синхронной транзакции. | Прокод | Нет |
| Асинхронный путь (потоки, запущенные записью) | Выполните операцию, которую хотите выполнить в свое время. Избегайте смешанных ошибок DML, возникающих при обновлении значения в связанной записи, не являющейся частью записи, инициировавшей поток. | Низкокодовый | Количество и тип лицензий могут увеличить ограничения. |
| Запланированный путь (после подтверждения потоков) | Выполнение в динамически запланированное время после запуска события, например, при создании, обновлении или удалении записи. | Низкокодовый | Количество и тип лицензий могут увеличить ограничения. |
| Запланированные потоки | Выполните поток в фоновом режиме в указанное время и с повторяющейся частотой (ежедневно, еженедельно или один раз) для выполнения действий над пакетом записей. | Низкокодовый | Количество и тип лицензий могут увеличить ограничения. |
| Триггеры событий платформы | Нестрого связывайте Salesforce с внешними системами и взаимодействуйте между асинхронными компонентами в Salesforce Platform. | Низкокод + Прокод | Дополнительная лицензия требуется для сценариев использования массовых событий платформы |
| Сбор данных об изменении | Собирайте и обрабатывайте события изменения асинхронно после совершения транзакции базы данных. | Прокод | Дополнительная лицензия требуется для масштабирования выше базового распределения. |
| Bulk API | Вставка, обновление, обновление, вставка, запрос или удаление многих записей асинхронно и последующая обработка результатов. | Прокод | Есть ограничения. |
| Действия Lightning | Разрешить страницам Lightning взаимодействовать с сервером, не принуждая пользователей к полному обновлению страницы. | Низкокодовый | Нет |
Данная таблица содержит общие сведения о моментах, которые следует учитывать при принятии решения о том, какой асинхронный инструмент использовать.
| Требуемые навыки | Некоторые инструменты, описанные в этом руководстве, требуют кода, в то время как другие можно настроить декларативно. При рассмотрении вариантов подумайте о наборах навыков, имеющихся у участников рабочей группы. Помните, что даже при наличии разработчиков, доступных для первичного внедрения (например, через партнера по внедрению), возможно, вам потребуется изменить решения в будущем. Если у вашей группы техобслуживания нет разработчиков, вариант с низким кодом может подойти лучше. |
| Тип применяемых ограничений платформы | Определите тип ограничений, применяемых к выполнению. Создавая решения, тщательно обдумайте, как объем и частота транзакций будут учитываться в контролирующих ограничениях для выбранного подхода каждый день. Вычислите количество казней, которые будут выполняться каждый день. Убедитесь, что вычисленные значения соответствуют ограничениям, связанным с выбранными инструментами. |
| Задержка | Определите, как быстро результаты обработки будут доступны на платформе. Для одних подходов изменения будут практически немедленными, в то время как для других - могут составлять минуты или часы. |
При выборе инструмента для асинхронной обработки сперва оцените требования организации и доступные ресурсы. Ваша цель - выбрать инструмент или инструменты, которые минимизируют затраты на внедрение и обслуживание, но обеспечивают масштабируемость и минимизируют вероятность нарушений ограничения. Эта цель зависит от технических рекомендаций, изложенных ранее, а также от состава рабочей группы.
Обратите внимание на процесс асинхронного заказа в Salesforce. Когда заказ сохраняется, он запускает сообщение внешней системе управления складом со специальными инструкциями по упаковке и отправке элемента. Пользователю, размещающему заказ, не нужен немедленный ответ от системы управления складом, поэтому запрос может быть отправлен асинхронно. Асинхронная обработка позволяет пользователю продолжить работу, не дожидаясь ответа.
Для этого сценария использования можно использовать Apex. Этот подход будет работать, только если в вашей команде есть разработчики Apex, которые могут обслуживать ваше прокодированное решение. В противном случае, более разумным будет декларативный подход. Также помните, что разные наборы ограничений применяются к разным инструментам.
Данная таблица содержит типичные сценарии использования в самом левом столбце, а затем описание. Столбец «Первый вариант» предоставляет наиболее типичный подход, используемый для удовлетворения такого сценария использования, а также обоснование подхода «Первый вариант». Используйте это в качестве отправной точки в анализе: подход «Первый вариант» может иметь ограничения, которые не подойдут для вашего сценария использования.
| Способ использования | Описание | Первый вариант | Обоснование |
|---|---|---|---|
| Высокопроизводительная пакетная обработка | Любая автоматизация, которая должна эффективно обрабатывать тысячи или миллионы записей | Batch Apex | Пакетный Apex предоставляет обогащенные API для взаимодействия с платформой и для исходной скорости. |
| Задание очистки данных | Задание, выполняемое регулярно или по запросу и очищающее данные. Например, отмена дублирования, проверка адреса или консолидация данных. | Batch Apex | Пакетный Apex предоставляет обогащенные API для взаимодействия с платформой и для исходной скорости. |
| Ночное задание сводки | Задача, вычисляющая сводные данные в конце рабочего дня. | Batch Apex | Пакетный Apex предоставляет обогащенные API для взаимодействия с платформой и для исходной скорости. |
| Логика, запущенная записью | Выполнение логики в ответ на обновление записи. | Изменения | См. Руководство по принятию решений, Автоматизация событий, запущенных записью. Она содержит дерево решений для асинхронных сценариев использования, включительно с Queueable Apex, Batch Apex, Schededed Apex, Scheduled Flow, Async Path Flows и Change сбор данных. |
| Каскадные обновления посредством графика объекта | Позволяет быстро завершить действие сохранения пользователя, откладывая асинхронное выполнение каскадных обновлений других объектов. | Apex в очереди | Apex в очереди имеет мощные функции цепочки, которые позволяют логике разделить цепочку обновлений на ряд асинхронных транзакций. |
| Запланированная обработка для конкретной записи | Автоматизация на будущую динамическую дату, характерную для записи (например, за 3 дня до даты закрытия). | Поток с запланированным путем | Запланированные пути предоставляют уникальную силу потоку, поскольку платформа автоматически обрабатывает планирование, отмену и перепланирование этих путей, если данные записи меняются. |
| Параллельный вызов нескольких медленных внешних служб | Во время синхронного выполнения параллельно вызывается несколько внешних служб для оптимизации общего времени выполнения. | Выноски продолжения Apex | Разрешение параллельного выполнения нескольких медленно выносок уменьшает общее время на выполнение работы. |
| Миграция данных записей из внешней системы | Переместите большие объемы записей в Salesforce Platform из внешней системы. Разовый или регулярно запланированный процесс. | Bulk API | Это самый эффективный и удобный для миграции данных метод. |
| Выполнение дополнительной логики во внешней системе | Схема «Огонь и забудь» уведомления внешней системы о событии на платформе, позволяющая этой системе асинхронно обрабатывать событие. | События платформы или сбор данных об изменении | Модель pub-sub здесь лучше всего подходит и позволяет внешней системе обрабатывать событие, когда оно будет готово. Подробнее об этой схеме см. в разделе Архитектура под управлением событий. |
Таблица «Использование сценариев» является руководством по оптимальному подходу для каждого сценария использования. Однако, вам нужно проверить, насколько технология «Первый выбор» соответствует определенным потребностям вашего сценария использования. В частности, определите, может ли выбранный подход соответствовать контролирующим ограничениям для вашей организации.
После определения потенциального способа использования Руководство по основам асинхронной обработки может помочь полностью проверить решение.
Данные дополнительные ресурсы могут помочь в процессе принятия решения:
- Глубокое изучение каждой из асинхронных технологий платформы: Основы асинхронной обработки
- Выбор между Apex и Flow для триггеров записи: Автоматизация событий, запущенных записью
- Сведения об асинхронных схемах интеграции: Архитектура, управляемая событиями