華為云低代碼引擎 TinyEngine 服務端正式開源(華為云低代碼平臺)
作者 | TinyEngine 團隊
策劃 | Tina
背景介紹
TinyEngine 低代碼引擎介紹
隨著企業(yè)對于低代碼開發(fā)平臺的需求日益增長,急需一個通用的解決方案來滿足各種低代碼平臺的開發(fā)需求。正是在這種情況下,低代碼引擎應運而生。它是一種通用的開發(fā)框架,通過對低代碼平臺系統(tǒng)常用的功能進行解構(gòu),將其劃分為多個功能模塊,并為每個模塊定義了相應的協(xié)議和開發(fā)范式,使得開發(fā)者可以根據(jù)自身的業(yè)務需求,輕松定制開發(fā)出自己的低代碼開發(fā)平臺。
TinyEngine 提供了低代碼底層能力,并集成了人工智能,從而使用戶能夠高效開發(fā)。TinyEngine 具有強大的拖拽功能,無論是圖元還是復雜組件,都能在畫布上帶來流暢的體驗。它適用于多場景的低代碼平臺開發(fā),包括資源編排、流程編排、服務端渲染、模型驅(qū)動、移動端、大屏端以及頁面編排等低代碼平臺。
TinyEngine 官網(wǎng):_https://opentiny.design/tiny-engine
TinyEngine 源碼:_https://github.com/opentiny/tiny-engine (歡迎 star)
服務端開源介紹
2023 年 9 月 21 日,TinyEngine 在華為全聯(lián)接大會正式宣布開源,引發(fā)了廣泛的關注,3 個月時間收獲了 960 個 Star,組建了 4 個用戶交流社群,成員數(shù) 772 名。
很多企業(yè)和個人開發(fā)者嘗試基于 TinyEngine 搭建自己的低代碼平臺,為搭建企業(yè) Web 應用提效。在使用過程中,大家也遇到了很多問題,比較常見的包括:如何對接服務端、如何導入第三方組件庫、如何使用插槽、如何生成代碼、如何開發(fā)自定義插件等,為此我們在 10 月 27 日策劃了一次線上直播答疑活動,邀請了團隊技術專家為大家答疑解惑。
其中如何對接服務端是眾多開發(fā)者非常關注的問題,為了幫助開發(fā)者打通低代碼平臺搭建的前后端整體流程,本次 TinyEngine 低代碼引擎服務端配套代碼的開源,讓開發(fā)者能夠深入了解 TinyEngine 低代碼引擎的前后端運行機制,更能夠讓更多的小伙伴以更深的層次參與到產(chǎn)品共建,共同探討并改進系統(tǒng),推動其不斷優(yōu)化,帶來更高的創(chuàng)新潛力,使得更多的人能夠從中受益。
同時服務端的開源為自由定制和擴展提供了可能,開發(fā)者可以參考 TinyEngine 的代碼,根據(jù)自身需求對服務端進行改造創(chuàng)新,從而使得產(chǎn)品更具靈活性,能夠滿足各種復雜的業(yè)務需求,構(gòu)建一個強大而健壯的 TinyEngine 生態(tài)系統(tǒng)。
核心特性
當今互聯(lián)網(wǎng)應用的復雜性和用戶需求的多樣性要求我們搭建一套靈活的、便于擴展的系統(tǒng)架構(gòu),以滿足不斷變化的業(yè)務需求。因此我們引入了微服務的概念,將系統(tǒng)拆分為小而獨立的服務單元,使得每個服務單元都可以獨立開發(fā)、測試和部署。這種架構(gòu)不僅提高了團隊的協(xié)作效率,還使得系統(tǒng)更容易擴展和維護。
- TinyEngine 設計器微服務選擇了基于 Node.js 的技術棧,為前端開發(fā)者提供了一致的開發(fā)體驗,無需學習額外的語言即可全棧開發(fā),降低了開發(fā)難度和學習曲線,避免了學習新語言的困擾。更能夠從服務端的角度去理解 TinyEngine 設計器的運行原理與設計思想。
- 在我們的架構(gòu)設計中,我們采用了 Egg.js 作為業(yè)務接口微服務的框架。Egg.js 優(yōu)秀的設計和豐富的插件生態(tài)系統(tǒng),使得我們能夠迅速構(gòu)建可維護、可擴展的微服務,從而確保系統(tǒng)的穩(wěn)定性和可維護性。
- 為了降低服務耦合,我們還單獨封裝了提供數(shù)據(jù)庫操作接口的數(shù)據(jù)中心微服務,在框架選型上我們選擇了 Strapi,Strapi 是一個開源數(shù)據(jù)管理框架。不僅提供了強大的數(shù)據(jù)管理和查詢功能,還支持自定義內(nèi)容類型和靈活的 API 構(gòu)建,為我們的微服務提供了豐富的數(shù)據(jù)支持。Strapi 的易用性和可擴展性使得我們能夠高效地管理和發(fā)布數(shù)據(jù),確保前端業(yè)務接口始終能夠獲得及時、準確的數(shù)據(jù)支持。
綜上所述,我們的技術架構(gòu)旨在提供高效、可維護、可擴展的系統(tǒng),充分利用 Node.js 和現(xiàn)代化的開源工具,使我們能夠更好地滿足不斷變化的業(yè)務需求。這種架構(gòu)不僅提高了開發(fā)效率,還為未來的擴展和創(chuàng)新提供了堅實的基礎。
服務端架構(gòu)
根據(jù)上面的介紹,開發(fā)者可以根據(jù)微服務這一特性,輕松擴展并實現(xiàn)自己的 TinyEngine 服務端架構(gòu)。
- 業(yè)務接口微服務(webService):構(gòu)建業(yè)務的引擎, 匯總連接其他微服務為前端提供接口。
- 數(shù)據(jù)中心 (dataCenter):作為數(shù)據(jù)基座,統(tǒng)一進行數(shù)據(jù)管理,為其他微服務提供一致性的數(shù)據(jù)支持。
根據(jù)上述架構(gòu)特點,我們可以在此基礎上,通過核心的 webService (業(yè)務接口微服務) 搭配任務隊列服務 (RabbitMq、 Kafka、 RocketMq 等等) 連接其他功能微服務, 從而拓展整體系統(tǒng)的功能,例如:
- 構(gòu)建服務:由 webService 收集用戶請求觸發(fā)任務隊列執(zhí)行耗費機器資源的構(gòu)建設計器、區(qū)塊、物料的相關服務。
- 爬蟲服務:單獨封裝 安裝了 puppeteer 服務器的微服務,由 webService 觸發(fā)去執(zhí)行一些爬取數(shù)據(jù)、代理登錄等等操作。
- AI 大模型相關服務:連接自己內(nèi)部 AI 大模型, 進行設計器智能化相關的 AI 代碼生成、指令操作等等功能的。
- 發(fā)布服務:封裝自己的 CI/CD 流水線微服務,結(jié)合設計器代碼產(chǎn)出,使代碼生產(chǎn) – 構(gòu)建 – 部署一條龍式運作。
硬件配置
本地開發(fā)
推薦使用 windows 操作系統(tǒng), 推薦配置如下:
- 64 位操作系統(tǒng)
- 12 核 CPU
- 32G 內(nèi)存
服務容器化部署
以下信息為支撐 50 qps 并發(fā)量的配置參考, 開發(fā)者可根據(jù)實際情況進行具體問題具體分析,配置信息僅供參考.
配置單位:
- U: cpu 核數(shù)
- G: 內(nèi)存單位
在配置負載均衡的情況下推薦:
FAQ
服務端開源之后,如果不想啟動 webService 和 dataCenter 兩個后端服務器,是否還能沿用原來 mockServer?
答:可以正常使用 mockServer,啟動方式和原先一致,直接在項目里執(zhí)行 pnpm dev 即可
如果本地啟動了 webService 和 dataCenter,那么前端本地工程是否還需要更改配置?如果需要,如何更改配置?
答:需要更改配置,更改流程如下:啟動 tinyengine 修改 packages/design-core/vite.config.js 中 origin 的值為自己本地 webService 項目的地址端口(webService 端口默認為 7011)
運行如下腳本并啟動
pnpm install # 第一次啟動項目需要pnpm serve:frontend
復制代碼
啟動成功后瀏覽器會自動打開設計器頁面
具體搭建流程可參考官網(wǎng)本地化部署文檔:https://opentiny.design/tiny-engine#/help-center/course/backend/51
未來規(guī)劃
人工智能:計劃將低代碼平臺與 AIGC(人工智能生成內(nèi)容)技術相結(jié)合,為用戶提供更加智能、高效的應用開發(fā)體驗。后續(xù)我們考慮將低代碼平臺的開發(fā)流程與 AIGC 技術相結(jié)合,通過自然語言處理、機器學習和深度學習等技術,實現(xiàn)應用界面的自動生成、功能模塊的智能推薦和代碼的自動化生成等功能。
模型驅(qū)動:我們將致力于將低代碼平臺與模型驅(qū)動能力相結(jié)合,為用戶提供更加高效、智能的開發(fā)體驗。深入研究各種業(yè)務模型,包括數(shù)據(jù)模型、業(yè)務流程模型等,以了解其特性和需求。后續(xù),我們將低代碼平臺的開發(fā)流程與模型驅(qū)動能力相結(jié)合,通過可視化建模工具和自動化技術,實現(xiàn)業(yè)務模型的快速構(gòu)建和部署。通過這一創(chuàng)新性的接入方式,用戶將能夠更加高效地構(gòu)建和調(diào)整業(yè)務模型,降低開發(fā)難度和成本。
原文鏈接:https://www.infoq.cn/article/H97rFm7UrBoj4cfz51ar