日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

轻松构建基于 Serverless 架构的小程序

發(fā)布時(shí)間:2025/3/20 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻松构建基于 Serverless 架构的小程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

自 2017 年第一批小程序上線以來(lái),越來(lái)越多的移動(dòng)端應(yīng)用以小程序的形式呈現(xiàn)。小程序擁有觸手可及、用完即走的優(yōu)點(diǎn),這大大降低了用戶的使用負(fù)擔(dān),使小程序得到了廣泛的傳播。在阿里巴巴,小程序也被廣泛地應(yīng)用在淘寶/支付寶/釘釘/高德等平臺(tái)上。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-13jgVTEG-1582612433732)(https://data-analysis.cn-shanghai.log.aliyuncs.com/logstores/article-logs/track_ua.gif?APIVersion=0.6.0&title=%E8%BD%BB%E6%9D%BE%E6%9E%84%E5%BB%BA%E5%9F%BA%E4%BA%8E%20Serverless%20%E6%9E%B6%E6%9E%84%E7%9A%84%E5%B0%8F%E7%A8%8B%E5%BA%8F&author=cici&src=article)]

為了支撐大量的小程序,服務(wù)端面臨的挑戰(zhàn)有:

  • 大量的小程序是不活躍的,傳統(tǒng)的至少一臺(tái)服務(wù)器的方式會(huì)造成資源浪費(fèi);
  • 在活動(dòng)高峰期小程序的調(diào)用量激增,要求服務(wù)端能夠快速進(jìn)行彈性伸縮。

而小程序開(kāi)發(fā)者往往是客戶端/前端的開(kāi)發(fā)者,更多的精力在開(kāi)發(fā)業(yè)務(wù)代碼與應(yīng)用的快速上線上,而無(wú)心顧暇服務(wù)端的運(yùn)維操作。

阿里云 函數(shù)計(jì)算 是一個(gè)全托管 Serverless 計(jì)算服務(wù),讓開(kāi)發(fā)者無(wú)需管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫和上傳代碼,就能夠構(gòu)建可靠、彈性、安全的服務(wù)。

函數(shù)計(jì)算彈性、免運(yùn)維、高效、安全的特性十分適合作為小程序的服務(wù)端。

解決方案

函數(shù)計(jì)算封裝了一套小程序服務(wù)端模板,幫助小程序開(kāi)發(fā)者快速搭建基于函數(shù)計(jì)算的小程序。

使用這個(gè)模板搭建小程序應(yīng)用具有以下特點(diǎn):

  • 運(yùn)維效率高: 無(wú)需管理服務(wù)器,部署函數(shù)即可上線
  • 開(kāi)發(fā)效率高: 基于封裝好的數(shù)據(jù)接口,直接開(kāi)發(fā)業(yè)務(wù)代碼
  • 零費(fèi)用啟動(dòng): 服務(wù)端基于函數(shù)計(jì)算,數(shù)據(jù)庫(kù)采用表格存儲(chǔ),都是按量付費(fèi)并且有較大的免費(fèi)額度

小程序的工作流程


一個(gè)完整的支付寶小程序需要以下幾個(gè)元素:

  • 支付寶 App:是支付寶小程序的載體,運(yùn)行在用戶手機(jī)端
  • 小程序客戶端:是小程序展現(xiàn)給用戶的操作頁(yè)面
  • 小程序服務(wù)端:是小程序的邏輯處理單元,比如對(duì)用戶進(jìn)行身份認(rèn)證以及對(duì)數(shù)據(jù)進(jìn)行存取
  • 支付寶服務(wù)端:是支付寶 App 的邏輯處理單元,包含用戶的身份信息

函數(shù)計(jì)算封裝了一套小程序服務(wù)端模板,幫助小程序開(kāi)發(fā)者快速搭建基于函數(shù)計(jì)算的小程序。下面介紹服務(wù)端模板的工作流程。

FC 服務(wù)端模板工作流程

除了基礎(chǔ)設(shè)施的運(yùn)維問(wèn)題,服務(wù)端主要解決兩個(gè)通用問(wèn)題:

  • 身份認(rèn)證: 服務(wù)端提供的 API 如何對(duì)客戶端的請(qǐng)求進(jìn)行鑒權(quán)?客戶端的信息如果泄露如何保證數(shù)據(jù)安全?
  • 數(shù)據(jù)訪問(wèn): 客戶端如何進(jìn)行數(shù)據(jù)庫(kù)操作和文件操作?
  • 這是每一個(gè)小程序開(kāi)發(fā)都會(huì)遇到的共性的問(wèn)題,可以通過(guò)一些框架或者模板來(lái)避免重復(fù)建設(shè)。因此我們基于函數(shù)計(jì)算開(kāi)發(fā)了一個(gè)小程序應(yīng)用模板,解決了這些通用的問(wèn)題,讓開(kāi)發(fā)者能夠?qū)W⒃跇I(yè)務(wù)邏輯上,快速開(kāi)發(fā)上線自己的小程序。

  • 客戶端小程序通過(guò)支付寶 App 的 API,獲得 authCode,這個(gè)過(guò)程會(huì)在 App 中彈出用戶授權(quán)框;
  • 小程序客戶端向小程序服務(wù)端發(fā)起 createSession 請(qǐng)求,用于初始化的身份認(rèn)證;
  • 小程序服務(wù)端將 authCode 傳給支付寶服務(wù)端,支付寶服務(wù)端校驗(yàn) authCode,返回 accessToken;
  • 小程序服務(wù)端根據(jù)收到的 accessToken 生成一個(gè) sessionId 和一個(gè) STS token,在服務(wù)端記錄這 2 個(gè)信息然后把它們返回給客戶端。STS token 是用于訪問(wèn)服務(wù)端函數(shù)的憑證,而 sessionId 作為前面認(rèn)證成功而建立的會(huì)話信息,通過(guò)這 個(gè)sessionId 可以識(shí)別當(dāng)前請(qǐng)求的用戶信息;
  • 小程序客戶端再次需要獲取數(shù)據(jù),帶著證明自己身份的 sessionId 向小程序服務(wù)端發(fā)起獲取數(shù)據(jù)請(qǐng)求;
  • 小程序服務(wù)端首先根據(jù) sessionId 獲取用戶身份信息,再根據(jù)用戶信息獲取相關(guān)數(shù)據(jù);
  • 將用戶數(shù)據(jù)返回給小程序客戶端。
  • 搭建流程

    注冊(cè)支付寶小程序

    • 準(zhǔn)備工作:注冊(cè)支付寶開(kāi)發(fā)者賬號(hào)
      如果您尚未注冊(cè)支付寶開(kāi)發(fā)者賬號(hào),使用支付寶賬號(hào)登錄 螞蟻金服開(kāi)放平臺(tái),并完成開(kāi)發(fā)者身份注冊(cè)。詳細(xì)信息請(qǐng)參見(jiàn) 開(kāi)發(fā)者入駐說(shuō)明。
    • 創(chuàng)建支付寶小程序應(yīng)用
      • 使用支付寶賬號(hào)登錄 螞蟻金服開(kāi)放平臺(tái)進(jìn)入開(kāi)發(fā)者中心 創(chuàng)建小程序,填寫基本信息,并記錄下 APPID

      • 生成密鑰,需要在小程序服務(wù)端與支付寶服務(wù)端配置密鑰,對(duì)交易數(shù)據(jù)進(jìn)行雙方校驗(yàn)
      • 將公鑰配置在 【設(shè)置】->【開(kāi)發(fā)設(shè)置】-【接口加簽方式】,并記錄私鑰

    搭建小程序服務(wù)端

    • 準(zhǔn)備工作

      • 開(kāi)通 函數(shù)計(jì)算,表格存儲(chǔ),日志服務(wù)
    • 部署應(yīng)用

      • 進(jìn)入控制臺(tái)應(yīng)用中心,選擇 Mini App Todo List Server Template 模板,填寫剛才記錄的 APPID 與 PrivateKey,為 DBInstance/LogProject 取個(gè)自定義的名字(如果名字已被占用,會(huì)報(bào) Already Exists 的錯(cuò)誤),部署應(yīng)用

    搭建小程序客戶端

    • 準(zhǔn)備工作

      • 下載并安裝支付寶 小程序開(kāi)發(fā)者工具。
    • 搭建應(yīng)用

      • 在小程序項(xiàng)目根目錄下,安裝 fc-nodejs-sdk:
      npm install git://github.com/aliyun/fc-nodejs-sdk.git#mini-app --save
      • TODO LIST 客戶端代碼在 mini-app-todo-list-client
        • 修改server.js開(kāi)頭定義的變量,這些值會(huì)在 服務(wù)端模板 部署成功后自動(dòng)輸出:
    信息說(shuō)明
    fcAccountId阿里云AccountId
    fcRegion函數(shù)部署的區(qū)域,例如cn-shanghai
    fcServiceName函數(shù)計(jì)算服務(wù)名稱
    sessionFunctionNamesession函數(shù)的名稱,例如session
    dbFunctionNamedb函數(shù)的名稱,例如db

    由于 fc-nodejs-sdk 使用了ES6語(yǔ)法,在發(fā)布小程序時(shí),需要在小程序項(xiàng)目的根目錄下,新建一個(gè)文件mini.project.json,填入以下內(nèi)容:

    {"node_modules_es6_whitelist": ["@alicloud/fc2"] }

    至此,開(kāi)發(fā)工作已經(jīng)完成,您可以調(diào)試,上線您的小程序啦。

    總結(jié)

    小程序上線后隨著訪問(wèn)量的增加或者活動(dòng)期間的訪問(wèn)突增,對(duì)后端服務(wù)的穩(wěn)定和彈性也是一個(gè)很大的考驗(yàn)。函數(shù)計(jì)算上傳代碼即可運(yùn)行,極大地提高了后端服務(wù)的開(kāi)發(fā)效率;混合模式的彈性伸縮,輕松應(yīng)對(duì)負(fù)載變化。服務(wù)端模板與客戶端模板可以快速搭建基于函數(shù)計(jì)算的小程序應(yīng)用,這些特點(diǎn)使得函數(shù)計(jì)算成為支撐小程序很好的選擇。

    “阿里巴巴云原生技術(shù)圈關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開(kāi)發(fā)者的技術(shù)圈。”

    總結(jié)

    以上是生活随笔為你收集整理的轻松构建基于 Serverless 架构的小程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。