Midway Serverless 發布 2

可以看看優化后的開發情況,不僅和應用一樣,速度還比較快,也不會生成臨時目錄,修改實時生效。

這是 v2.0 和 v1.0 的根本性變化,也是整體架構升級帶來的巨大優勢。

當然,這一塊并不是功能的新增,除了架構升級之外,我們還提供了更多的能力。主要分成下面四大方面。

v2.0 純函數增強

首先,我們在純函數開發的場景下,對 HTTP 場景的函數,包括(HTTP觸發器,API 網關等)做了額外的增強支持。

???v2.0 升級 - 裝飾器統一

v1.0 時期,我們將觸發器的各個參數定義在 f.yml 中,雖然在云原生看來是標準的,但是實際在編寫代碼的時候,用戶覺得非常繁瑣,特別是加上我們的依賴注入容器中?@Func 裝飾器和類的命名,函數名 + handler 名 + 類名 + 方法名用戶需要命名多遍。

v2.0 版本開始,我們直接沿用應用的開發方式,使用原有的?@Controller 裝飾器應用到 HTTP 函數的開發中。

同時,原有 f.yml 里的 functions 字段將不再需要填寫,我們的發布工具會自動從代碼中分析路由,注冊函數。

除了?@Controller 裝飾器,我們也支持傳統應用的參數裝飾器,比如?@Query ,?@Body 等常用的從請求中獲取參數的裝飾器,也支持例如 SetHeader , ContentType 等對響應操作的裝飾器。

除了裝飾器統一之外,我們將原有的?@midwayjs/faas 框架也接入到了新的 Framework 體系,現在?@midwayjs/faas 成為了函數 Framework,它也擁有和應用相同的 Application , Context 定義。比如下面的 app 方法,和應用完全一致。

為了更好的支持函數式的寫法,我們對入口的 configuration.ts 增加了函數式寫法,這樣在一體化等函數式場景也可以選擇函數是寫法來編寫。

???v2.0 升級 - 工具鏈升級

從 midway v2.0 開始,我們使用?@midwayjs/cli 作為我們的基礎 cli 工具,原有的函數 cli(@midwayjs/faas-cli)將逐步完成它的歷史使命,也將統一到 @midwayjs/cli 中。

傳統的 cli 是把所有的功能都組合成一個大包,放到一個 npm 包下,這樣每個應用都要裝一份,比較占用硬盤空間和資源。新版本我們做了一個按需加載能力,按照場景進行區分,比如函數和應用場景安裝的 cli 工具就會不同。

這樣的好處是,新版本的 cli 安裝的包比較少,自然速度就快。同時,也能夠自由的去組合其中的插件,將其更合理的應用到不同的場景中。

???v2.0 升級 - 單元測試

針對原有函數的單元測試的情況,我們也做了調整。

原來的 invoke 方法,雖然簡單,但是很難跟創建應用的流程結合,每次 invoke 都是一次完整的初始化邏輯和調用,而且在 HTTP 的場景下,要填寫的參數眾多,難以模擬實際的效果。

新版本,我們沿用了應用的思路,既然能用應用模式啟動,那自然也使用應用的開發方式,使用 supertest 來做測試,比原來簡單和自然多了。

???v2.0?升級 - Web 模式

在 v1.0 時期,我們針對業界常用的 egg/koa/express,做了將應用代碼無縫遷移到 Serverless 環境的功能,這三種框架都可以在 f.yml 中增加 deployType 的方式,通過構建自動化生成入口,支持傳統應用上彈性容器的訴求。

之前也有用戶問道,如果我代碼不希望再跑在函數環境了怎么辦?v2.0 的答案是,你可以將那些代碼,通過應用的模式部署到自己的傳統容器,或者 Docker。

部署的方式很簡單,由于使用了?@midwayjs/serverless-app (上面測試提到過),和應用一樣的編碼模式,就可以啟動一個 HTTP 應用了。

****v2.0?一體化能力增

去年 6 月,我們向社區開放了一體化編碼的方案,使用函數式編碼,類 React Hooks 的編碼方式,讓前端開發的同學無比熟悉。

在 v2.0 之中,我們進一步增強了這套一體化方案,讓前端開發的體驗進一步提升。從下面這四個方面,我們將一一為大家介紹。

???一體化增強 - 極速啟動

首先是極速模式,傳統的 React/Vue 開發/構建的時間大家也都了解,Webpack 的工作時間往往接近 20s,而得益于最近新出的 vite,經過我們的測試和使用,傳統的 20s 將縮減到了 2s 以下,可以說前端再一次得以飛躍。

