更新时间:2024-12-16 GMT+08:00
分享

调用函数

同步调用

同步调用指的是客户端触发函数后,需阻塞等待函数调用结果返回的场景。

当前的API网关APIG(共享版)、API网关APIG(专享版)、服务集成APIC是默认同步触发。另外,您也可以使用同步执行函数接口同步触发函数。

同步调用场景下,函数最大运行时长限制为15分钟。

异步调用

异步调用指的是客户端触发函数后,FunctionGraph持久化请求并立即返回,客户端不等待请求最终处理完成,用户无法实时感知请求处理结果。FunctionGraph最终将异步请求排队,在服务端空闲的情况下逐个处理。如果您希望获取异步请求结果通知或者设置异步请求失败重试,请参见配置函数的异步调用策略

  • 以下触发器:默认异步调用,用户不可修改。
    表1 调用方式

    事件源

    调用方式

    消息通知服务SMN

    异步调用

    对象存储服务OBS

    异步调用

    数据接入服务DIS

    异步调用

    定时器TIMER

    异步调用

    云日志服务LTS

    异步调用

    云审计服务CTS

    异步调用

    文档数据库服务DDS

    异步调用

    分布式消息服务Kafka版

    异步调用

    分布式消息服务RabbitMQ版

    异步调用

    云数据库GeminiDB Mongo

    异步调用

  • 以下触发器:API网关APIG、API网关APIG(专享版)、服务集成APIC可以在触发器对应服务页面配置成异步触发方式。您也可以使用异步执行函数API接口异步触发函数。异步调用场景下,函数最大运行时长限制为12小时(通过白名单配置)。

    如果函数执行端到端时延超过90s,建议使用异步不使用同步,否则会因为网关限制,超过90s后无法收到同步响应。

示例

在已创建函数并配置APIG触发器的前提下,以APIG触发器为例,配置异步触发。

  1. 在函数列表中打开函数,单击“设置 > 触发器”。
  2. 单击已配置的APIG触发器名称,跳转到APIG服务页面。
    图1 单击触发器名称
  3. 单击右上角的”编辑”。
    图2 单击“编辑”
  4. 单击“下一步”到“定义后端服务”页面,修改调用类型为“Asynchronous”。
    图3 修改调用类型
  5. 单击“立即完成”,进行保存。

重试机制

函数在同步调用或异步调用执行失败时,您可以参见以下重试机制进行操作。

  • 同步调用

    同步调用执行失败,建议您自行尝试重试。

  • 异步调用

    异步调用可在界面配置最大重试次数和消息最大有限期,具体配置方法请参见配置函数的异步调用策略。函数平台会根据您配置的最大重试次数和消息最大有限期(最大有限期为24小时),进行重试。重试次数和配置的最大重试次数一致,重试有效期和配置的消息最大有效期一致。

幂等性

在编程中,幂等性指应用程序或组件具备识别重复事件和防止重复、不一致或数据丢失的能力。若您想使函数保持幂等性,则需要通过函数逻辑设计来正确处理重复的事件。

幂等函数逻辑有助于减少以下问题:

  • 不必要的 API 调用
  • 代码处理时间
  • 数据不一致
  • 限制
  • 延迟

请确保您的函数代码可以多次处理相同的事件,而不会导致重复的事务或其他不必要的副作用。如果函数不满足幂等性要求,则当函数调用异常,客户端重试或依赖函数内部重试时,可能会导致重复的事务或其他不必要的副作用。

相关文档