腾讯云Severless核心用法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
.cn 域名,1个 12个月
简介: 腾讯云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自定义域名

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

相关文章
|
4月前
|
关系型数据库 Serverless API
神秘的 ADB Serverless 模式,究竟是怎样实现数据共享的?答案等你来揭晓!
【8月更文挑战第27天】在数字化时代,数据共享至关重要。阿里云AnalyticDB for MySQL的Serverless模式提供了一种高效便捷的解决方案。它采用多租户架构,确保数据安全隔离的同时支持资源共享;具备自动弹性伸缩能力,优化资源利用;支持多样化的数据导入导出方式及丰富的API,便于集成到各类应用中,实现数据价值最大化。无论是初创企业还是大型组织,均可从中获益。
62 0
|
5月前
|
Java Serverless API
云原生应用问题之将文档中的代码部署在函数计算平台上会提升用户体验如何解决
云原生应用问题之将文档中的代码部署在函数计算平台上会提升用户体验如何解决
46 0
|
7月前
|
Serverless API 数据安全/隐私保护
Serverless 应用引擎产品使用之阿里函数计算中在本地搭建Windows开发环境与阿里云函数计算进行交互如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
存储 消息中间件 人工智能
阿里是如何使用分布式架构的?阿里内部学习手册分享
为什么要使用分布式架构?分布式架构解决了互联网应用的两大难题:高并发和高可用。高并发指服务器并发处理客户端请求的数量大,而高可用指后端服务能始终处于可用状态。
|
数据库
易搭工作流引擎用是什么开源 还是阿里自研产品,零代码平台场景页面映射数据库表是动态创建,采用什么框架处理,怎么让系统产生高并发能力。易搭权限有没有了解,求解。
易搭工作流引擎用是什么开源 还是阿里自研产品,零代码平台场景页面映射数据库表是动态创建,采用什么框架处理,怎么让系统产生高并发能力。易搭权限有没有了解,求解。
|
运维 Serverless
带你读《浅谈阿里云通用产品线Serverless的小小演化史》三、开箱即用的免运维 ---全托管服务能力(5)(附结语)
带你读《浅谈阿里云通用产品线Serverless的小小演化史》三、开箱即用的免运维 ---全托管服务能力(5)(附结语)
440 0
阿里云最新产品手册——云基础产品与基础设施——计算——简介
阿里云最新产品手册——云基础产品与基础设施——计算——简介自制脑图
193 1
|
运维 Cloud Native 前端开发
GIAC | KCL:声明式的云原生配置策略语言
大家好,我是来自蚂蚁集团的同学,很高兴能在GIAC的编程语言新范式板块和大家分享《KCL配置策略语言》。KCL语言是蚂蚁内部的Kusion解决方案中针对云原生基础设施配置代码化自研的DSL语言,目前已经在建站场景等一些场景开始小范围推广试用。
GIAC | KCL:声明式的云原生配置策略语言
|
SQL 存储 数据采集
一图看懂企业大数据平台核心架构,值得参考!
一图看懂企业大数据平台核心架构,值得参考!
654 0
一图看懂企业大数据平台核心架构,值得参考!
|
前端开发 Serverless 分布式数据库
《阿里云云原生 Serverless 案例集》——典型案例——互联网服务-wolai
《阿里云云原生 Serverless 案例集》——典型案例——互联网服务-wolai
277 0