Rds基于mysql开发的_开发云数据库RDS MYSQL版讲解
前言 這篇文章適合所有的 C# 開發新手、老鳥以及想準備學習開發 C# 的程序猿。.NET Core是一個開源通用的開發框架,支持跨平臺, 阿里云函數計算推出了 dotnetcore2.1 runtime, 使用 C# 編寫 serverless 函數, 詳情見官方文檔:C# 函數入口. 在官方文檔描述中,我們獲知阿里云函數計算可以很好支持 asp.net core 的 Applicaiton:
ASP.NET Core Web API ASP.NET Core Web App ASP.NET Core Web App (Model-View-Controller) 在介紹 Serverless Web 開發新模式之前,我們先了解下將 C# WebApi/WebApp Serverless 化的好處:
無需采購和管理服務器等基礎設施 彈性伸縮,動態擴容 免運維, 極大降低人力成本 按需付費,財務成本低 本文以部署一個完善的 asp.net core 工程 Blogifier 為例,在函數計算環境中為例,向您講解如何使用阿里云函數計算快速構建或移植基于 asp.net core 開發的 WebApi/WebApp ,通過本文,您將會了解以下內容:
案例概覽 傳統服務器架構 VS Serverless架構 Serverless架構詳解 函數計算運行 Asp.net core App 原理 案例開發配置步驟
案例概覽 在本教程中,我們講解如何利用函數計算一步一步來構建 Web 的 Server 端,該案例是把一個 asp.net core 工程Blogifier 部署到函數計算,本文旨在展示函數計算做 Web Backend 能力,具體表現為以下幾點:
完善的 ASP.NET Core Web 系統遷移到 FC 的成本不高 FC 打通了專有網絡 VPC 功能,用戶的函數可以配置訪問專有網絡的云資源,比如本案例中 NAS 案例體驗入口: http://dotnet.mofangdegisn.cn/
https://dotnet.mofangdegisn.cn/
傳統服務器架構 VS Serverless架構 正常來說,用戶開發 Server 端服務,常常面臨開發效率,運維成本高,機器資源彈性伸縮等痛點,而使用 Serverless 架構可以很好的解決上述問題。下面是傳統架構和 Serverless 架構的對比:
image
阿里云函數計算是一個事件驅動的全托管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。函數計算會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,并提供日志查詢,性能監控,報警等功能。借助于函數計算,您可以快速構建任何類型的應用和服務,無需管理和運維。
Serverless 架構詳解 image.png
從上面的示例圖中,整體架構十分簡單明了, 用 FC 替代了 Web 服務器,但是換來的是免運維,彈性擴容,按需付費等一系列優點
函數計算運行 Asp.net Core App 原理 Asp.net Core App 運行在服務器上 image
A http request to your website will go through IIS/Nginx, then Kestrel, and finally will be passed on to ASP.NET Core
Asp.net Core App 運行在函數計算上 image
請求通過函數(with http trigger), 最后到達ASP.NET Core
tips: 基于函數計算環境運行新建 asp.net core app 可以參考dotnet runtime HTTP 觸發器的函數入口示例
在本文中,我們展示把一個現有的成熟的 asp.net core 工程低成本無縫遷移到函數計算環境。
案例開發配置步驟 準備工作 1. 創建 NAS 掛接點,配置 VPC , 具體參考函數計算nas使用示例 注:在本示例中使用 sqlite3 數據庫,這種文件類型的數據庫直接放置在 nas 即可,如果使用 mysql 等其他數據庫, 需要創建 RDS 數據庫, 配置 VPC , 具體參考通過 VPC 訪問 RDS 實例
可選操作,在準備函數的 region 創建日志,用于函數的調試, 具體參考函數計算配置日志服務 創建函數 創建 Service (假設是 csharp-web), 配置準備 vpc config , nas config 和日志服務,比如案例體驗的 Service 配置如下圖: image 下載 asp.net core 工程,Blogifier, 用 vs 打開, debug 本地可以正常運行。 注:本地安裝 dotnetcore2.1 在工程中增加入口函數,使得該工程可在函數計算執行環境運行,diff dotnet publish -c Release, 跳轉到publish目錄, 將相關的靜態資源/可寫/共享目錄移動到上述配置的 NAS 的某個目錄(這里假設是 www目錄, 對應步驟2中的diff)
dotnet publish -c Release
cp -r plugins/Common/bin/Release/netcoreapp2.1/publish/* src/App/bin/Release/netcoreapp2.1/publish/
src/App/bin/Release/netcoreapp2.1/publish/
mkdir lib
// 選擇函數計算執行環境所需要的so, 其他的刪除即可
cp runtimes/linux-x64/native/libe_sqlite3.so ./lib
// 這里是傳送對應的靜態文件和 app.db 到 nas 中, 詳情看下面的描述
rm -rf wwwroot app.db runtimes
zip -r code.zip *
// 最后使用這個 code.zip 創建 handler 為 App::App.FcRemoteEntrypoint::HandleRequest 函數 將 publish 目錄下的 wwwroot 和 app.db 傳送到 nas 的 www 目錄, 可以使用 ecs 掛載 nas 傳輸過去, 也可以采用如下簡單函數傳輸過去
|-- index.py |-- www 注: www目錄下面有 wwwroot 和 app.db
index.py代碼:
-- coding: utf-8 --
import logging import os def handler(event, context): os.system("mkdir -p /mnt/share/www") os.system("cp -r /code/www/* /mnt/share/www/") os.system("chmod -R 777 /mnt/share/www") print( os.system("ls -ll /mnt/share/www") ) return 'ok' 基于上述代碼創一個函數 move-res-nas , 執行函數,將相關靜態和共享資源移動到 NAS 的/mnt/share/www/ 目錄。
注:最新版本的 Fun 工具已經支持 NAS 相關操作, 有興趣的同學可以使用 Fun 完成 NAS, VPC 的自動生成、配置以及網站工程文件上傳到 NAS
創建入口函數 blog (使用上一步驟中的 code.zip ), 給函數設置 http trigger ,類型為 anonymous , 類型都選上。給函數入口配置自定義域名(操作過程請參考:綁定自定義域名示例), 具體配置假設如下: image
注意: 綁定自定義域名之后,不用使用控制臺來進行調試,就只能使用瀏覽器來觸發函數,日志服務來進行調試。
總結 函數計算有如下優勢:
無需采購和管理服務器等基礎設施 專注業務邏輯的開發 提供日志查詢、性能監控、報警等功能快速排查故障 以事件驅動的方式觸發應用響應用戶請求 毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力 按需付費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的用戶訪問場景 除了上面所列的優勢,FC 可以做為 Web Backend,只需要編寫一個函數實現傳統 Web 服務器中的 conf 中的邏輯,就可以將一個完整的 Web 工程遷移到 FC ,從而從傳統的 Web 網站運維,監控等繁瑣的事務中解放出來。
總結
以上是生活随笔為你收集整理的Rds基于mysql开发的_开发云数据库RDS MYSQL版讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么播放视频_如何播放视频文件
- 下一篇: Linux常用运维命令笔记