腾讯云Severless核心用法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 腾讯云Severless核心用法

腾讯云Severless核心用法

什么是Serverless?

Serverless又名无服务器,所谓无服务器并非是不需要依赖和依靠服务器等资源,而是开发者再也不用过多考虑服务器的问题,可以更专注在产品代码上,狭义的Serverless是由Faas和Baas组成的。

传统的高并发架构

在传统的高并发架构下,我们需要配置很多东西,首先,我们需要采购服务器,然后对服务器进行配置,还要将这些服务器分为web服务器和数据库服务器,配置负载均衡,配置主从数据库,配置静态服务器等等,然后是部署程序,部署之后还需要不断的进行维护,这就是传统的高并发架构。

Serverless下的高并发架构

在Serverless下使用者不用关心需要购买几台服务器,也不需要关心哪些作为web服务器,哪些作为数据库服务器,也不需要关心搭建环境、部署项目。开发者只需要将项目部署到serverless服务器上即可。并且,Serverless向用户提供了日志服务、监控服务、以及高并发等。

Egg.js项目结构图

腾讯云Severless

  1. 安装serverless
npm install -g serverless
复制代码
  1. 查看版本
serverless -v
复制代码

快速生成一个项目

  1. 在空文件夹下执行serverless命令
serverless
复制代码
  1. 选择express模板
  2. 选择部署在云端

部署到云上

serverless deploy
复制代码

创建云函数

选择自定义创建,环境选择Node12,然后点击完成即可。

  • 在浏览器地址栏中访问我们的云函数

配置触发管理,创建触发器,触发方式选择API网关触发,选择新建API服务,请求类型选择Any,发布,免鉴权,取消集成响应。如果没有取消集成响应是不能够直接返回字符串的。

通过下面的访问路径即可实现访问。

修改云函数并点击部署后,即可重新访问目标URL。

云函数中的层管理有什么用?云函数中的层管理可以上传我们的node_modules,然后配置云函数选择这个环境。

云函数要想要修改自定义域名可以通过触发管理中的API服务名中的自定义域名进行配置。

WebCli中通过应用模板创建云函数

  1. 点击云产品,进入Serverless应用中心
  2. 新建应用
  3. 选择express框架模板

Vscode中使用插件创建编写云函数

安装下面的插件

初次登陆的时候,可以按照插件说明上的网址访问id和key.

Serverless Cli创建编写应用

安装方法请看上文的 ## 腾讯云Severless

安装完成之后,在项目中使用下面的代码即可使用serverless

serverless
复制代码

当我们更新完代码之后,可以通过下面的代码将本地代码同步到云端。

serverless deploy
复制代码

本地进行调试可以通过下面的方式

nodemon app.js
复制代码

可以在配置中设置不上传node_modules这个文件夹,但是需要在云函数中开启自动安装依赖功能。

配置静态资源

app.use(express.static(__dirname  + "/public"))
复制代码

可以参考这篇文章的经验因缺少绝对路径引发的部署血案

使用Serverless部署KOA项目

在KOA中我们如果希望部署后直接开启API网关触发器,需要将下面的这行代码给注释掉。

配置静态资源服务

  1. 安装相关依赖
npm install koa-static
复制代码
  1. 引入工具包
const static = require('koa-static')
复制代码
  1. 配置中间件
app.use(static(path.join(__dirname,'public')))
复制代码

使用Serverless部署Egg.js

基本部署方法和上述方式一致,下文不再进行赘述。 本地测试egg

npm run dev
复制代码

使用Serverless部署Vue.js

通过Serverless模板创建的Vue项目默认使用的是Vue2的项目,如果想要使用Vue3的项目,只需要在已有项目中添加serverless.yml配置文件,然后执行下面的操作即可。

npm i
npm run serve
npm run build
serverless deploy
复制代码

腾讯云serverless会将静态文件存放在COS上,下面是对应的COS名称。存储桶中的代码也就是我们dist文件夹中的代码。

Serverless中使用Node操作Mysql、Mongodb数据库

腾讯云Mysql与云函数构建私有网络

首先Mysql和云函数应该在同一个区域,比如都在上海六区,然后在同一个私有网络下面,才可以实现局域网访问,否则只能实现公网访问。

Serverless中操作Mongodb数据库

方法和上文提到的操作Mysql类似,本文不再进行赘述。

Serverless将本地文件上传到腾讯云COS上。

把本地资源同步到服务器。

  1. 根据下面的文档进行安装依赖。
  1. 在腾讯云上创建一个存储桶,设置为共有读私有写。

