昱唯商城

产品分类
  • 腾讯
    腾讯云
    计算
    存储
    网络
    CDN与加速
    数据库
    视频服务
    云通信
    Serverless
    移动开发
    中间件
    数据处理
    量子技术
    网络安全
    终端安全
    应用安全
    业务安全
    安全管理
    数据安全
    安全服务
    云智大数据平台
    云智大数据可视化
    云智大数据应用
    人脸识别
    人脸特效
    人体识别
    文宇识别
    图像识别
    语音技术
    AI 平台服务
    自然语言处理
    智能机器人
    域名与网站
    物联网
    区块链
    企业应用
    企业通信
    办公协同
    金融服务
    教育服务
    游戏服务
    零售服务
    移动服务
    建筑服务
    政务服务
    汽车服务
    云资源管理
    开发者工具
    监控与运维
    管理与审计
    通用解决方案
    行业解决方案
    云智大数据与AI解决方案
    微信解决方案
    教育解决方案
    音视频解决方案
    物联网解决方案
    安全与运维解决方案
    极光产品
    开发者工具
    腾讯企业邮
    腾讯企业邮箱
    企业微信
    企业微信
    腾讯广告
    微信广告
    QQ广告
    腾讯视频广告
    腾讯新闻广告
    腾讯信息流广告
    优量广告
    腾讯音乐广告
    腾讯企点
    企点协同(企业QQ)
    企点客服
    企点营销
    企点呼叫中心
    企点应用市场
    企点客服机器人
    QTrade
    腾讯安全
    终端安全
    主机安全
    安全管理
    数据安全
    数据安全
    网络安全
    金融风控
    内容安全
    业务安全
    营销风控
    安全组件
    应用安全
    腾讯教育
  • 知道创宇
    技术安全
    抗D保-DDoS流量清洗服务
    游戏高防
    创宇盾 - Web应用防火墙
    加速乐(CDN内容分发)
    漏洞扫描
    创宇监控 · 智能云监控服务
    猎风 - 威胁感知系统
    业务安全
    羊毛盾-知道创宇业务反欺诈
    数据盾(机器流量管控)
    海外CN2专线防护
    IPv6安全改造
    业务安全舆情监测服务
    云防御态势感知指挥平台
    商业安全
    创宇信用
    SSL证书
    盾牌座
    安全服务
    渗透测试
    代码审计
    风险评估
    应急响应
    信息安全对抗演习服务
    网络信息安全意识培训服务
    黑客入侵救援
    等级保护2.0安全解决方案
    安全定制
    区块链定制安全研发
    云计算产品
    御点终端安全管理系统
    网络资产普查和风险感知系统
    浑天智鉴
    创宇鹰眼 - 知道创宇反电话诈骗系统
    创宇监控-关键字监控做您的“第三只眼”
    服务
    智能设备安全检测
    区块链安全
    智能合约审计
    公链安全审计
    钱包安全审计
    安全产品
    ZoomEye网络空间雷达系统
    在线漏洞扫描
    ScanV安全检测管理平台
    威胁和日志管理系统
    安全事件监控
    政务云防御平台
    御点终端安全管理系统
    ZoomEye BE 网络空间资产安全管理系统
    技术安全
    解决方案
    政府行业解决方案
    金融行业解决方案
    电信行业解决方案
    大型企业集团行业解决方案
    中小企业行业解决方案
    电商行业安全解决方案
    棋牌游戏解决方案
    直播行业安全解决方案
    大数据反诈骗解决方案
    Web系统远程监控解决方案
    全网态势感知解决方案
    全网资源侦测解决方案
    云安全解决方案
    金融安全解决方案
    区块链安全解决方案
    教育类网站安全解决方案
    公安机关互联网安全监督检查规定解决方案
    创宇信用
    内容安全
    创宇大数据
    SSL证书
    短视频运营
    秘信聊
    实名认证
    行业认证
    搜狗认证
    官网认证
    权威认证
    品牌宝
    短视频运营
  • 昱唯系列
    昱唯云建站
    昱唯网站设计
    昱唯网站优化
    昱唯企业邮箱
    昱唯微传单
    昱唯公众号助手
    昱唯门店系统
    昱唯游戏营销
    昱唯销售系统
    昱唯小程序
    昱唯商城
    昱唯建站
    昱唯400
    昱唯ABC
    昱唯ABC企业邮箱
    APP开发
    昱唯小票打印机
    昱唯ABC官网系统
    昱唯HI名片
    昱唯安全防护营销型网站
  • 法大大
    电子合同
云函数SCF
云函数SCF 
价格:
1.33
购买数量:
快递: 包邮
产品保证
官方授权代理商
可开具专票和普票
24小时售后服务支持
产品详情

云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。


云函数 SCF 是腾讯云为企业和广大开发者们提供的无服务器执行环境,您无需购买和管理服务器,而只需使用平台支持的语言编写核心代码并设置代码运行的条件,代码即可在腾讯云基础设施上弹性、安全地运行。腾讯云完全管理底层计算资源,包括服务器 CPU、内存、网络和其他配置/资源维护、代码部署、弹性伸缩、负载均衡等。代码按需运行,空闲时不收费。使用云函数将帮您免除所有运维性操作,使您更加专注于核心业务的开发,实现快速上线和迭代,把握业务发展的黄金时期。

功能

云函数 SCF 提供了多种功能,使您的代码在腾讯云基础设施上弹性、安全地运行。

代码管理

您可以通过上传代码使用腾讯云云函数,云函数提供多种代码管理方式:

  • 通过控制台编辑代码,这种方式适用于没有外部依赖的业务代码,直接在控制台上编辑代码。

  • 上传代码 ZIP 包,将所有依赖和代码打包成 ZIP 并上传至腾讯云云函数,平台将自动抽取入口函数并执行。

  • 通过 COS 管理代码 ZIP 包,将所有依赖和代码打包成 ZIP 并上传至腾讯云对象存储,并在云函数中指定代码所在 Bucket 和 文件对象,平台将自动下载函数代码。

支持多开发环境