而 vite 良好的兼容性,可以包容非常多的前端框架,雖然 vite 剛出不久,相信過不了多久,就會在全前端場景鋪開。

???一體化增強 -?單元測試

第二個方面是單測,傳統的一體化,由于編譯的存在,我們的單測十分困難,有用戶不止一次的問我們,怎么做單測,怎么優雅的做前后端調用。

在新的 v2 中,我們采用了兩種方案做測試。

即可使用 supertest 來執行傳統的 HTTP 行為模擬做單測,也可以使用我們提供的 runFunction 函數來做單測。

???一體化增強 -?支持應用

最后

前端CSS面試題文檔,JavaScript面試題文檔,Vue面試題文檔,大廠面試題文檔

542a68eded2007a1385c260.png “image.png”)

???一體化增強 -?支持應用

最后

前端CSS面試題文檔,JavaScript面試題文檔,Vue面試題文檔,大廠面試題文檔

[外鏈圖片轉存中…(img-xf4oBwSw-1720097754337)]

[外鏈圖片轉存中…(img-MCnvZO4d-1720097754338)]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43697.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

UI 自動化分布式測試 -- Docker Selenium Grid

UI 自動化分布式測試 – Docker Selenium Grid Docker 和 Selenium Grid 的結合為分布式 UI 自動化測試提供了一種高效、可擴展且易于管理的方法。通過使用 Docker 容器化技術,測試環境的設置和配置變得更加簡便和一致;而 Selenium Grid 則允許在多個節…

電腦清理c盤內存空間怎么清理免費 怎么清理c盤的垃圾文件又不刪除有用文件

在計算機使用過程中,隨著時間的推移,C盤空間可能會被各種臨時文件、緩存和無用的注冊表項占用。這不僅會導致C盤空間不足,還可能影響計算機的性能。那么怎么樣清理C盤內存空間,怎么樣清理C盤的垃圾避開系統文件呢? 一…

?? 翻頁 上一頁/下一頁

data里面定義 currentPage: 0 // 當前頁數 created 初始化時賦值 this.formProps 是表格 要求是對象 this.contractArr 是傳過來要進行分頁的數組對象 初始化顯示第一個created() {this.formProps this.contractArr[0]} html頁面 <div><div>// 左箭頭<s…

linux 進程堆棧分析

1.進程pid jsp -l | grep appName 或 ps -ef | grep appName 2.查看cpu top -c pidps -mp pid-o THREAD,tid,time / top -H -p pid #打印出進程對應的線程id及運行時間timeprintf %x\n 線程id3.查看gc jstat -gcutil | grep pid 500jstat -class pid4.查看進程日志 jsta…

數據分析案例-2024 年全電動汽車數據集可視化分析

&#x1f935;?♂? 個人主頁&#xff1a;艾派森的個人主頁 ?&#x1f3fb;作者簡介&#xff1a;Python學習者 &#x1f40b; 希望大家多多支持&#xff0c;我們一起進步&#xff01;&#x1f604; 如果文章對你有幫助的話&#xff0c; 歡迎評論 &#x1f4ac;點贊&#x1f4…

Navicat BI 教程 | 圖表設計和儀表板

商業智能&#xff08;Business Intelligence&#xff0c;BI&#xff09;是將數據轉化為可操作的洞察力的實踐&#xff0c;使組織能夠簡化生產力和實現更好的整體績效。本博客最近介紹了新的 Navicat BI&#xff0c;這是一個幫助 BI 專業人員通過創建數據可視化&#xff08;如圖…

侯捷C++面向對象高級編程(上)-11-虛函數與多態

1.虛函數 2.virtual 3.繼承&#xff0b;復合關系下的構造和析構 4.委托&#xff0b;繼承

Shell學習——Shell運算符

文章目錄 運算符算術運算符關系運算符布爾運算符邏輯運算符字符串運算符 運算符 算術運算符 #!/bin/bash a10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a…

C語言 | Leetcode C語言題解之第221題最大正方形

題目&#xff1a; 題解&#xff1a; int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){int dp[301][301]{0};int wid0;if(matrixSize0&&matrixColSize[0]0){return 0;}for(int i0;i<matrixSize;i){for(int j0;j<matrixColSize[0];j){if(m…

Docker進入MongoDB