本地代码如下所示。

const fs = require('fs');
// SECRETID 和 SECRETKEY请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
var COS = require('cos-nodejs-sdk-v5');
var cos = new COS({
  SecretId: 'xxx',
  SecretKey: 'xxx'
});
// 上传对象
cos.putObject({
  Bucket: 'serverless1test-1301559367', /* 必须 */
  Region: 'ap-beijing',    /* 必须 */
  Key: 'test.png',              /* 必须 */
  StorageClass: 'STANDARD',
  Body: fs.createReadStream('./python.png'), // 上传文件对象
  onProgress: function(progressData) {
      console.log(JSON.stringify(progressData));
  }
}, function(err, data) {
  console.log(err || data);
});
复制代码

Express在Serverless中实现图片上传到COS中

  1. 在app.js中配置body-parser中间件
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
复制代码
  1. 在app.js中配置multer中间件
const multer = require('multer');
var storage = multer.memoryStorage()
var upload = multer({ storage: storage })
复制代码
  1. 配置路由上传到指定的存储桶中实现图片上传功能
app.post(`/doUpload`, upload.single("img"), (req, res) => {
  var cos = new COS({
    SecretId: 'AKID4xbz6wWNyIM8droUt0qQjkUyBCwPbW9V',
    SecretKey: 'xxx'
  });
  // 上传对象
  cos.putObject({
    Bucket: 'serverless1test-1301559367', /* 必须 */
    Region: 'ap-beijing',    /* 必须 */
    Key: req.file.originalname,              /* 必须 */
    StorageClass: 'STANDARD',
    Body: req.file.buffer, // 上传文件对象
    onProgress: function (progressData) {
      console.log(JSON.stringify(progressData));
      res.send(req.body)
    }
  }, function (err, data) {
    console.log(err || data);
  });
})
复制代码

Serverless中配置域名访问

  1. 找到对应的serverless应用。
  2. 找到api网关,点击服务id,点击自定义域名。
  3. 进行自定义域名时,域名要指向指定的地址。
  4. 配置路径映射

Serverless中配置HTTPS访问

给Serverless对应的应用配置HTTPS访问,只需添加相应的安全证书即可。

配置COS自定义域名

只需通过对应存储桶的自定义域名设置即可。

相关文章
|
5月前
|
运维 Serverless BI
Serverless 应用引擎产品使用合集之配置vpcConfig如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 NoSQL 关系型数据库
Serverless 应用引擎产品使用合集之应用,服务,函数的区别有哪些
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
关系型数据库 Serverless API
Serverless 应用引擎产品使用合集之将ThinkPHP6部署到函数计算如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
Serverless API 数据安全/隐私保护
Serverless 应用引擎产品使用之阿里函数计算中在本地搭建Windows开发环境与阿里云函数计算进行交互如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
弹性计算 人工智能 算法
阿里云张伟:软件跨架构迁移(X86 -> ARM)的原理及实践|阿里云弹性计算技术公开课直播预告
针对阿里云倚天实例的软件迁移,阿里云为开发者提供了迁移工具EasyYitian和性能调优工具KeenTune,能够帮助用户解决软件迁移评估分析过程中人工分析投入大、准确率低、代码兼容性人工排查困难、迁移经验欠缺、反复依赖编译调错定位等痛点,实现业务在ARM ECS的快速适配。EasyYitian支持主流开发语言,通过系统自动化扫描可以一键生成分析报告。KeenTune通过AI算法与专家知识库的有效结合,为软件应用提供动态和静态协同调优的能力。
阿里云张伟:软件跨架构迁移(X86 -> ARM)的原理及实践|阿里云弹性计算技术公开课直播预告
阿里云最新产品手册——云基础产品与基础设施——计算——简介
阿里云最新产品手册——云基础产品与基础设施——计算——简介自制脑图
187 1
|
Serverless
《阿里云云原生Serverless产品手册》——函数计算FC——产品优势
《阿里云云原生Serverless产品手册》——函数计算FC——产品优势
422 0
|
Serverless
《阿里云云原生Serverless产品手册》——函数计算FC——产品功能
《阿里云云原生Serverless产品手册》——函数计算FC——产品功能
328 0
|
前端开发 Serverless 分布式数据库
《阿里云云原生 Serverless 案例集》——典型案例——互联网服务-wolai
《阿里云云原生 Serverless 案例集》——典型案例——互联网服务-wolai
271 0
|
运维 自然语言处理 监控
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
《阿里云云原生 Serverless 案例集》——典型案例——游戏-心动网络(TapTap)
364 0