云函数支持多种开发环境,您可以选择适合您自身的开发语言,完成函数编写。目前已支持的语言包括:Python 2.7 & 3.6、Node.js 6.10 & Node.js 8.9、Java 8、Php 5 & Php 7。

自动伸缩

云函数支持毫秒级别的实时弹性伸缩,完全根据请求量扩容或缩容。动态负载均衡将请求分发至后端近乎无限的函数实例上,完全无需任何手动配置和操作,满足并发量从 0 到成千上万的不同场景。

事件触发

云函数支持设置多种触发器来决定代码何时运行,在满足触发器条件(Event)时,代码自动开始运行,并根据请求自动调度基础设施资源实现自动伸缩和回收,提高计算效率。
目前支持以下触发器:

  • 对象存储 COS:支持在特定的 COS Bucket 操作文件上传或文件删除等事件时触发云函数,可以对文件进行更多操作。例如:在图片上传到特定 Bucket 时,对其进行压缩或裁剪以适应不同分辨率的移动终端。

  • 定时器:支持定时触发函数,助力用户构造更加灵活的自动化控制系统。

  • 手动触发:支持通过 云 API /控制台 手动触发函数,帮助用户更便捷、更清晰地调试和使用云函数。

  • CMQ 主题队列触发:由 CMQ Topic 主题队列内的消息触发,利用 CMQ 消息队列解耦事件,可以帮助用户和更多应用完成联动。

  • Ckafka 消息队列触发:由 Ckafka Topic 主题队列内的消息触发,对消息进行处理,可以帮助用户实现日志聚合、消息存储等。

  • API 网关触发:支持 API 网关中的 API 配置后端为云函数,在 API 接收到客户端请求时,触发云函数,并将处理结果作为 API 响应返回给客户端。

监控和日志

云函数提供精细的日志记录,您可方便地查看函数的运行状况,并对代码进行调试、测试和审计;支持相关的监控指标上报,帮助您快速了解函数的整体运行概况,同时您还可自定义云函数的监控指标,对云函数进行更深入、更广泛的监控。

计算资源的变迁

随着云服务的发展,计算资源高度抽象化,腾讯云提供了从物理服务器到云函数和横跨各种抽象程度的计算资源供用户选择。

  • 黑石物理服务器:以物理机为扩展单位。用户完全拥有整台实体计算资源,安全性最好。

  • 云服务器(CVM):以云服务器为扩展单位,虚拟化硬件设备。用户和其他租户共享物理机资源,仍可自行配置 CVM 的各项指标,相对部署和迭代更加简单。

  • 容器:以服务为扩展单位,虚拟化操作系统。测试和生产环境完全一致,测试和部署非常轻松。

  • 云函数:以函数为扩展单位,虚拟化运行时环境(Runtime)。是现有计算资源的最小单位,具有完全自动、一键部署、高度可扩展等特点,是轻量级服务部署非常好的选择。

无服务器的概述

无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

腾讯云云函数简介

腾讯云云函数是腾讯云提供的 Serverless 执行环境。您只需编写简单的、目的单一的云函数即可将它与您的腾讯云基础设施及其他云服务产生的事件关联。

使用云函数时,您只需使用平台支持的语言(Python,Nodejs,Java)编写代码。腾讯云将完全管理底层计算资源,包括服务器 CPU、内存、网络和其他配置/资源维护、代码部署、弹性伸缩、负载均衡、安全升级、资源运行情况监控等。但这也意味着您无法登录或管理服务器、无法自定义系统和环境。

云函数自动地在同一地域内的多个可用区部署,同时提供极高的容错性。云函数在执行时将根据请求负载扩缩容,从每天几个请求到每秒数千个请求,都由云函数底层自行伸缩。您无需人工配置和介入,只需为运行中的云函数付费,即可满足不同情景下服务的可用性和稳定性。若云函数未运行,则不产生任何费用。

您可以自定义运行云函数的时间,例如,在 COS Bucket 上传时、删除文件时运行云函数、应用程序通过 SDK 调用时运行云函数,或指定云函数定期执行。您可以使用云函数作为 COS 服务的数据处理触发程序轻松实现 IFTTT 逻辑,您也可以通过构建灵活的定时自动化任务,用于覆盖手工完成的操作,轻松构建灵活可控的软件架构。

腾讯云云函数功能特性

Serverless 帮助用户脱离繁冗的开发配置工作,只需关注业务代码逻辑的编写,不用任何的基础设施建设、管理与运维开销。该服务模式降低了研发门槛,提升业务构建效率,获得了大量企业和开发者的支持。

Serverless 虽然是下一代云计算服务形态的趋势,但目前该服务模式并不能完全实现企业复杂的业务系统。其主要有以下几方面的原因:

  • 性能问题。例如同步业务的冷启动延时、高并发的函数实例扩缩容,大规模业务下函数实例的集群管理等。

  • 缺乏成熟的开发者生态。例如,企业和研发若采用无服务,需要用监控、Debug 调试、以及DevOps 等上下游的支持。

  • 学习门槛高。一方面用户需要按照云函数的逻辑对存量业务进行改造,另一方面 Event 数据模型对于 Web 场景不友好,用户更习惯于直接基于 HTTP Request、Response 编写业务代码。

针对目前行业遇到的问题,腾讯云持续探索研究,并发布了下一代无服务器计算平台:腾讯云 Serverless 2.0。

Serverless 2.0 除了解决以上所述的问题之外,还关注用户从本地开发、代码调试、到业务的持续集成、上线运维等整个软件开发生命周期。围绕 Serverless 产品,腾讯云构建了全面的开发支持、DevOps、运维监控等能力,协助用户可以更好的向 Serverless 架构迁移,使用 Serverless 承载起企业核心业务奠定基石。

更简单的开发体验:HTTP 函数(内测发布)

