全部产品
云市场

预留实例简介

更新时间:2019-09-16 11:07:58

函数计算为用户提供了两种类型的资源:按量实例和预留实例。

按量实例

按量实例是指函数实例的分配和释放完全由函数计算系统负责,有函数调用请求时,函数计算动态调度资源,为用户提供弹性可靠的执行环境,极大简化了用户管理应用资源的难度。

但是资源的动态调度不可避免地存在冷启动延时,对于时延敏感的在线业务有一定影响。

预留实例

预留实例是将函数实例的分配和释放交由用户管理,根据实例的运行时长计费。

预留实例的执行环境是长驻的,彻底消除冷启动对业务的影响

当您预留了实例,函数计算系统收到函数调用请求的时候,会优先将请求转发给您的预留实例,当函数请求的峰值超过预留实例处理能力时,剩余的部分请求将会进入按量模式,由函数计算系统自动为您分配执行环境。

如下图所示,预留实例计费时长从实例预留成功后执行代码开始,到实例成功释放后代码执行完毕为止。

预留实例计量

注:当用户调用 API 释放实例时,系统保证新的请求不会再路由到该实例上

具体产品定价和计费可以参考 计费方式

使用流程

控制台

1. 参考 控制台使用, 创建一个简单的 hello-world 函数.

p1

2. 参考 版本管理 中的版本和别名给步骤 1 中创建的 service/function 创建别名

预留的的实例针对的具体别名的 service下的 function

p2

p3

p4

3. 选定步骤2中创建的别名, 创建预留实例.

注:如果取消预留实例, 只需要将预留实例个数修改为 0 即可

p5

稍等一会, 函数计算系统就准备好了预留实例

p6

SDK

  1. import fc2
  2. client = fc2.Client(
  3. endpoint=<your endpoint>,
  4. accessKeyID=<your access_key_id>,
  5. accessKeySecret=<your access_key_secret>,
  6. )
  7. serviceName = "ProvisionSerrvice"
  8. functionName = "hello-world"
  9. client.create_service(serviceName)
  10. client.create_function(
  11. serviceName, functionName,
  12. handler='main.my_handler', runtime='python2.7', codeDir='test/hello_world')
  13. r = client.publish_version(serviceName, "test service v1")
  14. v1 = r.data['versionId']
  15. self.client.create_alias(serviceName, "test", v1, "test alias")
  16. client.put_provision_config(serviceName, "test", functionName, 10)
  17. print(client.get_provision_config(serviceName, "test", functionName).data)
  18. # Cancel the provision
  19. # client.put_provision_config(serviceName, "test", functionName, 0)