共计 4005 个字符,预计需要花费 11 分钟才能阅读完成。
12 月 20 日的 Techo 大会上,腾讯云重磅公布了自研云原生数据库 TDSQL-C Serverless(原 CynosDB Serverless),这是国内首款计算和存储全 Serverless 架构的 云原生 MySQL,TDSQL-C Serverless 可能让企业用户像应用水、电、煤一样应用云数据库,用户不需为数据库的闲时进行付费,而是依照数据库资源响应单元理论使用量进行计费,将腾讯云云原生技术普惠用户。
作为 Serverless 生态中的重要一环,TDSQL-C Serverless 的公布也补齐了 Serverless 架构里 MySQL 数据库的空缺。因而,Serverless Framework 同步公布了 TDSQL-C Serverless 组件。这样,腾讯云就领有了一套 Serverless 全栈的外围解决方案,包含 Serverless API 网关、腾讯云的 Serverless 函数计算服务、Serverless 对象存储和数据库。在数据存储层能够通过 TDSQL-C Serverless 间接对数据库连贯并进行 SQL 操作。
TDSQL-C Serverless(MySQL 数据库),具备齐全自动化的扩容能力,可能随着用户业务的申请数的减少和缩小,智能化“收缩”和“放大”,实现资源的主动“吞吐”。从此以后,开发者能够真正的实现 Serverless 利用的开发,专一于业务自身,罢黜运维,按需付费,享受 Serverless 架构带来的泛滥劣势。
另外,TDSQL-C Serverless 数据库在试用期间完全免费。
服务个性
- 主动驾驶(Autopilot):
数据库依据业务负载主动启动进行,无感扩缩容,扩缩容过程不会断开连接。
- 按应用计费(Utility Pricing):
按理论应用的计算和存储量计费,不必不付费,按秒计量,按小时结算。
实用场景
- 开发、测试环境等低频数据库应用场景。
- 物联网(IoT)、边缘计算等不确定负载场景。
- 中小企业建站等 SaaS 利用场景。
上面的教程将以 Node.js 开发语言的函数,领导您如何疾速创立 TDSQL-C Serverless MySQL 实例,并在云函数中进行调用:
操作步骤
- 配置环境变量
- 配置公有网络: 通过 Serverless Framework VPC 组件 创立 VPC 和 子网,反对云函数和数据库的网络买通和应用。
- 配置 Serverless DB: 通过 Serverless Framework Cynosdb 组件 创立 MySQL 实例,为云函数我的项目提供数据库服务。
- 编写业务代码: 通过 Serverless DB SDK 调用数据库,云函数反对间接调用 Serverless DB SDK,连贯 PostgreSQL 数据库进行治理操作。
- 部署利用: 通过 Serverless Framework 部署我的项目至云端,并通过云函数控制台进行测试。
- 移除我的项目: 可通过 Serverless Framework 移除我的项目。
1. 配置环境变量
在本地建设目录,用于寄存代码及依赖模块。本文以 test-MySQL
文件夹为例。
mkdir test-MySQL && cd test-MySQL
因为目前 TDSQL-C Serverless 只反对 ap-beijing-3
,ap-guangzhou-4
,ap-shanghai-2
和 ap-nanjing-1
四个区域,所以这里还须要配置下,只须要在我的项目根目录下创立 .env
文件,而后配置 REGION
和 ZONE
两个环境变量:
# .env
REGION=xxx
ZONE=xxx
2. 配置公有网络
在 test-MySQL
目录下创立文件夹 VPC
。
mkdir VPC && cd VPC
同时在 VPC
中新建 serverless.yml 文件,应用 VPC 组件实现公有网络和子网的创立。
serverless.yml
示例内容如下,全量配置参考产品文档
#serverless.yml
org: mysql-app
app: mysql-app
stage: dev
component: vpc # (required) name of the component. In that case, it's vpc.
name: mysql-app-vpc # (required) name of your vpc component instance.
inputs:
region: ${env:REGION}
zone: ${env:ZONE}
vpcName: serverless-mysql
subnetName: serverless-mysql
3. 配置 Serverless DB
在 test-MySQL
下创立文件夹 DB
,并在 DB
文件夹下新建 serverless.yml
文件,并输出以下内容,通过 Serverless Framework 组件实现云开发环境配置。
serverless.yml
示例内容如下,全量配置参考产品文档
# serverless.yml
org: mysql-app
app: mysql-app
stage: dev
component: cynosdb
name: mysql-app-db
inputs:
region: ${env:REGION}
zone: ${env:ZONE}
vpcConfig:
vpcId: ${output:${stage}:${app}:mysql-app-vpc.vpcId}
subnetId: ${output:${stage}:${app}:mysql-app-vpc.subnetId}
4. 编写业务代码与配置文件
在 test-MySQL
下创立文件夹 src
,用于寄存业务逻辑代码和相干依赖项。并在 src
文件夹下创立文件 index.js
,输出如下示例代码。在函数中通过 SDK 连贯数据库,并在其中实现 MySQL 数据库的调用。
exports.main_handler = async (event, context, callback) => {var mysql = require('mysql2');
var connection = mysql.createConnection({
host : process.env.HOST,
user : 'root',
password : process.env.PASSWORD
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {if (error) throw error;
console.log('The solution is:', results[0].solution);
});
connection.end();}
装置所需依赖模块:
npm install mysql2
实现业务代码编写和依赖装置后,创立 serverless.yml
文件,示例文件如下:
org: mysql-app
app: mysql-app
stage: dev
component: scf
name: mysql-app-scf
inputs:
src: ./
functionName: ${name}
region: ${env:REGION}
runtime: Nodejs10.15
timeout: 30
vpcConfig:
vpcId: ${output:${stage}:${app}:mysql-app-vpc.vpcId}
subnetId: ${output:${stage}:${app}:mysql-app-vpc.subnetId}
environment:
variables:
HOST: ${output:${stage}:${app}:mysql-app-db.connection.ip}
PASSWORD: ${output:${stage}:${app}:mysql-app-db.adminPassword}
5. 疾速部署
实现创立后,我的项目目录构造如下:
./test-MySQL
├── vpc
│ └── serverless.yml # vpc 配置文件
├── db
│ └── serverless.yml # db 配置文件
├── src
│ ├── serverless.yml # scf 组件配置文件
│ ├── node_modules # 我的项目依赖文件
│ └── index.js # 入口函数
└── .env # 环境变量文件
应用命令行在 test-MySQL
下,执行以下命令进行部署。
sls deploy
- 部署时须要扫码受权,如果没有腾讯云账号,请 注册新账号。
- 如果是子账号,请参考子账号权限配置实现受权
返回后果如下所示,即为部署胜利。
mysql-app-vpc:
region: xxx
zone: xxx
vpcId: xxxx-xxx
...
mysql-app-db:
dbMode: xxxx
region: xxxx
zone: xxxx
...
mysql-app-scf:
functionName: xxxx
description: xxx
...
59s › test-MySQL › "deploy" ran for 3 apps successfully.
部署胜利后,您可通过 云函数控制台,查看并进行函数调试,测试胜利如下图所示:
移除我的项目
在 test-MySQL
目录下,执行以下命令可移除我的项目。
sls remove
返回如下后果,即为胜利移除。
serverless ⚡ framework
4s › test-MySQL › Success
除了通过组件一键创立所有资源外,您也能够通过控制台实现 Serverless 版本 MySQL 数据库的创立,并在云函数中失常应用 SDK 的形式实现调用。
- 详情参考:https://cloud.tencent.com/doc…
- TDSQL-C Serverless 产品文档:https://cloud.tencent.com/doc…
One More Thing
立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 ???? serverless/start
欢送拜访:Serverless 中文网!