Serverless 2.0 在已有事件触发函数的基础之上,根据用户实际的使用场景,进一步提供了面向 HTTP 场景的 HTTP 函数(HTTP Function)。HTTP 函数的功能特性如下:

  • HTTP 函数提供外部可访问到的 URL 地址,无论是移动端 App,Web 应用,都可以通过发起 HTTP 调用,访问 URL 来调用函数。

  • 开发 HTTP 函数时不再基于 Event 事件的数据结构,而是优化为 HTTP Request、HTTP Response 数据结构,更符合 Web 服务开发的习惯。通过 Request 结构,可以获取到 HTTP 请求的相关信息。而通过 Response 结构,可以自行构造出所需的 HTTP 响应。

腾讯云 Serverless 团队从面向应用的角度出发,基于全套 Serverless 架构,进行了 Serverless 编排框架的设计。突破了 Serverless 架构中,单个函数通常仅具备单一的功能实现的局限性。用户可以通过 Serverless 编排框架实现应用相关资源,例如函数、数据库、文件存储、消息队列、API 管理等多种资源的统一。

可通过 内测申请 获得 HTTP 函数的功能,单击 这里 快速入门 HTTP 函数。

核心业务框架快速迁移:服务型函数(内测发布)

为了方便已有业务代码向 Serverless 架构的无缝迁移,腾讯云 Serverless 团队推出 服务型函数(HTTP Service)。在提供 URL 访问地址以及支持应用直接访问的基础上,服务型函数还支持核心业务和框架的快速迁移。例如:

  • 基于常用框架开发完成的业务代码,能够无缝迁移至服务型函数中,直接以 Serverless 模式对外提供服务。

  • 服务中原本具备的高性能通讯协议,例如 WebSocket,gRPC。也可通过服务型函数对外提供。

  • 用户无需理解容器、镜像,只需提交已经开发完成的代码包,就可以开始对外提供服务。

可通过 内测申请 获取服务型函数功能,单击 这里 快速入门服务型函数 。

Low Latency、不限制运行时长

在 Serverless 2.0 中,我们不仅在控制流和数据流的模块、虚拟化层、网络层、调度层都做了彻底的重构优化,还在安全性、可用性以及性能方面也进行了全面升级。通过采用轻量级虚拟化技术、VPC Proxy 转发方案等多种优化手段使用统一的底层架构。针对实时自动扩缩容核心的能力进行优化,彻底规避了传统无服务器架构中饱受诟病的冷启动问题。

云函数不再限制运行时长,支持更丰富的应用场景。例如:

  • 服务型函数不限制单次请求的时长。当请求持续到来时,服务会保持一个长运行的模式,无温、冷启动时延。

  • 服务型函数支持 WebSocket 长连接。

  • Event Function(触发器函数)具备单次调用时长限制,但在请求持续到来时,服务是保持长运行模式,并无温、冷启动时延。

完整的开发、调试、DevOps、监控工具

腾讯云 Serverless 团队从多方面着手,提供可以满足多种开发场景的相关工具或能力。例如:

  • 通过命令行工具,在本地开发环境中进行项目创建、本地调试打包、一键部署上线。

  • 通过 VS Code 插件,及 IDE 可视化操作,将函数的线上线下管理及代码编写调试,整合在一个界面中完成。VS Code IDE 及插件还提供了函数的本地管理、开发调试、上线发布功能。

  • 支持 Web IDE,在控制台上实时的开发调试,与本地开发调试的体验相同,方便代码的调整或查看。

  • 针对已经进行了 git 托管的代码,增加了团队 git 对接能力。通过与用户 git 打通,以及依赖包的在线安装的功能,实现了更简单的代码提交部署方式,简化了操作过程。

除了提供对接云的日志服务和监控服务,支持基于日志和监控的多种查询、过滤、告警功能之外,我们还提升了使用工具的调试能力。例如:

  • 通过调用链追踪,跟踪请求的经过的各个产品、服务或函数。

  • 通过故障现场捕捉,抓取函数运行失败时的现场及事件,便于进一步分析代码故障。

  • 通过应用性能分析,了解到函数内部的代码或模块性能,便于进一步提升应用性能。

多种监控工具的建设,协助用户更好的进行开发、调试、上线、发布等工作。监控工具提供了更多的分析排障支持,同时提升运行的透明性、减少对于 Serverless 架构的运维投入。

腾讯云云函数(Serverless Cloud Function,SCF)为函数即服务 (Function as a Service,FaaS)产品,提供无服务器(Serverless) 和 FaaS 的计算平台。运行方式依赖事件触发。因此在和触发事件源结合时,云函数就可以被触发源所产生的事件触发运行。

无服务器

无服务器架构说法的来源可以根据 Mike Roberts 在 Martin Fowler 的博客网站上发表的 无服务器架构 一文中得到解释。

无服务器并不是没有服务器就能够进行计算,而是对于开发者来说,无需了解底层的服务器情况,也能使用到相关资源,因此称为无服务器。

无服务器也可以从更广的角度来识别,针对无需配置和了解底层的服务器就可以直接使用的云服务,在一定程度上也可以称为无服务器。

在云函数 SCF 产品中,我们针对的是无服务器场景中的计算场景。云函数产品提供的是无服务器模式下的 FaaS 能力。

函数即服务

函数即服务提供了一种直接在云上运行无状态的、短暂的、由事件触发的代码的能力。

函数即服务和传统应用架构不同,函数服务提供的是事件触发式的运行方式,云函数不是始终运行的状态,而是在事件发生时由事件触发运行,并且在一次运行的过程中处理这一次事件。因此在云函数的代码中,仅需考虑针对一个事件的处理流程,而针对大量事件的高并发处理,由平台实现云函数的多实例并发来支持。

为了实现对高并发的支持,云函数平台提供了自动的弹性伸缩能力,会在有大量请求到来时启动更多实例来处理事件请求,也会在没有事件到来时缩减函数实例甚至到零实例。因此为了匹配自动扩缩能力,需要函数代码使用的是无状态开发方式,即不在云函数的运行内存中保留相关的状态数据并在多次运行时依赖这些状态数据。云函数的状态数据,可以依赖外部的持久存储能力例如云缓存、云数据库、云存储来进行。

触发器和触发源

任何可以产生事件,触发云函数执行的均可以被称为触发器或触发源。触发器在本身产生事件后,通过将事件传递给云函数来触发函数运行。

