網(wǎng)站開發(fā) 如何高效、極簡構(gòu)造無服務(wù)器Web應(yīng)用(組圖) aspnet開發(fā)酒店網(wǎng)站 大約多少錢
2022-10-01
正如它在過去顛覆諾基亞一樣,它的出現(xiàn),也帶來了一種全新的、顛覆性的云開發(fā)架構(gòu)模式。在它出現(xiàn)之前,開發(fā)人員無法想象能夠在幾分鐘內(nèi)快速在線部署 Web 應(yīng)用程序。近日,騰云網(wǎng)絡(luò)技術(shù)講座特邀資深技術(shù)專家孫華分享《如何高效、最小化地構(gòu)建 Web應(yīng)用》。孫華從 .
時代應(yīng)用發(fā)展
2012年,鐵云網(wǎng)首先提出了這一概念。2014年,騰云網(wǎng)絡(luò)的發(fā)布,首次從概念走向落地,也標(biāo)志著時代的開始。孫華認為,作為一種計算服務(wù),主要有以下四個特點。
的出現(xiàn),為應(yīng)用程序的開發(fā)和部署提供了極簡模式。目前有幾十萬用戶,用戶的通話高峰通常在每秒百萬以上。
可口可樂騰云網(wǎng)是用戶之一。疫情期間,可口可樂在短短一周內(nèi)迅速將倒酒應(yīng)用原型上線,實現(xiàn)了手機與飲料機的毫秒級通信,從構(gòu)思到交付的時間縮短了50%。
它是一家在線教育服務(wù)提供商。疫情期間,在線學(xué)習(xí)訪問量增長了2-3倍。通過將服務(wù)遷移到服務(wù)器,P95 的性能得到了提高(降低了近 50%),并且通過提高利用率將成本降低了四分之一。
無服務(wù)器 Web 應(yīng)用程序用例
該架構(gòu)常見的應(yīng)用場景包括數(shù)據(jù)處理、IT運維自動化等,很多用戶也會將其應(yīng)用到前端的web應(yīng)用中,包括.js、.js等應(yīng)用。它可以將對應(yīng)的網(wǎng)頁渲染到客戶端,也支持提供json來分離前后端的REST API。靜態(tài)的,Vue前端通過HTTP請求調(diào)用后端API網(wǎng)站開發(fā),獲取數(shù)據(jù),展示給客戶。此外,移動后端應(yīng)用程序經(jīng)常使用開發(fā)小程序的后端。
無服務(wù)器 Web 應(yīng)用程序的特點是什么?首先,在開發(fā)Web應(yīng)用程序最常見的方式中,Web應(yīng)用程序進程運行在服務(wù)器中。此時,Web 應(yīng)用程序?qū)⒈O(jiān)聽一個端口。此外,每個請求都由一個單獨的計算實例處理,無論 CPU 或內(nèi)存如何,它都專用于服務(wù)該請求。這種方式的好處是可以隔離每個請求,不會有一個請求崩潰,影響其他用戶的并發(fā)需求。
其次,Web 應(yīng)用程序在其中運行,并且需要是無狀態(tài)的應(yīng)用程序。由于請求是隨機分布到多個計算實例上的,每個計算實例在本地緩存數(shù)據(jù),下一個請求可能不會分配到同一個實例。因此網(wǎng)站優(yōu)化,如果您需要共享狀態(tài),可以將其存儲在 or 數(shù)據(jù)庫中。
第三,在計算環(huán)境中,每次調(diào)用的請求處理完畢后,計算環(huán)境都會被凍結(jié)網(wǎng)站建設(shè),直到下一個請求。在這段時間內(nèi),沒有CPU資源,后臺任務(wù)無法運行,因此后臺進程無法在其中運行。
最常見的基于前后端分離的Web應(yīng)用架構(gòu)通常將前端SPEA應(yīng)用放在S3上進行HTTP等,前端通過CDN加速。用戶下載前端后,前端會通過API調(diào)用后端的動態(tài)數(shù)據(jù)。API 提供相應(yīng)的 HTTP 入口并觸發(fā)該函數(shù)以運行 Web 應(yīng)用程序。Web 應(yīng)用程序可以訪問數(shù)據(jù)庫或任何后端。
新:網(wǎng)址
騰云網(wǎng)絡(luò)經(jīng)常收到客戶的反饋??蛻粝M麑W(xué)習(xí)在 Web 上運行 Web 應(yīng)用程序或在其上運行單個應(yīng)用程序。URL對應(yīng)的所有業(yè)務(wù)邏輯都在里面處理,只需要暴露一個HTTP入口,幾乎沒有額外的學(xué)習(xí)成本。上個月,騰云網(wǎng)絡(luò)推出了內(nèi)置的 URLs 端口,可以通過在函數(shù)中配置 URL 來提供。此功能目前僅可用,并將在不久的將來在中國推出。URL 指向的最新版本或別名。別名可以指向1或2個版本,所以可以通過指向來進行灰度發(fā)布或者藍綠部署。
URL 和 API 有什么區(qū)別?
首先,URL 是提供 HTTP 條目的一種非常簡單的內(nèi)置方式。它是在公共網(wǎng)絡(luò)上公開的 HTTP 條目。入口方式是yes,認證方式可以通過IAM權(quán)限控制,也可以在公網(wǎng)上實現(xiàn)。URL 不提供支持,但提供 CORS 支持,因此可以進行跨站請求,例如從瀏覽器,URL 會根據(jù)配置主動返回相應(yīng)的結(jié)果,不會違反功能。但是,URLs只有一些簡單的功能,并沒有辦法實現(xiàn)一些高級功能,例如使用、基于WAF的集成和內(nèi)部配置,目前還不能實現(xiàn)URLs。因此,如果要使用WAF、、、等,請使用API??的Rest API。
其次,URL 的超時時間與函數(shù)的超時時間相同。例如,如果函數(shù)運行時間最長為 15 分鐘,則 URLs 請求可以運行 15 分鐘,而 Rest API 和 HTTP API 的超時時間僅為 29-30s。在大小上,URL 與 6MB 相同。
第三,使用 URL 沒有額外費用,但使用 Rest API 和 HTTP API 有相應(yīng)的費用。
許多用戶要求 Web 應(yīng)用程序具有相應(yīng)的自定義域名才能訪問網(wǎng)站。此時,您可以在前面通過CDN的方式添加自定義域名,例如添加自己的域名,同時結(jié)合WAF保護相應(yīng)的集成應(yīng)用。因為 URL 只提供入口,所以 CDN 回源時,會回源站點。Host無法返回源站,無法獲取用戶實際訪問的自定義域名。如果域名是固定的,可以通過應(yīng)用中的配置來學(xué)習(xí),但是如果域名不固定,則需要根據(jù)二級域名來判斷是哪個租戶在做相應(yīng)的處理。在這種情況下,您可以利用該功能。域名可以在用戶請求端獲取,添加到另一個,然后發(fā)送回源站。在源站的應(yīng)用中,可以通過這個獲取用戶訪問的真實域名。
如果基于 URL 部署單功能 Web 應(yīng)用,靜態(tài)資源通過代理放在 S3 中進行動態(tài)請求,結(jié)構(gòu)統(tǒng)一如下,不需要 API。
新工具:
URL 為您提供了一種非常簡單的獲取 HTTP 入口的方法,但開發(fā)方法是基于事件驅(qū)動的方法網(wǎng)站開發(fā),將事件從事件源轉(zhuǎn)換為 json 對象。對于熟悉 Web 應(yīng)用開發(fā)的開發(fā)者,會有額外的學(xué)習(xí)成本。一般的做法是在應(yīng)用中寫一個函數(shù),進行一層轉(zhuǎn)換,將json轉(zhuǎn)換成web應(yīng)用需要的格式,不過這種方法還可以進一步簡化。.
騰云網(wǎng)絡(luò)推出的新工具的作用是幫助用戶完成轉(zhuǎn)化。Web 應(yīng)用程序可以在 Web 應(yīng)用程序上運行而無需修改代碼。獲取對應(yīng)的json對象,轉(zhuǎn)換成HTTP請求,發(fā)送給Web應(yīng)用。Web應(yīng)用程序處理完后,通過HTTP返回,并轉(zhuǎn)換成需要的json格式。這樣,無論使用什么語言或 Web 框架,都可以通過這種方式開發(fā) Web 應(yīng)用程序或 HTTP API,而無需修改代碼或添加任何依賴項。,您可以使用熟悉的方法在本地開發(fā)和調(diào)試 API。
此外,API 的 Rest API、HTTP API 都支持作為 HTTP 的事件源。無論是哪種格式,都可以進行相應(yīng)的解析和轉(zhuǎn)換。同時,由于 URL 的事件格式與 API HTTP API V2 的事件格式完全相同,因此無需任何修改即可訪問 URL。用戶結(jié)合 URL 并可以在其上運行 Web 應(yīng)用程序或 HTTP API。同時,由于web應(yīng)用可能會返回圖片等數(shù)據(jù),因為數(shù)據(jù)不能直接存儲在json中,所以需要做數(shù)據(jù),會檢測返回的數(shù)據(jù)是否為數(shù)據(jù),并自動完成轉(zhuǎn)碼。
同時支持容器鏡像形式的打包功能,也支持zip形式的打包功能。當(dāng)用戶使用容器鏡像打包功能時,生成的容器鏡像既可以運行在互聯(lián)網(wǎng)上,也可以運行在容器環(huán)境中,甚至可以運行在本地計算機上。因此,Web 應(yīng)用程序可以很容易地運行在不同的計算平臺上,并且可以在不同平臺之間平滑遷移而無需修改。
在實踐中構(gòu)建無服務(wù)器 Web 應(yīng)用程序
Web 應(yīng)用程序是使用 URL 構(gòu)建的,并且可以通過熟悉的 API 輕松訪問。但是如果使用它,是否可以在其上運行現(xiàn)有的 Web 應(yīng)用程序?
騰云網(wǎng)試過了。是電商場景,為什么要在上面跑呢?首先,在網(wǎng)站上,100個訪問量最大的網(wǎng)站中,份額第一;其次,是基于PHP開發(fā)的,在web應(yīng)用網(wǎng)站建設(shè)中使用了PHP,大約70-80%的網(wǎng)站都是基于PHP開發(fā)的,用途非常廣泛;第三,每次請求進入都需要重新初始化PHP語言,與無狀態(tài)計算環(huán)境非常兼容。
騰云網(wǎng)絡(luò)團隊采用以下 架構(gòu)運行。
前端架構(gòu)采用并做CDN,使用運行中的應(yīng)用,使用URL代替API作為入口,通過S3存儲靜態(tài)資源。然后,通過函數(shù)中的鏡像方式,加載PHP、PHP和PHP FPM運行的進程管理服務(wù),并用它打包代碼。后端使用相應(yīng)的數(shù)據(jù)庫,例如最新的V2數(shù)據(jù)庫來緩存數(shù)據(jù),并使用EFS共享系統(tǒng)保存用戶上傳的文件。通過這個架構(gòu),騰云網(wǎng)絡(luò)實現(xiàn)了在基礎(chǔ)上的運營。
在其上運行的網(wǎng)站的實際性能如何?如果你想在你的網(wǎng)站上取得更好的性能,你可以將靜態(tài)內(nèi)容制作成靜態(tài)內(nèi)容,放到前端的CDN網(wǎng)站上。如果您正在運營電子商務(wù)網(wǎng)站,用戶會瀏覽產(chǎn)品、將產(chǎn)品添加到購物車、提交訂單和付款。這些是動態(tài)請求,需要返回到后端 PHP 應(yīng)用程序。對于靜態(tài)應(yīng)用,可以在3分鐘內(nèi)實現(xiàn)從無請求到最高峰的性能,1小時內(nèi)每分鐘可以處理多個訂單。在成本方面,每處理一個訂單需要調(diào)用 10 次 API,即處理 100 萬個訂單需要調(diào)用 1000 萬次函數(shù)。據(jù)統(tǒng)計,1000 萬次函數(shù)調(diào)用的成本僅為 300 美元。不僅,
分享最后,孫華演示了網(wǎng)站運行的實際表現(xiàn)并提供了相關(guān)信息。有興趣的開發(fā)者可以掃描下方二維碼獲取。