辛宝Otto

辛宝Otto 的玄酒清谈

北漂前端程序员儿 / 探索新事物 / Web Worker 主播之一/内向话痨
xiaoyuzhou
email

速通-Laf 云開發平台及其實現原理

image

Laf 云開發平台及其實現原理》原文

平台工程線下 Meetup 北京站 2023-09-13

Laf 是我非常喜歡的雲平台,這裡有一個他們的線下分享,這裡簡單做個介紹。

產品介紹#

忽略

產品演示#

產品特點總結#

開箱即用的應用資源,包括提供計算資源、數據庫資源、日誌網絡存儲等應用所需要的一切資源,不需要準備任何環境,包括電腦環境和物理環境。

目標是盡可能縮短開發流程,降低開發門檻。如果一個應用部署一個環境需要一天,我們可能一天已經做一個 demo 出來,已經上線發給用戶或群友測試了。

開源開放的態度,Laf 所有的源代碼是開源的,我們用的組件也都是開源的,不包含任何廠商綁定,可以跑在任何雲上,沒有後顧之憂。

技術實現介紹#

技術選型#

  • node 編程語言
  • 存儲選擇 minIO,開源和橫向拓展能力
  • 數據庫選擇 mongo
  • 網關 apisix,無縫修改動態路由、豐富的插件、開源開放

開發者使用流程#

  • ide 或者 cli 開發
  • 創建應用,連接到 laf server
  • 通過 k8s 創建一個應用實例,放 node runtime
  • 分配數據庫、存儲
  • 應用創建、啟動

用戶流量流程#

  • 調用雲函數、調用接口
  • 流量到網關,網關找到 appID 找到 runtime
  • 確定函數名稱,執行,響應返回

serverless 實現方案比較

  • 一種方案是每次請求啟動一個 pod,進行處理,每次都是全新的環境,擴縮容比較簡單,冷啟動比較麻煩,而且不支持長連接
  • laf 選擇的是長連接內存方案,沒有冷啟動,容器始終運行,天然支持長連接,擴縮容通過 k8s 的 hpa 實現,擴縮容的技術實現會複雜

還有一些細節,沒做過理解不了,就不提了。

開發者角度#

  • 編寫雲函數,會編譯成 js,存儲數據庫、發布到 runtime
  • 調用 node vm 模塊,處理成 script 對象,緩存到內存,調用雲函數從內存裡獲取 vm 的 script 對象並執行
  • 沒有編譯的過程
  • http 調用時從內存裡獲取編譯後的結果,處理上下文,並執行代碼
  • 雲函數直接調用,在 require 時候會識別是否雲函數,處理為 node_module

對象存儲部分#

通過 MinIO 存儲 bucket,配合訪問策略,實現多租戶隔離

數據庫部分#

mongo 本身有用戶管理機制,創建 user 權限隔離。

如果流量突發,會不會影響平台?對 mongodb 的流量拆包,判斷請求頻率限制,可以丟棄,也可以數據庫計量計費。

網關部分#

利用 apifix,處理動態路由。

雲函數、應用、存儲 bucket 都通過他分配二級域名。

laf pilot#

主要是通過 ai 分析問題,理解文檔知識點,從而寫出代碼。

  • 業務代碼實現
  • 文檔使用問題
  • 其他問題

其他為實現能力展望#

介紹 sealos 實現雲資源調用。

其他忽略。

🏠 官網鏈接
https://laf.run

🐙GitHub 地址
https://github.com/labring/laf

📑 訪問 Laf 文檔
https://doc.laf.run/guide/

🏘️ 逛逛論壇
https://forum.laf.run/

個人感受#

比較系統介紹了 laf 基本能力,個人是用戶了,所以很多知識點理解起來比較容易。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。