触发器在触发函数时,可以根据自身特点,使用同步或异步方式触发函数。同步方式触发函数时,触发器将等待函数执行完成并获取到函数执行结果;异步方式触发函数时,触发器将仅触发函数而忽略函数执行结果。

腾讯云云函数在和腾讯云的某些产品或服务对接时,也有自身实现的一些特殊方式,例如推(PUSH)模式和拉(PULL)模式。

  • 推模式:触发器主动将事件推送至云函数平台并触发函数运行。

  • 拉模式:云函数平台通过拉取模块,从触发器中拉取到事件并触发云函数运行。

触发事件

触发器在触发函数时会将事件传递给云函数。事件在传递时以一个特定的数据结构体现,数据结构格式在传递时均为 JSON 格式,并以函数 event 入参的方式传递给云函数。

触发事件的 JSON 数据内容,在不同的语言环境下将会转换为各自语言的数据结构或对象,无需在代码中自行进行从 JSON 结构到数据结构的转换。
例如,在 Python 环境中,JSON 数据内容会转变为一个复杂 dict 对象,即函数的入参 event 就是一个 Python 的复杂 dict 对象。而在 Golang 或 Java 中,入参是一个需要和 event 数据结构可以匹配的对象。更具体的实现方式可以见 开发语言说明

函数运行时的容器模型

SCF 将在事件触发时代表您执行 SCF 函数,根据您的配置信息(如内存大小等)进行资源分配,并启动和管理容器(即函数的执行环境)。SCF 平台负责所有函数运行容器的创建、管理和删除清理操作,用户没有权限对其进行管理。

在容器启动时需要一些时间,这会使得每次调用函数时增加一些延迟。但是,通常仅在首次调用函数、更新函数、或长时间未调用时重新调用时会察觉到此延迟,因为平台为了尽量减少此启动延时,会尝试对后续调用重用容器,在调用函数后容器仍会存留一段时间,预期用于下次调用。在此段时间内的调用会直接重用该存留的容器。

容器重用机制的意义在于:

  • 用户代码中位于 执行方法 外部的任何声明保持已初始化的状态,再次调用函数时可以直接重用。例如,如果您的函数代码中建立了数据库连接,容器重用时可以直接使用原始连接。您可以在代码中添加逻辑,在创建新连接之前检查是否已存在连接。

  • 每个容器在 /tmp 目录中提供部分磁盘空间。容器存留时该目录内容会保留,提供可用于多次调用的暂时性缓存。再次调用函数时有可能可以直接使用该磁盘内容,您可以添加额外的代码来检查缓存中是否有您存储的数据。

注意:

请勿在函数代码中假定始终重用容器,因为是否重用和单次实际调用相关,无法保证是创建新容器还是重用现有容器。

临时磁盘空间

SCF 函数在执行过程中,都拥有一块 512MB 的临时磁盘空间 /tmp,用户可以在执行代码中对该空间进行一些读写操作,但这部分数据可能 不会 在函数执行完成后保留。因此,如果您需要对执行过程中产生的数据进行持久化存储,请使用 COS 或 Redis/Memcached 等外部持久化存储。

调用类型

SCF 平台支持同步和异步两种调用方式来调用云函数。调用类型与函数本身的配置无关,只有在调用函数时才能控制调用类型。

  • 同步调用函数将会在调用请求发出后持续等待函数的执行结果返回

  • 异步调用将不会等待结果返回,只发出请求并获得当前请求的 Request ID。

以下调用场景您可以自由定义函数的调用类型:

  • 编写的应用程序调用 SCF 函数。如果您需要同步调用,请在 InvokeFunction 接口中传入参数invokeType=RequestResponse;如果您需要异步调用则请传入参数 invokeType=Event

  • 手动调用 SCF 函数(使用 API 或 CLI)用于测试。调用时的参数区别同上。

但是,在您使用腾讯云其他云服务作为事件源时,云服务的调用类型是预定义的,用户无法在这种情况下自由指定调用类型。例如,COS 和定时器始终异步调用 SCF 函数。

用户限制

函数相关的使用配额及相关环境限制,可见 配额及限制

函数并发量

函数的并发数量是指在任意指定时间对函数代码的执行数量。对于当前的 SCF 函数来说,每个发布的事件请求就会执行一次。因此,这些触发器发布的事件数(即请求量)会影响函数的并发数。您可以使用以下公式来估算并发的函数实例总数目。

每秒请求量 * 函数执行时间(按秒) 

例如,考虑一个处理 COS 事件的函数,假定函数平均用时0.2秒(即200毫秒),COS 每秒发布300个请求至函数。这样将同时生产 300 * 0.2 = 60 个函数实例。

并发限制

当前默认情况下,SCF 对每个函数的并发量有一定限制,您可以通过查看 配额及限制 了解当前函数的并发量限制。您可以通过 联系我们 来调高此数值。

如果调用导致函数的并发数目超过了默认限制,则该调用会被阻塞,SCF 将不会执行这次调用。根据函数的调用方式,受限制的调用的处理方式会有所不同:

  • 同步调用:如果函数被同步调用时受到限制,将会直接返回429错误。

  • 异步调用:如果函数被异步调用时受到限制,SCF 将在一定的时间内以固定的频率自动重试受限制的事件。

重试机制

如果您的函数因为超过最大并发数目、或遇到平台内部资源不足等内部限制导致失败。此时,如果您的函数被同步调用,将会直接返回错误(见上面并发执行限制内容)。如果您的函数被内部云服务使用异步方式调用,则该次调用将会自动进入一个重试队列,SCF 将自动重试调用。

执行环境和可用库

当前 SCF 的执行环境建立在以下基础上:

  • 标准 CentOS 7.2

如果需要在代码中包含可执行的二进制文件、动态库或静态库,请都确保兼容此执行环境。
基于不同语言环境,在 SCF 执行环境下有相关语言的基础库及安装的附加库,您可以在各个语言说明中查看环境中已安装的附加库:

  • Python

  • Node.js

  • Golang

  • PHP

  • JAVA

简单易用

减少组件开销

