此文本使用 Salesforce 的自动翻译系统翻译。参加我们的调查,提供有关此内容的反馈,并告诉我们您接下来想要查看的内容。
Note
指南概览
本指南将帮助您评估 Salesforce 平台上异步处理要求的正确方法。它解释了每种方法,详细描述了每种方法的优势和局限性。大多数方法与产品功能保持一致,但一些方法协调使用多个功能。该指南包含用例,以突出显示何时使用每种方法。
异步处理为您的架构提供了两大好处。首先,它提高了可扩展性,因为异步进程具有更高的调控器限制。第二,异步请求在自己的线程中执行,因此用户可以在后台执行异步任务时执行其他工作。
请注意,本指南仅侧重于在 Salesforce Platform 中选择异步处理技术。资源部分列出了有助于您的决策过程的其他资源。
本指南范围内的产品
| Salesforce Lightning 平台是一个人工智能驱动的综合平台,将员工、自主人工智能客服人员、公司数据和应用程序统一到一个可信的系统中,以提高生产率和客户体验。它通过连接 Customer 360 应用程序、Data Cloud 和 Slack 来实现端到端自动化,从而支持创建“代理企业”。 |
本文档未涵盖其他生态系统中的技术,例如 MuleSoft、Informatica、Commerce Cloud、Tableau 和 Marketing Cloud。
外卖
- **在使用异步处理之前,请确保您的用例适合该模式。**异步模式没有 SLA,受多个调控器机制的约束,可以根据许可证定义容量限制,并且由于分配给 Salesforce Platform 中的异步基础设施的资源的有限性,可能会导致处理延迟。当用户在继续工作之前需要系统的响应时,请在使用异步处理时考虑这些限制。
- **与 Salesforce 异步处理不是满足无限扩展需求的解决方案。**Salesforce 平台不会无限扩展,异步模式会受到限制。异步处理使用线程,线程包含 CPU 执行指令流所需的上下文信息。线程可以并行运行。任何 CPU 中的可用线程数量有限,因此平台拥有尽可能高效地使用可用线程的机制。平台的流控制机制可以防止组织消耗过多线程并对其他组织产生负面影响。平台的公平使用算法还控制组织对每个特定消息类型可用的线程数量。
- **考虑可能导致极端负载的事件。**在设计异步流程时,请确保可以预测地管理工作负荷高峰和平静。请考虑您的实施如何处理意外事件,例如断电,并设计保护措施来减轻数据丢失或功能损失。
产品比较
此表概述了可用于 Salesforce 异步处理的工具。参考此表,查看每个工具在决策过程中的主要特征。有关为您的架构选择正确工具的帮助,请参见用例和决策点。
| 方法 | 描述 | 所需技能 | 许可证和限制 |
|---|---|---|---|
| Queueable Apex | 用于涉及长时间运行的数据库操作或外部 Web 服务标注的进程。Queueable Apex 提供作业 ID、支持非原始类型和作业链接等功能。 | 赞成代码 | 许可证的数量可以增加限制。 |
| Batch Apex | 通过划分记录集并将其处理为可管理的块,构建涉及数百万条记录的复杂、长时间运行的流程。 | 赞成代码 | 许可证的数量可以增加限制。 |
| 计划 Apex | 在 Cron 表达式定义的计划时间执行 Apex。虽然通过 Cron 表达式计划 Apex 的行为是一个异步过程,但底层代码会在作业开始时同步执行。 | 赞成代码 | 许可证的数量可以增加限制。 |
| Apex 继续标注 | 从同步事务上下文中运行的 Apex 方法执行标注。 | 赞成代码 | 没有 |
| 异步路径(记录触发的流) | 执行您想要自行运行的操作。避免在更新相关记录上的值时出现混合 DML 错误,该值不是触发流的记录的一部分。 | 低代码 | 许可证的数量和类型可以增加限制。 |
| 计划路径(提交流后) | 在触发事件后的动态计划时间执行,例如在创建、更新或删除记录时。 | 低代码 | 许可证的数量和类型可以增加限制。 |
| 计划流 | 在指定的时间以重复的频率(每天、每周或一次)在后台执行流,以便对一批记录执行操作。 | 低代码 | 许可证的数量和类型可以增加限制。 |
| 平台事件触发器 | 将 Salesforce 与外部系统松耦合,并在 Salesforce Platform 中的异步组件之间进行通信。 | 低代码 + 专业代码 | 高用量平台事件用例需要加载项许可证 |
| 变更数据捕获 | 提交数据库事务后,异步捕获和处理变更事件。 | 赞成代码 | 要扩展到基准分配以上,需要加载项许可证。 |
| 批量 API | 异步插入、更新、更新插入、查询或删除许多记录,稍后处理结果。 | 赞成代码 | 是有限制的。 |
| Lightning 操作 | 允许 Lightning 页面与服务器交互,而不强制用户完全刷新页面。 | 低代码 | 没有 |
决策点
此表包含您在决定使用哪个异步工具时需要考虑的要点概览。
| 所需技能 | 本指南概述的一些工具需要代码,而其他工具可以声明性地配置。在您考虑选项时,请考虑团队成员拥有的技能集。请记住,即使开发人员可用于您的初始实施(例如通过实施合作伙伴),您可能需要在未来修改您的解决方案。如果维护团队缺少开发人员,低代码选项可能更适合。 |
| 强制执行的平台限制的类型 | 确定适用于执行的限制类型。在设计解决方案时,请仔细考虑每天事务的数量和频率将如何计入所选方法的调控器限制。计算每天将发生的执行次数。确保计算值在与您选择的工具相关联的限制范围内。 |
| 延迟 | 确定处理结果在平台中的可用速度。对于某些方法,更改几乎会立即生效,而对于其他方法,更改可能是几分钟或几小时。 |
用例
当您选择异步处理的工具时,请先评估贵组织的要求和可用资源。您的目标是选择一种或几种工具,这些工具可以最大限度地减少实施和维护成本,但仍可确保可扩展性,并最大限度地减少违反限制的可能性。此目标取决于之前概述的技术注意事项,以及团队的组成。
考虑 Salesforce 中的异步订购流程。保存订单时,它会触发一条消息给外部仓库管理系统,其中包含关于如何包装和运送商品的特殊说明。下订单的用户不需要仓库管理系统立即响应,因此请求可以异步发送。异步处理允许用户继续工作,而无需等待响应。
对于此用例,您可以考虑使用 Apex 实施。只有当您的团队中有可以维护您的专业代码解决方案的 Apex 开发人员时,这种方法才有效。否则,声明性方法更有意义。此外,请记住,不同的限制集适用于不同的工具。
此表列出了最左侧列中的常见用例,然后是描述。第一选择列提供了用于满足此类用例的最典型方法,以及第一选择方法的基本原理。将此用作分析的起点 - First Choice 方法可能有局限性,不适用于您的用例。
| 用例 | 描述 | 首选方法 | 理由 |
|---|---|---|---|
| 高性能批处理 | 任何必须高效处理数千或数百万条记录的自动化 | 批量 Apex | Batch Apex 提供了丰富的 API 来与平台交互,并提高原始速度。 |
| 数据清理作业 | 定期或按需运行的清理数据的作业。示例包括重复数据消除、地址验证或数据整合。 | 批量 Apex | Batch Apex 提供了丰富的 API 来与平台交互,并提高原始速度。 |
| 夜间汇总作业 | 在工作日结束时计算累计数据的作业。 | 批量 Apex | Batch Apex 提供了丰富的 API 来与平台交互,并提高原始速度。 |
| 记录触发的逻辑 | 执行逻辑以响应记录更新。 | 不同 | 请查看我们的相关决策指南 - 记录触发事件自动化。它包括异步用例的决策树,包括 Queueable Apex、Batch Apex、Scheduled Apex、Scheduled Flow、异步路径流和变更数据捕获。 |
| 通过对象图级联更新 | 允许用户的保存操作快速完成,延迟到其他对象的级联更新以异步运行。 | 可排队 Apex | Queueable Apex 具有强大的链接功能,支持逻辑将更新链分为一系列异步事务。 |
| 特定于记录的计划处理 | 未来特定于记录的动态日期的自动化(例如,结束日期前 3 天)。 | 具有计划路径的流 | 计划的路径为流提供了独特的优势,因为如果记录的数据发生变化,平台会自动处理这些路径的计划、取消和重新计划。 |
| 并行调用多个缓慢的外部服务 | 在同步执行期间,并行调用多个外部服务,以优化整体执行时间。 | Apex 继续标注 | 允许多个运行缓慢的标注并行运行,可以最大限度地减少完成工作的总时间。 |
| 记录从外部系统的数据迁移 | 将大量记录从外部系统移到 Salesforce Platform。一次性或定期计划的进程。 | 批量 API | 这是最高效、最方便的数据迁移方法。 |
| 在外部系统上执行其他逻辑 | 将平台上的事件通知给外部系统,然后允许该系统异步处理该事件的触发-忘记模式。 | 平台事件或变更数据捕获 | pub-sub 模型最适合这里,并允许外部系统在准备就绪时处理事件。有关此模式的更多详细信息,请参见事件驱动架构。 |
用例表是每个用例的最合适的方法指南。但您需要验证 First Choice 技术是否适合您用例的特定需求。特别是,确定所选方法是否可以遵守贵组织的调控器限制。
在您为用例确定了候选方法后,异步处理基本指南可以帮助全面检查解决方案。
资源
这些额外资源可以帮助您的决策过程:
- 深入了解每种平台异步技术:异步处理基础知识
- 为记录触发器选择 Apex 和流:记录触发的事件自动化
- 有关异步集成模式的信息:事件驱动架构
