最佳实践

产品概述

最近更新时间:2020-03-24 18:50:34

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

计算资源的变迁

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

  • 黑石物理服务器:以物理机为扩展单位。用户完全拥有整台实体计算资源,安全性最好。
  • 云服务器(CVM):以云服务器为扩展单位,虚拟化硬件设备。用户和其他租户共享物理机资源,仍可自行配置 CVM 的各项指标,相对部署和迭代更加简单。
  • 容器:以服务为扩展单位,虚拟化操作系统。测试和生产环境完全一致,测试和部署非常轻松。
  • 云函数:以函数为扩展单位,虚拟化运行时环境(Runtime)。是现有计算资源的最小单位,具有完全自动、一键部署、高度可扩展等特点,是轻量级服务部署非常好的选择。

无服务器的概述

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

腾讯云云函数简介

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

使用云函数时,您只需使用平台支持的语言(Python、Node.js、PHP、Golang 及 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 承载起企业核心业务奠定基石。

Low Latency、不限制运行时长

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

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

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

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

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

  • 通过命令行工具,在本地开发环境中进行项目创建、本地调试打包、一键部署上线。
  • 通过 VS Code 插件,及 IDE 可视化操作,将函数的线上线下管理及代码编写调试,整合在一个界面中完成。VS Code IDE 及插件还提供了函数的本地管理、开发调试、上线发布功能。
  • 支持 Web IDE,在控制台上实时的开发调试,与本地开发调试的体验相同,方便代码的调整或查看。
  • 针对已经进行了 git 托管的代码,增加了团队 git 对接能力。通过与用户 git 打通,以及依赖包的在线安装的功能,实现了更简单的代码提交部署方式,简化了操作过程。

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

  • 通过调用链追踪,跟踪请求的经过的各个产品、服务或函数。
  • 通过故障现场捕捉,抓取函数运行失败时的现场及事件,便于进一步分析代码故障。
  • 通过应用性能分析,了解到函数内部的代码或模块性能,便于进一步提升应用性能。

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

目录
http://www.vxiaotou.com