使用云函数时,用户只需编写最重要的 “核心代码”,不再需要关心负载均衡、自动伸缩、网关等周边组件,极大地降低了服务架构搭建的复杂性。

自动扩缩容

无需任何手动配置,云函数即可根据请求量自动横向扩缩。不管您的应用每天只有几个请求(如日志统计等定期事务),还是每秒有几千上万个请求(如移动应用的后端),云函数均可自动安排合理的计算资源满足业务需求。

高效又创造性地开发

加速开发

云函数不要求特定框架或依赖,开发者可以专注于核心代码的开发。同时开发人员可以组成多个小团队,单个模块的开发无需了解其他团队的代码细节。独立开发和迭代的速度变得前所未有的快,帮助用户把握住产品上线的黄金时间。

复用第三方服务

您可以使用云函数编写一些目的单一、逻辑独立的业务模块,因而可以完全复用已经成熟的第三方代码实现,比如使用 OAuth 实现登录模块。

简化运维

每个函数都是单独运行、单独部署、单独伸缩的,用户上传代码后即可自动部署,免除单体式应用部署升级难的问题。

稳定可靠

高可用部署

云函数可以自动在每个地域中随机地选择可用区来运行。如果某个可用区因灾害或电力故障等导致瘫痪,云函数会自动地选择其他可用区的基础设施来运行,免除单可用区运行的故障风险。

与其他计算服务相辅相成

常驻的工作负载可以通过云服务器 CVM ,容器服务 TKE 来承载,而由事件触发的工作负载可以使用云函数。不同云服务满足不同的业务场景和业务需求,使得您的服务架构更加健壮。

简化管理

简化安全配置

用户不再需要对 OS 入侵、登录风险、文件系统安全、网络安全和端口监听做复杂的配置和管理,一切交由平台处理,平台通过定制化的容器保证每个用户的隔离性。

可视化管理

用户可直接在控制台管理函数代码及函数何时运行(即函数触发器),无需复杂的配置文件即可一键部署和测试函数

大幅度降低开销

永远不为空闲时间付费

函数在未执行时不产生任何费用,对一些并非常驻的业务进程来说开销将大大降低。函数执行时按请求数和计算资源的运行时间收费,价格优势明显,对初创期的开发者十分友好。

腾讯云云函数(Serverless Cloud Function , SCF)目前持续迭代发展,随着产品能力、对接产品的持续增长,云函数的适配应用场景也会越来越多。

移动及 Web 应用

云函数可以作为移动应用及 Web 应用的后端,实现服务端应用逻辑,并通过 API 对外提供服务。通过与云缓存、云数据库、对象存储等产品的紧密结合,开发者能够构建可弹性扩展的移动或 Web 应用程序,轻松创建丰富的无服务器后端,并且这些程序可在多个数据中心高可用运行,无需在可扩展性、备份冗余方面执行任何管理工作。

小程序

云开发 是微信团队和腾讯云联合开发的,集成于小程序控制台的原生 Serverless 云服务。其核心功能包括:云函数、云数据库和云存储。其中云函数可以让开发者在云端运行代码,开发者只需编写自身业务逻辑代码。结合微信私有天然鉴权,平台保证安全和隔离性,并且根据请求自动伸缩。

文件处理及通知

使用对象存储 COS 作为函数触发器,在 COS Bucket 中有文件发生变更时可获得事件通知。因此针对事件,可以进行变更文件的及时处理和业务通知。

例如,在 COS Bucket 上传图片,云函数可以立刻得到通知,并可以立刻获取图片进行相应的图片剪裁、缩略、水印等操作,实现图片的自动化处理,还可以在处理完成后写入数据库,便于后续选择使用已处理好的图片。

消息转存

使用消息队列或 Ckafka 作为函数触发器,在消息队列中接收到消息时将触发云函数的运行,并会将消息作为事件内容传递给云函数。

例如,在 Ckafka 中接收到业务系统的日志时,云函数可以将日志内容作为文件写入到对象存储 COS 中,实现日志的归档存储。

业务流转

消息队列 CMQ 作为业务事件流转的中间通道,连接多个云函数,可以实现业务的状态流转及分派。云函数中的业务逻辑判断与处理,可以根据业务消息内容,进行不同的通道分派、状态流转、事件分发,实现复杂的业务流程连接。

AI 推理

通过在云函数中训练好的 AI 模型,并通过 API 网关对外提供 API 服务,可以在有请求到达时才启动进行 AI 推理。不仅能享受无需准备服务器或 GPU 服务器带来的费用节省、按实际调用量计费,还可以获得高并发请求下的自动扩容伸缩能力。

功能特性

服务型函数(HTTP Service)具备以下功能特性:

  • 支持通用框架的无缝迁移,已有代码可直接迁移 Serverless 架构。

  • 具备高性能、无运行时长限制的特性,您可以保留原有的开发习惯。

  • 集成域名,默认提供三级子域名、自动配置解析和集成 SSL 证书,省去域名注册和备案等复杂流程。

  • 支持 Websocket,可以轻松搭建聊天室、小游戏等业务。

  • 可以通过控制台快速上传部署代码。

优势

  • 运维方便:全托管式的无服务器应用平台,基于负载情况自动扩缩容。

  • 接入轻松:Web 服务无缝上云,支持 Node.js。

  • 性能稳定:无冷启动,性能稳定可预期,轻松支撑高 IOPS 应用。

  • 低成本:按运行时长和资源消耗付费。

    说明:


    • 可通过 内测申请 获取服务型函数功能。

    • 当前服务型函数处于内测阶段,不收取任何费用,您可放心使用。


此外,您还可通过服务型函数 使用须知相关配置 了解更多信息,体验 快速入门,掌握服务型函数完整的使用流程。

使用场景

服务型函数(HTTP Service)可在下列场景中使用:

  • App、Web、公众号、小程序、API 服务后台

  • BFF(Backend for Frontend)中台

  • 微服务

使用限制

内容配额限制
HTTP 连接超时时间75秒。超过该时间阈值,会话中无数据传输则断开连接。
服务启动最大时间60秒。您的 Web 服务需要在60秒内监听 TENCENTCLOUD_SERVER_PORT 所指定的端口。
说明:

