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/document/product/583/38012
- TDSQL-C Serverless 產品檔案:https://cloud.tencent.com/document/product/1003/50853
One More Thing
立即體驗騰訊云 Serverless Demo,領取 Serverless 新用戶禮包 ?? serverless/start
歡迎訪問:Serverless 中文網!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255519.html
標籤:其他
