程序员每天进步一点点

2020-06-02【腾讯云和阿里云Serverless体验对比

2020-06-02  本文已影响0人  桢桢claire
想去战斗民族

今日鸡汤

我们的社会很像一列长长的火车,最前面的车厢和最后面的车厢隔着遥远的距离,但它们又分明是一个整体,谁都不能丢下其他车厢独立行驶。

你在火车的哪里呢?愿你身处车头却不自大,身处车尾而不自卑。

今天来看最后一篇,我在腾讯云上使用Serverless的体验。

腾讯云的Serverless产品

腾讯云的Serverless相关产品主要有三个:

Serverless场景

在腾讯云Serverless专栏里面有一些Serverless场景的文章。腾讯现在也在鼓励大家自己上传自己做的有趣的场景,写成文章来宣传。其实,在开源项目Serverless framework里有很多示例场景,方便了解Serverless。


Serverless example

这次,就选择其中一个示例场景来做实验,使用SCF将它部署到腾讯云。

基于函数计算实现NLP自动文本摘要

这个实验也是Serverless和AI结合的场景,使用Serverless Framework开源CLI (serverless)在腾讯云上提供自动文本摘要的服务。这个实验涉及到的AI推理预测任务是云函数的核心应用场景:

在 AI 模型完成训练后,对外提供推理服务时,可以使用无服务器云函数,将数据模型包装在调用函数中,在实际用户请求到达时再运行代码。不仅能享受无需准备服务器或 GPU 服务器的费用节省、按实际调用量计费,还可以获得高并发请求下的自动扩容伸缩能力。

image.png

需要配置的环境

比起阿里云要开一堆服务,腾讯的Serverless用起来就自助很多了。只需要注册一个腾讯云服务,安装一个Serverless Framework CLI,在github上下载了就可以玩了。

  1. 腾讯云
    注册了腾讯云账号,进入云函数控制台,里面有具体的函数统计,调用统计数据图表等:
    腾讯云云函数控制台

函数服务里列出了所有创建的函数及其状态:


函数服务

新建函数还提供了各种函数模板,感觉界面很清晰。


image.png
  1. Serverless Framework CLI
    使用npm install -g serverless来安装serverless命令,该命令可以实现创建、安装、部署、测试Serverless服务等功能。
    serverless命令行工具

项目结构

项目源码在github自动文本摘要Demo。项目结构比较清晰,包括两个主要的文件:

  1. index.py
    包括三个函数:
# -*- coding: utf8 -*-
import logging
import jieba.analyse
from snownlp import SnowNLP

logging.basicConfig(level=logging.NOTSET)

def FromSnowNlp(text, summary_num):
    s = SnowNLP(text)
    return s.summary(summary_num)

def FromJieba(text, keywords_type, keywords_num):
    if keywords_type == "tfidf":
        return jieba.analyse.extract_tags(text, topK=keywords_num)
    elif keywords_type == "textrank":
        return jieba.analyse.textrank(text, topK=keywords_num)
    else:
        return None

def main_handler(event, context):
    text = event["text"]
    summary_num = event["summary_num"]
    keywords_num = event["keywords_num"]
    keywords_type = event["keywords_type"]
    return {"keywords": FromJieba(text, keywords_type, keywords_num),
            "summary": FromSnowNlp(text, summary_num)}
  1. serverless.yaml
    Serverless服务配置文件,定义部署环境和函数信息。
# Welcome to Serverless!
#
# This file is the main config file for your service.
# It's very minimal at this point and uses default values.
# You can always add more config options for more control.
# We've included some commented out config examples here.
# Just uncomment any of them to get that config option.
#
# For full config options, check the docs:
#    docs.serverless.com
#
# Happy Coding!

service: textsummarization

provider: # provider information
  name: tencent
  runtime: Python3.6 # Python3.6 or Python2.7
  credentials: ~/credentials

plugins:
  - serverless-tencent-scf

functions:
  text_summarization:
    handler: index.main_handler
    description: Tencent Serverless Cloud Function
    runtime: Python3.6 # Python3.6 or Python2.7
    memorySize: 1024
    timeout: 10

开始使用

  1. 安装依赖
    不同于阿里使用fun install,通过docker形式安装依赖并直接打成image。
    这里需要自己使用npm install来安装依赖,对于函数运行时需要的NLP包jieba和snownlp,也同样需要使用pip install -t . jieba snownlp自己来安装。

  2. 部署
    不同于阿里云函数计算有50M代码的限制,因此需要使用NAS服务存放依赖,腾讯云比阿里云客气多了,只是说当部署程序包保持在10M下可以在线编辑,超过10M就只显示入口函数。官方建议使用来托管依赖和公共库。可以通过上传依赖的zip包,并将其与云函数绑定,就可以在函数中使用层,达到跟NAS存放依赖一样的效果,实现业务与依赖分离。

在配好腾讯云的credential信息后直接使用serverless deploy命令进行部署。

serverless deploy

可以看到,部署分为几个步骤:
1) 在当前目录打包:打出来的包解出来看了一下,包括整个工程目录中的所有内容,即包含业务逻辑和安装的依赖包。
2)上传服务压缩包
3)在云上创建服务
4)打tag
5)创建apigateway触发器

可以在云函数控制台看到上传的函数:


函数配置
  1. 服务
    使用serverless invoke -f text_summarization --path test.json调用服务,可以在控制台看到调用的log,会详细列出函数调用的运行时间和内存使用量。
Serving

总结

对比一下阿里云和腾讯云的Serverless服务。

name 阿里云 腾讯云
CLI fun serverless
需开通的服务 阿里云函数计算服务 腾讯云服务
上传方式 fun跟NAS直接集成上传 支持在线编辑、本地上传文件夹、本地上传zip包、通过cos上传zip包四种方式
依赖安装 fun install 自己安装(npm install, pip install)
服务定义 template.yaml serverless.yaml
部署方式 fun deploy serverless deploy

冷启动优化|预留实例|无|

对比比较简单,依据仅是这两天的一个体验,当然还有很多功能需要再深入研究之后才能了解。
就目前来看,阿里关于serverless的产品生态做的更好,更有体系,并且与已有服务的结合和探索更紧密,除了基础的函数服务外,还有serverless与小程序云、K8S结合的支持,已有的云上用户会方便一些接入serverless这种新方式。

腾讯的serverless借助开源项目serverless framework 简洁的功能,可以很快就使用和部署起来一个serverless应用,控制台也更清晰,但整个体系和功能还比较薄弱,文档和资料也有点儿乱。

之后有机会再试试其他主流的Serverless开源框架,比如Knative。

Serverless未来的发展,共同期待。

上一篇下一篇

猜你喜欢

热点阅读