如需调整配额限制,请通过 提交工单 联系我们。

注意事项

  • 如果您需要在本地写临时文件,只能写到 /tmp 路径下,其他路径下写操作会失败。

  • /tmp 路径下空间有限,您需要定时清理。

配置环境变量

服务型函数(HTTP Service)支持环境变量。您可以通过环境变量来存储一些配置信息,从而实现代码和配置分离。详情请参考 环境变量管理

配置私有网络

服务型函数支持配置私有网络(VPC),您可根据实际需求选择以下方式配置 VPC:

  • 在代码中访问 VPC 内的云资源,例如 TencentDB、CVM、Redis 等。详情请参考 函数部署到 VPC 网络

  • 在代码中访问 Internet,须配置 NAT 网关。详情请参考 函数在 VPC 网络中访问外网

日志与监控

日志

服务型函数提供了您的服务打印到 stdout/stderr 的日志功能。
例如,通过 console.log 命令打印的日志。

监控

服务型函数提供了以下监控指标:

  • 并发连接数:HTTP 并发连接数,按时间粒度(1分钟和5分钟)统计求和。

  • HTTP 请求数:HTTP请求次数,按时间粒度(1分钟和5分钟)统计求和。

  • HTTP 错误请求数:HTTP 状态码非2xx的 HTTP 请求次数,按时间粒度(1分钟和5分钟)统计求和。

  • 平均响应时间:在一定时段内(1分钟和5分钟)的 HTTP 请求时长(请求开始到请求结束)的平均值。

简介

HTTP 函数(HTTP Function)是云函数的一种,区别于事件函数(Event Function)。HTTP 函数专注于优化 Web 服务场景,例如自带 URL 并通过发送 HTTP 请求到 URL 触发函数执行。

功能与优势

相较于 API 网关触发器 云函数,HTTP 函数具备以下优势:

  • HTTP 函数提供一个 URL 供用户访问和调用,简化了学习成本和调试过程,帮助您快速使用函数计算实现 Web 服务和 API。

  • 您可以选择自己熟悉的 HTTP 测试工具验证函数计算端的功能和性能。

  • 减少请求处理环节,HTTP 函数支持更高效的请求/响应格式,不需要 encode/decode 生成 json,性能更优。

  • 方便对接其他支持 Webhook 回调的服务,例如 CDN 回源,企业微信机器人等。

  • HTTP 函数的编写体验更贴近编写原生 Web 服务,使用 Node.js 原生接口(HTTP Request/Response 数据结构)。

  • 丰富的框架支持,您可以使用常见的 Web 框架(如 Nodejs Web 框架:ExpressKoa)编写 HTTP 函数。而 Web 框架内置的一些中间件(如 cors)也会极大的方便您的业务编写。

HTTP 函数当前处于内测发布状态,请通过 内测申请 获得此功能。

使用限制

  • 当前 HTTP 函数目前仅支持 Nodejs 8.9,后续会支持多个 Runtime。

  • 函数类型选定为 HTTP 后不可更改。

  • HTTP 函数不支持设置触发器。

  • HTTP 函数暂不支持版本和别名。

  • Request headers 中有以下限制:

    • 所有 key 和 value 的大小不得超过4KB。

    • path(含 query、params)不得超过4KB。

    • body 大小不超过6MB。


  • Response headers 中有以下限制:

    • 所有 key 和 value 的大小不得超过4KB。

    • body 的大小不超过6MB。


问题分析

当 HTTP 函数出现问题时,Response headers 会包含请求 ID(X-Scf-Request-Id)和错误类型(X-Scf-Error-Type)信息,来帮助您分析问题原因。您可参考以下信息查看错误原因:

结构名内容原因分析
ScfCommonError400域名和 url 格式错误时返回
ScfCommonError404AppId、函数名等不存在
ScfCommonError413当请求参数大小超过限制时返回
ScfCommonError429用户被流控,可减小并发量或者 提交工单 联系我们提高并发度
ScfSysError500平台系统错误
UnhandledInvocationErr502响应大小超过限制
UnhandledInvocationErr502函数错误(如函数代码有语法错误或者异常)

快速入门

请参考 HTTP 函数快速入门 通过快速创建一个 HTTP 函数,了解 HTTP 函数使用流程。

腾讯云云函数(Serverless Cloud Function,SCF)在使用过程中可能关联和使用到的产品如下。

产品名称与云函数的关系
私有网络 VPC可以通过将云函数配置到 VPC,实现访问 VPC 内的资源。
对象存储 COS可以通过配置对象存储触发器,在对应的 Bucket 产生事件时触发云函数。
日志服务 CLS可以通过配置对接日志服务,将云函数的运行日志写入日志服务中。
消息队列 CMQ可以通过配置消息队列触发器,在对应的队列收到消息时触发云函数。
消息队列 Ckafka可以通过配置 Ckafka 触发器,在对应的 Kafka topic 收到消息时触发云函数。
API 网关 API Gateway可以通过配置 API 网关触发器,在 API URL 上接收 HTTP 请求时触发云函数。
访问管理 CAM可以通过配置访问管理的角色,在云函数授予代码执行时访问授权资源的权限。

客户简介

腾讯相册小程序,是腾讯官方的相册小程序,为用户免费保存原图和视频,且支持长视频发朋友圈,并为用户一键生成更优雅的音乐相册或主题相册。

客户方案

腾讯相册通过小程序和空间相册打通,实现了在小程序端的照片上传、下载、分享好友、点赞、评论、生成小程序码等功能。本文档以点赞评论功能和优化小程序分享二维码为例。

“基于小程序云开发的点赞评论功能” 案例


基于小程序云开发的点赞评论功能的操作逻辑如下图所示:

在云函数中,实现以下功能:

  • 对小程序端评论、点赞等数据进行拉取和存储的操作。

  • 当小程序端进行评论、点赞等操作时,通过云函数的路由功能,在原有的相册服务端获取用户的鉴权信息。

“优化小程序分享二维码” 案例


优化小程序分享二维码的云函数处理逻辑流程如下图所示:

