3
發(fā)布日期:2024-12-22 05:31 瀏覽次數(shù):
4166am金沙如果你想將自己的項目從「云開發(fā)」遷移到「云托管」,你可以仔細閱讀此文檔,理解兩者的不同點以及相似特性,在遷移之前充分調(diào)研和判斷;同時我們也提供了一些實踐代碼,可以供你參考。
云托管以容器服務(wù)為核心,立足業(yè)務(wù)需要提供各種周到的資源,比如Mysql數(shù)據(jù)庫,對象存儲等。所有的資源和產(chǎn)品設(shè)計都是圍繞如何更好、更方便的使用容器服務(wù),打造一站式的后端服務(wù)平臺。
云開發(fā)以云函數(shù)提供的計算能力為核心,圍繞其打造業(yè)務(wù)開發(fā)需要的服務(wù)產(chǎn)品,比如Mongo協(xié)議的數(shù)據(jù)庫;整合對象存儲以及相關(guān)的存儲處理解決方案;擴展能力。云開發(fā)產(chǎn)品設(shè)計的主旨是,打造一站式后端和強效的中間件平臺。
都全部負責(zé)運行容器的創(chuàng)建、管理和刪除清理操作,用戶沒有權(quán)限對其進行管理。
云函數(shù)需要用戶提供能在指定鏡像中運行的代碼,云托管容器服務(wù)需要用戶提供鏡像(或者鏡像的原料)
云函數(shù)的鏡像是定制的,不可更改;云托管的鏡像是用戶自己提供的,可隨意定制
云函數(shù)的容器實例上層是SCF的服務(wù)層,控制每次調(diào)用對應(yīng)的實例以及環(huán)境。云托管的容器實例上層直接是網(wǎng)絡(luò),沒有嚴格限制更加自由。
云函數(shù)的容器實例有重用,實例可以服務(wù)多次S4166am金沙信心之選CF調(diào)用;云托管的容器實例運行直達,有常駐運行形態(tài)。
首先你需要對云開發(fā)環(huán)境使用到的資源進行盤點,盤點過后,我們需要一一對每個資源點進行遷移操作,一般有如下:
「云函數(shù)」需要遷移到「云托管服務(wù)」中,你可以根據(jù)自己的需要,一個云函數(shù)對應(yīng)建立一個服務(wù),也可以將多個云函數(shù)集中起來建立同一個服務(wù)。劃分依據(jù)一般按照自己的業(yè)務(wù)來決定。
根據(jù)業(yè)務(wù)盤點環(huán)境中的云函數(shù),分門別類的進行整合,劃歸為多個大一些復(fù)合型函數(shù)計算
根據(jù)使用的云函數(shù)語言,重新編寫入口代碼,以下以nodejs舉一個例子,模擬云函數(shù)根據(jù)函數(shù)名路由到各個執(zhí)行函數(shù)中。具體代碼示例可以點此下載
相應(yīng)的在小程序端調(diào)用方式也需要變化,按照上述服務(wù)配置,小程序app.js增加一個方法,內(nèi)容如下:
這種類型,有部分開發(fā)者之前在使用云開發(fā)云函數(shù)的時候,也是將其看成普通服務(wù)器形式來用的,這種方式效率很低,本身也不適合云函數(shù)。可以直接平移到云托管成為一個服務(wù)。調(diào)用方式也基本平移,甚至可以更簡化,因為callcontainer比callfunction更適合這種類型。
云函數(shù)最重要的函數(shù)模塊wx-server-sdk,在遷移到云托管后基本就失效了,包括對數(shù)據(jù)庫、存儲以及云調(diào)用的方法,在云托管中都有更靈活的使用方式,所以涉及模塊資源方法的云函數(shù),不是直接復(fù)制粘貼了事,需要對代碼的方法調(diào)用也要做一些更改,在這里針對各種資源的更改將在各資源下面專門講解。
另一方面就是云函數(shù)自帶用戶信息鑒權(quán),一般我們會cloud.getWXContext()形式獲取用戶openid等信息,在云托管中直接從請求的req.headers中讀取,所以涉及到的也要改一下。
最后,在小程序端wx.cloud.CloudID處理的開放信息CloudID,云函數(shù)會自動解析為開放數(shù)據(jù),但是云托管基于語言框架靈活性考慮不做這種封裝,所以也需要你自己通過API完成信息置換,可以參考此文檔來操作。
注意:云函數(shù)的執(zhí)行是一次執(zhí)行對應(yīng)一次請求,所以在業(yè)務(wù)中無需考慮數(shù)據(jù)庫連接數(shù)問題,但放在云托管中就需要考慮這一點
「云開發(fā)」靜態(tài)資源存儲和「云托管」提供的是同一種形態(tài)產(chǎn)品,只不過隸屬的環(huán)境不同,所以這里的遷移比較好進行。
首先遷移存儲資源,可以參考此文檔,使用工具登錄「云開發(fā)」和「云托管」的存儲資源(云開發(fā)環(huán)境也可以使用,存儲桶的名稱可以從CloudID中獲取)。
將存儲資源遷移完成后,保證兩邊資源同步,此時就可以對客戶端替換資源鏈接了,將云開發(fā)靜態(tài)默認域名,替換成云托管靜態(tài)默認域名。
如果你對外是自定義域名,則可以在云托管默認域名先配置同樣的域名信息,然后在直接修改域名的DNS解析,達到無縫遷移的效果。
「云開發(fā)」的云存儲和「云托管」的對象存儲提供的也是同一種形態(tài)產(chǎn)品,只不過隸屬的環(huán)境不同。
在資源層面的遷移過程,和靜態(tài)資源存儲的操作一致。(如果云開發(fā)云存儲的桶信息找不到,可以使用云開發(fā)CLI完成資源下載,然后用COS工具上傳到云托管對象存儲)
小程序端的方法仍然可以正常使用,但是需要注意的是,要確保執(zhí)行的環(huán)境是云托管環(huán)境,特別是一個小程序使用多個環(huán)境ID的情況。
「云開發(fā)」的云數(shù)據(jù)庫屬于mongo協(xié)議的flexdb數(shù)據(jù)庫,云托管沒有與其對應(yīng)的數(shù)據(jù)庫類型。目前有兩個解決方法:
保留云開發(fā)數(shù)據(jù)庫形態(tài),但由于wx-server-sdk沒有提供外部環(huán)境初始化能力,因此可以使用cloudbase-node-sdk
不保留云開發(fā)數(shù)據(jù)庫形態(tài),業(yè)務(wù)上可以重新構(gòu)建代碼,遷移到云托管mysql數(shù)據(jù)庫,或者可以在騰訊云購買mongo數(shù)據(jù)庫,實現(xiàn)大體相等的非關(guān)系型數(shù)據(jù)庫資源替換,購買配置可以參考此文檔
「CMS管理系統(tǒng)」是云開發(fā)環(huán)境定制的項目,完全遷移難度巨大。建議放棄遷移,使用其他數(shù)據(jù)庫基礎(chǔ)在云托管支持范圍中的內(nèi)容管理系統(tǒng)。
云函數(shù)云調(diào)用主要靠wx-server-sdk封裝方法實現(xiàn),云托管可以直接開啟開放接口服務(wù),在容器服務(wù)內(nèi)直接無token調(diào)用API接口,就能完成云調(diào)用,所以云函數(shù)相關(guān)代碼可以改造一下,使用request封裝即可。具體可以參考此文檔
一種服務(wù)計算形態(tài)到另一種的遷移,本身就不是一個簡單復(fù)制粘貼的過程,整個服務(wù)底層以及提供邏輯都變化了,代碼改寫是不可避免的。
在遷移之前做好充分規(guī)劃,并充分考慮到線上生產(chǎn)環(huán)境的影響。盲目修正遷移,采取補救的形式來硬割裂的轉(zhuǎn)換行為是很不妥當(dāng)?shù)模彩露夹枰媱澲苊?,接駁時間點,執(zhí)行流程,備用方案都要考慮仔細,充分驗證。