经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » LESS » 查看文章
国内首款 Serverless MySQL 数据库重磅发布!
来源:cnblogs  作者:Serverless  时间:2021/2/1 12:49: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 实例,并在云函数中进行调用:

操作步骤

  1. 配置环境变量
  2. 配置私有网络: 通过 Serverless Framework VPC 组件 创建 VPC 和 子网,支持云函数和数据库的网络打通和使用。
  3. 配置 Serverless DB: 通过 Serverless Framework Cynosdb 组件 创建 MySQL 实例,为云函数项目提供数据库服务。
  4. 编写业务代码: 通过 Serverless DB SDK 调用数据库,云函数支持直接调用 Serverless DB SDK,连接 PostgreSQL 数据库进行管理操作。
  5. 部署应用: 通过 Serverless Framework 部署项目至云端,并通过云函数控制台进行测试。
  6. 移除项目: 可通过 Serverless Framework 移除项目。

1. 配置环境变量

在本地建立目录,用于存放代码及依赖模块。本文以 test-MySQL 文件夹为例。

  1. mkdir test-MySQL && cd test-MySQL

由于目前 TDSQL-C Serverless 只支持 ap-beijing-3ap-guangzhou-4ap-shanghai-2ap-nanjing-1 四个区域,所以这里还需要配置下,只需要在项目根目录下创建 .env 文件,然后配置 REGIONZONE 两个环境变量:

  1. # .env
  2. REGION=xxx
  3. ZONE=xxx

2. 配置私有网络

test-MySQL 目录下创建文件夹 VPC

  1. mkdir VPC && cd VPC

同时在 VPC 中新建 serverless.yml 文件,使用 VPC 组件完成私有网络和子网的创建。

serverless.yml 示例内容如下,全量配置参考产品文档

  1. #serverless.yml
  2. org: mysql-app
  3. app: mysql-app
  4. stage: dev
  5. component: vpc # (required) name of the component. In that case, it's vpc.
  6. name: mysql-app-vpc # (required) name of your vpc component instance.
  7. inputs:
  8. region: ${env:REGION}
  9. zone: ${env:ZONE}
  10. vpcName: serverless-mysql
  11. subnetName: serverless-mysql

3. 配置 Serverless DB

test-MySQL 下创建文件夹 DB,并在 DB 文件夹下新建 serverless.yml 文件,并输入以下内容,通过 Serverless Framework 组件完成云开发环境配置。

serverless.yml 示例内容如下,全量配置参考产品文档

  1. # serverless.yml
  2. org: mysql-app
  3. app: mysql-app
  4. stage: dev
  5. component: cynosdb
  6. name: mysql-app-db
  7. inputs:
  8. region: ${env:REGION}
  9. zone: ${env:ZONE}
  10. vpcConfig:
  11. vpcId: ${output:${stage}:${app}:mysql-app-vpc.vpcId}
  12. subnetId: ${output:${stage}:${app}:mysql-app-vpc.subnetId}

4. 编写业务代码与配置文件

test-MySQL 下创建文件夹 src,用于存放业务逻辑代码和相关依赖项。并在 src 文件夹下创建文件 index.js,输入如下示例代码。在函数中通过 SDK 连接数据库,并在其中完成 MySQL 数据库的调用。

  1. exports.main_handler = async (event, context, callback) => {
  2. var mysql = require('mysql2');
  3. var connection = mysql.createConnection({
  4. host : process.env.HOST,
  5. user : 'root',
  6. password : process.env.PASSWORD
  7. });
  8. connection.connect();
  9. connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  10. if (error) throw error;
  11. console.log('The solution is: ', results[0].solution);
  12. });
  13. connection.end();
  14. }

安装所需依赖模块:

  1. npm install mysql2

完成业务代码编写和依赖安装后,创建 serverless.yml 文件,示例文件如下:

  1. org: mysql-app
  2. app: mysql-app
  3. stage: dev
  4. component: scf
  5. name: mysql-app-scf
  6. inputs:
  7. src: ./
  8. functionName: ${name}
  9. region: ${env:REGION}
  10. runtime: Nodejs10.15
  11. timeout: 30
  12. vpcConfig:
  13. vpcId: ${output:${stage}:${app}:mysql-app-vpc.vpcId}
  14. subnetId: ${output:${stage}:${app}:mysql-app-vpc.subnetId}
  15. environment:
  16. variables:
  17. HOST: ${output:${stage}:${app}:mysql-app-db.connection.ip}
  18. PASSWORD: ${output:${stage}:${app}:mysql-app-db.adminPassword}

5. 快速部署

完成创建后,项目目录结构如下:

  1. ./test-MySQL
  2. ├── vpc
  3. └── serverless.yml # vpc 配置文件
  4. ├── db
  5. └── serverless.yml # db 配置文件
  6. ├── src
  7. ├── serverless.yml # scf 组件配置文件
  8. ├── node_modules # 项目依赖文件
  9. └── index.js # 入口函数
  10. └── .env # 环境变量文件

使用命令行在 test-MySQL 下,执行以下命令进行部署。

  1. sls deploy

返回结果如下所示,即为部署成功。

  1. mysql-app-vpc:
  2. region: xxx
  3. zone: xxx
  4. vpcId: xxxx-xxx
  5. ...
  6. mysql-app-db:
  7. dbMode: xxxx
  8. region: xxxx
  9. zone: xxxx
  10. ...
  11. mysql-app-scf:
  12. functionName: xxxx
  13. description: xxx
  14. ...
  15. 59s ? test-MySQL ? "deploy" ran for 3 apps successfully.

部署成功后,您可通过 云函数控制台,查看并进行函数调试,测试成功如下图所示:

移除项目

test-MySQL 目录下,执行以下命令可移除项目。

  1. sls remove

返回如下结果,即为成功移除。

  1. serverless ? framework
  2. 4s ? test-MySQL ? Success

除了通过组件一键创建所有资源外,您也可以通过控制台完成 Serverless 版本 MySQL 数据库的创建,并在云函数中正常使用 SDK 的方式完成调用。

One More Thing

立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包 ?? serverless/start

欢迎访问:Serverless 中文网

原文链接:http://www.cnblogs.com/serverlesscloud/p/14355485.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号