在云函数中,实现以下功能:

  • 调用微信的生成小程序码的接口

  • 将需要生成二维码的图片或视频存储至云开发的文件存储

  • 获取图片的临时 URL 并返回前端

客户价值

  • 新开发的小程序后端与原有的后端服务互不冲突。

  • 原有的后端服务架构复杂,新增功能困难。

  • 使用小程序云开发可节省排期和联调的时间,提升开发效率。

  • 在云函数中完成鉴权,即可打通原有的数据资源。



微信图片_20190905110212.jpg

1.png


1.png





2.png


3.png


4.png




6.png

什么是 SCF?

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云提供的无服务器(Serverless)执行环境。您只需编写简单的、目的单一的云函数,并将它与您的腾讯云基础设施及其他云服务产生的事件关联起来。
使用云函数时,用户只需关注自己的代码。腾讯云完全管理底层计算资源,包括服务器 CPU、内存、网络和其他配置/资源维护、代码部署、弹性伸缩、负载均衡、安全升级、资源运行情况监控等,用户只需使用平台支持的语言(目前支持 Python)提供代码。同时,这意味着您无法登录或管理服务器、无法自定义系统和环境。

代码在执行时将根据请求负载扩缩容,无需人工配置和介入即可满足不同情景下服务的可用性和稳定性,从每天几个请求到每秒数千个请求,都由云函数底层自行伸缩。云函数自动地在地域内的多个可用区部署,提供极高的容错性。用户只需为运行中的云函数付费,代码未运行时不产生任何费用。

您可以自定义何时运行您的代码,例如在 COS Bucket 上传或删除了文件时、应用程序通过 SDK 调用了代码时,或自行指定代码定期执行。因此,您可以使用云函数作为 COS 服务的数据处理触发程序,轻松实现 IFTTT 逻辑。也可构建灵活的定时自动化任务来覆盖手工完成的操作,轻松构建灵活可控的软件架构。

什么是无服务器计算?

借助无服务器计算,用户无需考虑服务器,即可构建和运行应用程序与服务。Serverless 并不代表没有了服务器,只是用户不再需要关心这些底层资源了。当然,这也意味着用户无法登录服务器,并且也不需要想办法优化它。开发者只需关心最核心的代码片段,从而跳过复杂的、无聊的其他工作。这些代码完全由事件触发(event-trigger),平台根据请求自动平行调整服务资源,拥有近乎无限的扩容能力,空闲时则没有任何资源在运行。代码运行无状态,可以轻易实现快速迭代、极速部署。SCF 是腾讯云无服务器计算的核心,支持您运行代码,且无需预置或管理服务器。

哪些事件可以触发 SCF 函数?

当前支持:手动触发(API)、定时触发、COS 触发、CMQ 触发、API网关触发等触发方式,后续更多触发方式正在持续添加中。

SCF 支持哪些语言?

目前支持 Python 2.7&3.6,Node.js 6.10&8.9,Java 8,PHP 5&7,Golang。后续更多开发语言支持正在持续添加中。

SCF 是否可以做 AI 推理?

可以,您还可以通过工单申请 GPU 来做推理的加速。带GPU的函数在被调用时,会给每个函数的运行环境分配一块 GPU 卡。

能否访问 SCF 运行所在的基础设施?

不能,SCF 会代您管理计算基础设施。

SCF 如何隔离代码?

每个函数都运行在自己独有的环境中,拥有自己的资源和文件系统。SCF 使用与 CVM 相同的技术在基础设施和执行级别上提供安全性和隔离。

SCF 是否可以和 CVM,TencentDB 等云上其他产品互访?

可以,您在创建云函数或修改云函数配置时,选择 VPC 配置,将云函数和 CVM,TencentDB 等部署到同一 VPC 即可。

SCF 部署到 VPC 后,如何配置外网访问?

VPC 访问外网的方法有几种,可以参考 NAT 网关文档介绍

SCF 函数是什么?

云函数上运行的代码以 “SCF 函数” 的形式上传。每个函数都有相关的配置信息,如其名称、描述、资源要求等。代码必须以 “无状态” 样式编写,即应假设与底层计算基础设施无密切关系。本地文件系统访问、子进程等严格控制在云函数的生命周期内,且任何持续状态都应存储在外部可用的存储如 COS 或 TencentDB。SCF 函数可包含外部库,甚至是本机库。

SCF 是否会重复使用函数实例?

为了提高性能,SCF 会在一定时间内保留您的函数实例,将其再用于服务后续请求。但您的代码不应假设此操作总是发生。

为何要保持 SCF 函数无状态?

保持函数的无状态性可使函数按需要尽可能多地启动多个实例,从而满足请求的速率。

如何使用 CLI 创建 SCF 函数?

您可以将代码(以及任何依赖库)打包为 zip 并使用 CLI 从您的本地环境上传 zip 文件,或将 zip 文件上传 COS Bucket 后,在创建函数时指定拉取代码 zip 包的 Bucket 名和文件名。CLI 详情可以参考 SCF 命令行工具

如何进行故障排除?

SCF 集成了日志功能,每次调用都会将该次调用的日志输出到控制台日志窗口中,日志记录了该函数每次使用时所消耗的资源、代码中的 log 及平台调用信息等,您可以轻松将故障排除相关的 log 语句插入到代码中。

通过上传 zip 包创建函数后,提示“函数服务创建失败,请重试”?

通常是函数的执行方法无法在zip包中找到对应的执行文件或函数入口,或压缩时包括了外层文件夹。执行方法格式为a.b,其中:a 是 py 文件的名称,b 是代码中的方法名。
如果用户上传的 zip 包在解压后的根目录下找不到名为a.py的文件,则会提示"函数代码无法显示,代码 zip 包中找不到执行方法指定的文件名"。

例如:文件结构如下

--RootFolder----SecondFolder------a.py------thirdfolder--------sth.json

压缩代码 zip 包时,如果压缩的是 SecondFolder,则会出现上述错误;需要选择 a.pythirdfoler 进行压缩。

出现timeout时如何处理?

