摘要:函數(shù)計算就是這里的膠水。總結(jié)函數(shù)計算有如下優(yōu)勢無需采購和管理服務(wù)器等基礎(chǔ)設(shè)施專注業(yè)務(wù)邏輯的開發(fā)提供日志查詢性能監(jiān)控報警等功能快速排查故障以事件驅(qū)動的方式觸發(fā)應(yīng)用響應(yīng)用戶請求毫秒級別彈性伸縮,快速實現(xiàn)底層擴容以應(yīng)對峰值壓力按需付費。
摘要: 使用 puppeteer 結(jié)合函數(shù)計算,可以快速的構(gòu)建彈性的服務(wù)完成各種功能,包括:生成網(wǎng)頁截圖或者 PDF、高級爬蟲,可以爬取大量異步渲染內(nèi)容的網(wǎng)頁、模擬鍵盤輸入、表單自動提交、登錄網(wǎng)頁等,實現(xiàn) UI 自動化測試和捕獲站點的時間線,以便追蹤你的網(wǎng)站,幫助分析網(wǎng)站性能問題
簡介
使用 puppeteer 結(jié)合函數(shù)計算,可以快速的構(gòu)建彈性的服務(wù)完成各種功能,包括:
生成網(wǎng)頁截圖或者 PDF
高級爬蟲,可以爬取大量異步渲染內(nèi)容的網(wǎng)頁
模擬鍵盤輸入、表單自動提交、登錄網(wǎng)頁等,實現(xiàn) UI 自動化測試
捕獲站點的時間線,以便追蹤你的網(wǎng)站,幫助分析網(wǎng)站性能問題
接下來,將基于一個腳手架項目開發(fā)我們自己 puppeteer 項目。
下載項目
>>> git clone -o starter-kit https://github.com/awesome-fc/puppeteer-fc-starter-kit.git your_project_name
項目結(jié)構(gòu)
├── lib chrome headless 依賴的共享庫,打包的時候,拷貝到打包項目的根目錄下 ├── chrome │ ├── buildChrome.sh 編譯 chrome headless shell 腳本,基于它,可以編譯最新的版本 │ └── headless_shell.tar.gz 編譯后的 chrome headless 二進制打包文件 ├── src │ ├── index.js 函數(shù)調(diào)用入口文件,函數(shù) handler 為 index.handler,您的業(yè)務(wù)代碼寫在這里 │ └── starter-kit │ ├── config.js 通過環(huán)境變量,獲取相關(guān)配置屬性,如:chrome 執(zhí)行目錄和安裝目錄等配置 │ ├── local.js 本地測試操作 chrome headless 的 API 是否正確,通過執(zhí)行命令:npm run local │ └── setup.js 安裝 chrome headless 相關(guān)邏輯代碼,如:基于 OSS 安裝或者本地目錄安裝 ├── package.json └── package.zip 輸出函數(shù)計算打包文件,通過命令:npm run package 或 npm run package-nochrome
如何寫業(yè)務(wù)代碼
index.js 文件
const setup = require("./starter-kit/setup"); exports.handler = async (event, context, callback) => { const browser = await setup.getBrowser(context); exports.run(browser).then( (result) => callback(null, result) ).catch( (err) => callback(err) ); }; exports.run = async (browser) => { // 實現(xiàn)您自己的業(yè)務(wù)代碼 // 下面是一個示例代碼,需要替換成您自己的業(yè)務(wù)代碼 // 示例實現(xiàn)了對固定網(wǎng)頁截圖并返回圖片的功能 const page = await browser.newPage(); await page.goto("https://fc.console.aliyun.com"); return page.screenshot({ clip: { x: 200, y: 60, width: 780, height: 450, }, }); };
本地測試
執(zhí)行命令: npm run local 。測試您操作 chrome headless 的相關(guān) api 是否正確運行。
編譯打包
包含 chrome headless
執(zhí)行命令:npm run package 。命令會將 chrome headless 文件一起打包進項目,放在項目根目錄,函數(shù)執(zhí)行的時候,默認將 chrome headless 安裝到 /tmp 目錄。
不包含 chrome headless
執(zhí)行命令:npm run package-nochrome 。命令不會將 chrome headless 文件一起打包進項目,你需要額外將 chrome-headless 上傳到 OSS,通過環(huán)境變量告訴函數(shù)如何從 OSS 下載并安裝,默認將 chrome headless 安裝到 /tmp 目錄。為函數(shù)計算設(shè)置環(huán)境變量:
CHROME_BUCKET(必填): chrome headless 上傳到 OSS 的 bucket CHROME_REGION(必填): chrome headless 上傳到 OSS 的 region CHROME_KEY(必填): chrome headless 上傳到 OSS 的 key。 默認值: headless_shell.tar.gz
部署
編譯打包輸出的文件:package.zip,通過函數(shù)計算控制臺或者 fcli 命令工具上傳已打包文件。fcli 上傳已打包文件命令:
mkf myFunction -h index.handler -f package.zip -t nodejs8 # 代碼在本地的 package.zip 中
為什么要使用函數(shù)計算
函數(shù)計算是一個相對較新的事物,可能大部分開發(fā)人員或架構(gòu)師對它很陌生。微服務(wù)架構(gòu)是當(dāng)下很流行的一種系統(tǒng)架構(gòu),微服務(wù)架構(gòu)有沒有不夠完美的地方?答案是肯定的?;谖⒎?wù)架構(gòu),我們需要考慮使用什么微服務(wù)框架來架構(gòu)系統(tǒng)、需要多少臺服務(wù)器、如何有效減輕運維負擔(dān)等一些列問題。另外,按照《福布斯》雜志的統(tǒng)計,在商業(yè)和企業(yè)數(shù)據(jù)中心的典型服務(wù)器僅提供 5%~15% 的平均最大處理能力的輸出。這無疑是一種資源的巨大浪費。
有沒有辦法解決上面的不足?答案也是肯定的,阿里云函數(shù)計算就是在這樣的背景下應(yīng)運而生的。如果把云計算理解成一個執(zhí)行環(huán)境,那么,在這個環(huán)境里,函數(shù)(即業(yè)務(wù)邏輯的載體)+ 數(shù)據(jù)(即跟業(yè)務(wù)相關(guān)的輸入與輸出)就是應(yīng)用的核心,有了函數(shù)、數(shù)據(jù)、事件這三者,其它任何代碼和框架,無非是整個應(yīng)用的膠水和UI罷了。那么,最理想的情況就是用最少的時間寫膠水,將更多的時間投入到核心應(yīng)用的開發(fā)中,甚至,徹底實現(xiàn)整個軟件棧的微服務(wù)化。函數(shù)計算就是這里的膠水。
總結(jié)
函數(shù)計算有如下優(yōu)勢:
無需采購和管理服務(wù)器等基礎(chǔ)設(shè)施
專注業(yè)務(wù)邏輯的開發(fā)
提供日志查詢、性能監(jiān)控、報警等功能快速排查故障
以事件驅(qū)動的方式觸發(fā)應(yīng)用響應(yīng)用戶請求
毫秒級別彈性伸縮,快速實現(xiàn)底層擴容以應(yīng)對峰值壓力
按需付費。只需為實際使用的計算資源付費,適合有明顯波峰波谷的用戶訪問場景
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/11386.html
摘要:為函數(shù)計算設(shè)置環(huán)境變量必填上傳到的必填上傳到的必填上傳到的。另外,按照福布斯雜志的統(tǒng)計,在商業(yè)和企業(yè)數(shù)據(jù)中心的典型服務(wù)器僅提供的平均最大處理能力的輸出。函數(shù)計算就是這里的膠水。 摘要: 使用 puppeteer 結(jié)合函數(shù)計算,可以快速的構(gòu)建彈性的服務(wù)完成各種功能,包括:生成網(wǎng)頁截圖或者 PDF、高級爬蟲,可以爬取大量異步渲染內(nèi)容的網(wǎng)頁、模擬鍵盤輸入、表單自動提交、登錄網(wǎng)頁等,實現(xiàn) U...
摘要:企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)設(shè)施的自動化和配置。幸運的是,有許多云計算基礎(chǔ)設(shè)施自動化工具可用于幫助加快流程。企業(yè)需要深入了解將工作負載遷移到公共云的正確步驟,并因此降低成本。云遷移不會自行發(fā)生,在遷移項目成功之前并不能完成工作和任務(wù)。企業(yè)將業(yè)務(wù)遷移到云平臺的最大好處之一是可以降低工作和運營成本,其中一個最重要的因素是云計算基礎(chǔ)...
摘要:寫爬蟲抓取頁面是不是還需要等待頁面有數(shù)據(jù)了才能抓取,那么頁面渲染的這段時間雖然不長但架不住多啊是不是可以省去呢時間要好好的利用起來基礎(chǔ)不太了解的可以參考我這篇簡單使用的文章使用抓取接口攔截數(shù)據(jù)這里有小伙伴就要說了我都知道接口了直接去請求不就 寫爬蟲抓取頁面是不是還需要等待頁面有數(shù)據(jù)了才能抓取,那么頁面渲染的這段時間(雖然不長但架不住多啊)是不是可以省去呢 時間要好好的利用起來 基礎(chǔ)不太...
摘要:而在下,僅僅是喜歡這個數(shù)字,如是而已正則表達式正則表達式,又稱規(guī)則表達式。對象在爪洼死苦瑞特中,對象表示正則表達式,它是對字符串執(zhí)行模式匹配的強大工具。序列匹配,而則匹配。否則,將視為一個原義的字符。注意正則表達式會匹配全角空格符。 寫在最前面 看到標題你可能會疑惑為什么不是30分鐘?因為我這個文章圖文并茂,非??植?,兄弟,其實你不用30分鐘就可以看懂。你可能會以為我在吹牛B,但是當(dāng)你...
摘要:在飛車類游戲中,開始狀態(tài)和結(jié)束狀態(tài)的標志如圖所示。動作設(shè)計我們目前在設(shè)計飛車類游戲動作時,使用離散的動作,包括三種動作左轉(zhuǎn)右轉(zhuǎn)和。圖訓(xùn)練過程中激勵的趨勢圖總結(jié)本文介紹了如何使用在分鐘內(nèi)讓玩飛車類游戲。 作者:WeTest小編商業(yè)轉(zhuǎn)載請聯(lián)系騰訊WeTest獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。原文鏈接:https://wetest.qq.com/lab/view/440.html WeTest...
閱讀 3850·2023-04-25 20:41
閱讀 2700·2023-04-25 16:40
閱讀 1481·2021-09-23 11:44
閱讀 1284·2021-09-10 10:51
閱讀 1732·2021-09-07 09:59
閱讀 1763·2019-12-27 12:08
閱讀 607·2019-08-30 15:44
閱讀 3369·2019-08-30 11:08