先是命令行開啟docker鏡像&#xff0c;然后進入docker鏡像&#xff0c;這是兩步 進入之后&#xff0c;開頭會變成root&#xff0c;我的理解是進入了另一個linux系統了&#xff0c;直接執行相應的軟件 這里直接use databse就是進入了&#xff0c;據說MongoDB是慢啟動&#xff0c…

MMGPL: 多模態醫學數據分析與圖提示學習| 文獻速遞-基于深度學習的多模態數據分析與生存分析

Title 題目 MMGPL: Multimodal Medical Data Analysis with Graph Prompt Learning MMGPL: 多模態醫學數據分析與圖提示學習 01 文獻速遞介紹 神經學障礙&#xff0c;包括自閉癥譜系障礙&#xff08;ASD&#xff09;&#xff08;Lord等&#xff0c;2018年&#xff09;和阿…

開發個人Go-ChatGPT–6 OpenUI

開發個人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一種可擴展、功能豐富且用戶友好的自托管 WebUI&#xff0c;旨在完全離線運行。它支持各種 LLM 運行器&#xff0c;包括 Ollama 和 OpenAI 兼容的 API。 功能 由于總所周知的原由&#xff0c;OpenAI 的接口需要密鑰才…

C#字符串操作:判斷一個字符串是否存在于另一個字符串按特定字符分割后的子字符串中的幾種方法

要判斷一個字符串是否存在于另一個字符串按特定字符分割后的子字符串中&#xff0c;可以使用以下幾種方法&#xff1a; 方法一&#xff1a;使用Split和Array.Exists 你可以使用 Split 方法將字符串分割成子字符串數組&#xff0c;然后使用 Exists方法檢查目標字符串是否在數組…

Elasticsearch詳細介紹

B站對應視頻&#xff1a; Elasticsearch01-01.為什么學習elasticsearch_嗶哩嗶哩_bilibili 大多數日常項目&#xff0c;搜索肯定是訪問頻率最高的頁面之一。目前搜索功能是基于數據庫的模糊搜索來實現的&#xff0c;存在很多問題。 首先&#xff0c;查詢效率較低。 由于數據…

Java面試題:三個線程交替打印ABC如何實現?

目錄 方法一&#xff1a;使用synchronized和wait/notify方法二&#xff1a;使用CompletableFuture實現 方法一&#xff1a;使用synchronized和wait/notify package com.demo;import java.util.concurrent.CompletableFuture;public class PrintABC {// 當前狀態private static…

數據結構 Java DS——鏈表部分經典題目 (1)

前言 筆者計劃在暑假啃完JavaDS,Mysql的內容當然也會繼續更 這次給讀者們分享的是鏈表的幾個比較典型的題目,關于如何手搓一個鏈表,筆者還在籌劃中, 畢竟鏈表的種類也有那么多,但是在下面的題目中,只有單向鏈表 題目一 : 反轉鏈表 206. 反轉鏈表 - 力扣&#xff08;LeetCode…

什么是 VueQuill(前端的富文本編輯器)?

什么是 VueQuill&#xff1f; 1. 簡介 VueQuill 是 Vue.js 的一個富文本編輯器插件&#xff0c;它基于 Quill 編輯器構建&#xff0c;提供了簡潔且功能強大的富文本編輯功能。Quill 是一個現代化的富文本編輯器&#xff0c;提供豐富的文本編輯能力&#xff0c;支持多種格式和…

paddlenlp cpu windows 下測試gpt

paddlenlp 安裝python3.11版本 conda create -n python311 python3.11 激活python conda activate python311 安裝paddlepaddle conda install paddlepaddle3.0.0b0 -c paddle pip install paddlenlp3.0.0b0 -U -i https://pypi.tuna.tsinghua.edu.cn/simple windows下…

RockYou2024 發布史上最大密碼憑證

參與 CTF 的每個人都至少使用過一次臭名昭著的rockyou.txt單詞表&#xff0c;主要是為了執行密碼破解活動。 該文件是一份包含1400 萬個唯一密碼的列表。 源自 2009 年的 RockYou 黑客攻擊&#xff0c;創造了計算機安全歷史。 多年來&#xff0c;“rockyou 系列”不斷發展。…

爬蟲怎么實現抓取的

1.4爬蟲工程師常用的庫通過圖1-3我們了解到&#xff0c;爬蟲程序的完整鏈條包括整理需求、分析目標、發出網絡請求、文本解析、數據入庫和數據出庫。其中與代碼緊密相關的有&#xff1a;發出網絡請求、文本解析、數據入庫和數據出庫&#xff0c;接下來我們將學習不同階段中爬蟲…