请先将超时时间设置为一个较大值(不超过300均可)再测试一遍,如果仍然超时,请检查您的代码 log 中是否存在过大的输入数据和计算量、无法跳出的循环、长时间的 sleep 等。

如何扩容?

用户不必关心函数扩缩容问题,SCF 平台会代您自动扩展。每当接收函数请求时,SCF 会快速定位空闲容量并运行您的代码。由于您的代码是无状态的,可以在需要时尽可能多地启动实例,而不会发生冗长的部署和配置延迟。

如何分配函数计算资源?

用户可以选择函数分配的内存量,CPU 和其他资源也会相应的按比例进行分配。例如,选择256MB的内存时,分配至函数的 CPU 约是分配128MB内存的两倍。

能否使用本地库?

可以。用户可以在函数代码中包含自己的代码库,并以 zip 包的形式上传至平台。

函数调用报错 “Resource limit exceed for function”?

通常是是函数并发触发了配额上限,可以通过公式“函数并发 = qps(每秒的请求数量)x 函数执行时间(秒)”来计算所需的函数并发数量;例如:qps = 100,函数执行时间 = 100ms,则实际需要的函数并发= 100 x 0.1 = 10;如果并发超了上限,您可以通过 提交工单 来提升限制。

什么是事件源?

事件源是一类腾讯云服务或开发人员创建的应用程序,用于生成可触发云函数的事件。

有哪些事件源?

当前支持:手动触发(API)、定时触发、COS 触发、CMQ Topic 触发、API 网关触发、Ckafka 触发等触发方式,更多的触发方式正在持续添加中。

应用程序如何直接触发函数?

可以通过调用 SCF 的 Invoke API 直接触发函数。该函数的所有者或有调用该函数 Invoke API权限的帐号能直接调用。

函数响应事件的延迟如何?

SCF 在常规请求中可在毫秒级别内处理请求响应时间。但在函数创建、更新时,或如果它最近未被触发调用,延迟都将升高。

云函数的可用性如何?

SCF 云函数通过跨地域部署、复制和冗余来提供高可用性。

改动代码或配置时,云函数还可以使用吗?

可以。更新函数时会有短暂的窗口期,通常不到 1 分钟,在这期间请求将由旧函数代码或新函数代码实现。

单次运行的函数数量有没有限制?

SCF 可以支持大量函数实例并行。但是,我们有一项默认的安全阈值:每个函数最多 300 个并发执行量。此阈值可以通过提交工单进行提升。

函数在处理事件时发生故障会怎样?

如遇故障,进行同步调用的函数会返回异常信息。异步调用的函数将在后台自动重试 3 次。

安装相关

setuptools 版本过旧

表现:error in scf setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers

解决方法:pip install -U setuptools

已存在的 distutils 安装包无法升级

表现:Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

解决方法: pip install -I PyYAML==x.x.x(在requirements.txt中查看具体版本)

six 版本过低

表现:pip "Cannot uninstall 'six'. It is a distutils installed project..."

解决方法: sudo pip install six --upgrade --ignore-installed six

pytz 版本过低

表现:uninstalling pytz : [error 1] Operation not permitted ...

解决办法:sudo pip install pytz --upgrade --ignore-installed six

使用相关

yaml 配置文件内有多个函数描述时,如何指定函数进行本地调试

表现:Error: You must provide a function identifier (function's Logical ID in the template). Possible options in your template: ['xxxB', 'xxxA']

解决方法:调用 local invoke 命令时带有函数名,如 scf local invoke -t template.yaml xxxA

部署时出现 [SSL: CERTIFICATE_VERIFY_FAILED] 错误

表现:使用 deploy 时,部署函数失败,报[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证错误,

问题原因:mac 10.12 + python 3.6 及以上环境中,python 不再读取系统路径证书,导致读取证书失败,调用腾讯云 云 API 部署时 SSL 验证失败。

解决方法:在 python 安装目录下,执行 Install Certificates.command 脚本,会自动安装 certifi 包,解决证书问题。

环境内有可写空间吗?

可以,云函数在执行过程中,都拥有一块500MB的临时磁盘空间 /tmp,用户可以在执行代码时对该空间进行一些读写操作,但这部分数据在函数执行完成后不会保留。

说明:


  • 实例间的临时空间互相隔离,不共享,即每个实例均有独立的临时空间。

  • 运行环境内除 /tmp 目录下,其他均限制为只读。

可写空间写满后报错如何处理?

如果持续写入 /tmp 临时目录,并且由于调用频繁导致实例持续被使用,可能存在临时目录被写满,导致无法写入的问题。
请在代码中自行检查临时目录的写情况,并使用代码删除不再使用的临时文件以释放空间。

环境内的时区是什么?

云函数的运行环境内保持的是 UTC 时间,即0时区时间,和北京时间有8小时的时间差。

如何处理时区影响?

可以通过语言的时间处理相关库或代码包,识别 UTC 时间并转换为+8区北京时间,或通过设置环境变量 TZ=Asia/Shanghai 指定时区。

能否在我的函数代码中使用线程和进程?

能。用户可使用正常的语言和操作系统功能,如创建额外的线程和进程。分配至函数的资源,包括内存、执行时间、磁盘和网络,都通过其使用的线程/进程进行共享。

能否在我的函数代码中发起网络连接?

能。用户可使用正常的语言和操作系统功能,如发起 tcp、udp 的网络连接,能通过使用语言相关的库,连接数据库、访问 API 等操作。

有哪些限制适用于函数代码?

我们尽量不对正常的语言和操作系统活动施加限制,但有些活动仍被禁用。例如,入站网络连接将被阻止。


品质认证
全国包邮
官方授权代理商
24小时售后服务
企业专属特权
服务保障
正品保证
官方授权代理商
24小时售后
关于我们
支付方式
公司转账
对私付款
支付宝付款
微信支付
商家服务
商家入驻
培训中心
广告服务
服务市场
物流配送
免运费
海外配送
京东快递
211限时达
website qrcode

扫描查看手机版网站

会员登录
登录
其他帐号登录:
我的资料
购物车
0
留言
回到顶部