Serverless 應用引擎 SAE(Serverless App Engine)是面嚮應用的Serverless PaaS平台,能夠協助PaaS層使用者免營運IaaS、按需使用、隨用隨付,做到低門檻微服務、Java、PHP等技術棧語言的應用上雲。本文介紹如何使用SAE,協助您快速瞭解SAE以及各方面的實踐教程。
背景資訊
更多資訊,請參見什麼是Serverless應用引擎。
SAE使用流程
SAE使用流程如下圖所示。
在首次部署SAE應用前,需要完成規劃VPC、vSwitch、命名空間(區分測試、預發、生產等環境)的準備工作。
具體操作,請參見準備工作。
在SAE控制台部署應用。
具體操作,請參見應用部署。除通過控制台部署應用外,SAE還支援通過Jenkins、IDE外掛程式、Maven外掛程式、Terraform、OpenAPI、雲效和kubectl-sae工具等多種方式來部署應用。
說明如果您是第一次部署應用到SAE,需要在SAE控制台建立應用。
通過以下方式訪問SAE應用。
方式一:綁定NLB訪問,一個連接埠支援綁定一個應用。具體操作,請參見為應用綁定NLB執行個體以實現應用服務訪問。
方式二:配置網關路由訪問,一個連接埠支援綁定多個應用。具體操作,請參見通過Ingress實現根據網關路由規則轉寄外部流量。
方式三:綁定EIP訪問,一個執行個體支援綁定一個EIP。具體操作,請參見基於EIP配置SAE執行個體公網訪問和訪問公網的能力。
為SAE應用配置更多進階功能。
例如,企業級許可權控制、彈性(降本增效)、Java微服務增強、高可用、儲存等功能。
部署
啟動命令和參數
鏡像部署
啟動命令以及相關參數可以直接寫在Dockerfile內,同時也支援在建立應用時覆蓋啟動命令。
程式碼封裝部署
支援配置應用啟動命令的參數,以Java為例,系統預設啟動命令格式為
Java[-Options] -jar jarfile[arg...],支援自訂[-Options]和[arg...]參數。
資料庫白名單
不同於ECS模式,SAE在容器形態下,每次部署應用時IP地址都有可能變化,但應用綁定的vSwitch的網段不會變化,因此您可以在資料庫的白名單內配置vSwitch的網段。更多資訊,請參見應用訪問阿里雲資料庫。
CI/CD
除控制台部署和API部署外,SAE和很多CI/CD工具進行了整合,典型的有雲效和Jenkins,可以實現代碼提交以後自動部署。更多資訊,請參見應用託管概述。
升級和復原
SAE支援豐富的復原策略,包括單批發布、分批發布、灰階發布和回退歷史版本等。更多資訊,請參見升級和復原應用。
許可權配置
SAE支援精細的許可權控制,支援命名空間、應用和讀寫等粒度的許可權控制,通過許可權助手功能有效簡化您的配置過程。更多資訊,請參見SAE許可權助手。
其他
網路
將應用部署至SAE後,您可能會有不同的網路訪問需求。更多資訊,請參見應用訪問和流量管理。
阿里雲網路基礎概念

Virtual Private Cloud:基於阿里雲建立的自訂私人網路,不同的專用網路之間在邏輯上徹底隔離。
說明私人網路預設不可訪問公網。
交換器(vSwitch):交換器是組成專用網路的基礎網路裝置,對應實體物理機房。在VPC內建立雲資源時,必須指定雲資源所串連的交換器。
Elastic IP Address(EIP):只能和一個資源(ECS、SAE執行個體等)綁定,綁定的資源具備出、入公網的能力。
NAT Gateway(NAT Gateway):支援VPC內的資源訪問公網(SNAT)。區別於EIP的核心功能,公網NAT Gateway可用於VPC內的所有資源,而EIP只能用於VPC內的一個資源。
SAE網路訪問主要情境與方式
將應用部署到SAE後,您可能會遇到以下網路訪問需求。概念圖如下所示。
SAE應用需要被公網訪問(入口流量)
您可以通過以下方式實現。
SAE Ingress:基於SAE Ingress(網關路由)來訪問應用,可以通過公網API Gateway、公網ALB或公網MSE雲原生網關來實現,可以根據不同的網域名稱、路徑路由到不同的SAE應用。
SAE EIP:為SAE應用的每個執行個體綁定一個EIP,使該執行個體能夠同時具備出、入公網的能力。
SAE應用需要訪問公網(出口流量)
您可以通過以下方式實現。
NAT Gateway:為SAE應用關聯的VPC配置公網NAT Gateway,則所有相關的SAE應用都具備了訪問公網的能力。
SAE EIP:為SAE應用的每個執行個體綁定一個EIP,使該執行個體能夠同時具備出、入公網的能力。
利用註冊中心實現微服務應用間互訪
更多資訊,請參見基於Nacos等註冊中心實現服務註冊與發現。
實現應用間內網互訪
Serverless模式下,每次部署都會產生新的內網IP,但不支援直接基於執行個體的IP來互相訪問應用。您可以通過以下方式實現。
SAE Ingress:基於SAE Ingress(網關路由)來訪問應用,可以通過私網API Gateway、私網ALB或私網MSE雲原生網關來實現,可以根據不同的網域名稱、路徑路由到不同的SAE應用。
SAE需要訪問VPC內的ECS、雲資料庫RDS和雲資料庫 Tair(相容 Redis)等
SAE基於阿里雲VPC網路,因此無需額外配置,可以直接存取同一VPC內的資源,ECS、雲資料庫RDS和雲資料庫 Tair(相容 Redis)等。反之,同一VPC內的阿里雲資源也可以訪問SAE。
需要確認安全性群組、產品白名單是否放開。如果遇到問題,請參考常見問題的步驟進行排查。
SAE網路訪問對比項
SAE中Service(服務)和Ingress(網關路由)的區別
SAE Ingress(網關路由),具備根據網域名稱、路徑路由到不同應用的能力(如下圖),而Service不具備該能力。因此,在滿足需求的前提下,建議您優先考慮使用網關路由。在需要使用4層TCP協議訪問或者無法通過網域名稱訪問等情境下,您可以考慮使用Service。
SAE中Service(服務)和K8s ServiceName的區別
K8s服務有兩種模式,一種是基於LoadBalancer(對應於SAE Service,可以通過NLB或CLB來實現),另一種是基於ClusterIP。SAE沒有直接提供ClusterIP,而是提供了一個可供訪問的網域名稱(即K8s ServiceName)。兩者的主要區別如下。
對比項 | Service | K8s ServiceName |
費用 | 免費 | |
適用情境 | 適用於從公網或私網訪問應用。 | 僅適用於SAE應用之間互訪。 |
營運 | 支援配置相關的監控、警示以及收集訪問日誌到SLS,提供細粒度的問題排查能力。 | 未提供獨立的監控、警示、訪問日誌等能力,需要應用側本身配置警示和日誌。 |
ALB網關路由和CLB網關路由的區別
ALB(Application Load Balancer)是阿里雲推出的專門面向HTTP、HTTPS和QUIC等應用程式層負載情境的負載平衡服務。針對網關路由情境,建議您優先考慮使用ALB。更多資訊,請參見Server Load Balancer產品家族介紹。
基於NAT訪問公網和EIP訪問公網的區別
EIP訪問公網的樣本圖如下,每個執行個體都會綁定一個EIP。如果EIP不足,則會建立失敗,導致執行個體無法對外提供服務。
NAT和EIP兩種模式的主要差異如下。
對比項 | NAT | EIP |
生效範圍 | NAT可以控制在VPC或者vSwitch層級,為VPC或者vSwitch內所有無公網IP的執行個體提供訪問公網的代理服務。一個VPC或者vSwitch只需要配置一個NAT,其所有執行個體將具備出公網的能力。 | EIP為執行個體層級,例如10個執行個體就需要10個EIP。一個執行個體綁定EIP後,將同時具備出網和入網的能力。 |
是否固定公網IP | 是。 | 否。新的執行個體成功綁定EIP後,SAE才會銷毀原先的執行個體並解除綁定原來的EIP。因此,需保證EIP數量至少為執行個體數量加一。EIP是變化的,是一個IP池。 |
典型情境 | 應用會自動彈性擴縮,新的執行個體預設需要出公網的能力,且需要固定IP(95%的使用者都適合該情境)。 | 可接受EIP可變,需要直連執行個體的情境(例如線上會議),另外還需要自行精細化地控制每個執行個體的生命週期。 |
費用 | 計費詳情,請參見NAT Gateway計費。 | 計費詳情,請參見EIP計費。執行個體數不超過20個時,EIP成本更優。 |
微服務增強
SAE作為微服務架構Serverless化的最佳實務產品,提供了諸多微服務能力的增強。
註冊中心
配置中心
推薦使用MSE的Nacos註冊中心,將同時具備微服務註冊中心和配置中心的功能。也可以使用SAE內建的分布式組態管理(ACM)。
微服務開發
IDE自動部署
相比於每次重新打包部署,IDE一鍵部署可以大大減少您的部署時間,並提升研發效率。
具體操作,請參見使用Alibaba Cloud Toolkit自動化部署微服務至SAE。
端雲互聯
採用微服務架構後,您的應用數量會增多。在極端情況下,本地開發聯調需要啟動所有相關的微服務應用。針對該痛點,您可以藉助阿里雲Cloud Toolkit外掛程式提供的端雲互聯能力。例如,讓您的本地Consumer直接連接到SAE中部署的Provider,從而無需在本地啟動Provider,大大減少開發調試成本。
具體操作,請參見使用Cloud Toolkit實現端雲互聯(IntelliJ IDEA)。
服務治理
服務列表
對於使用內建Nacos的應用,SAE提供基礎的服務列表查詢能力。如果您使用自建註冊中心或者MSE註冊中心,可以登入對應的控制台查詢,無需在SAE控制台查看。
具體操作,請參見查看服務列表。
無損下線
由於Consumer用戶端存在緩衝,無法及時接收到微服務Provider的下線通知,因此通常需要從註冊中心摘除Provider執行個體,並等待Consumer的緩衝重新整理。為了應對這一問題,SAE通過與MSE(Microservices Engine)的無損下線功能整合,實現了這一過程的產品化。
具體操作,請參見設定無損上下線。
無損上線
微服務的Provider服務只要註冊到註冊中心即可被Consumer調用,但此時,Provider可能還需要進一步的初始化,例如資料庫連接池的初始化等。因此,對於流量比較大的微服務應用,推薦您開啟無損上線功能。
具體操作,請參見設定無損上下線。
微服務灰階
SAE不僅支援應用生命週期託管,還提供了微服務應用發布態的灰階能力。
限流降級
無論是微服務應用還是單體應用,在面對一些突發流量,例如秒殺情境時,應用可能會突然崩潰。如果是微服務應用,可能還會造成雪崩效應,因此有必要採取一些保護措施。SAE整合Microservices Engine (MSE)的流量防護能力,能夠方便地配置和管理限流降級規則。
具體操作,請參見流量防護。
應用監控
微服務架構下,如果沒有配套的監控系統,不利於發現問題和診斷問題。SAE整合 Application Real-Time Monitoring Service (ARMS),提供了應用大盤、JVM監控、慢調用監控、調用鏈分析和警示等能力,儘可能降低企業落地微服務架構的門檻。
更多資訊,請參見應用監控。
多語言
PHP運行時支援
SAE支援以下部署方式。
鏡像:任意PHP架構應用。
PHP ZIP包:任意PHP-FPM結合Nginx架構的線上應用。
SAE預設提供PHP運行時環境。更多資訊,請參見PHP運行環境說明。
靜態檔案託管
藉助NAS和OSS,SAE支援獨立託管靜態檔案,對運行過程中的代碼、模板、上傳的檔案進行持久化儲存,並實現跨執行個體共用檔案。
遠端偵錯
藉助SAE的不同功能,SAE支援多種調試能力。
PHP遠端偵錯
SAE內建Xdebug外掛程式,可開啟遠端偵錯。
檔案下載
SAE支援通過Webshell登入執行個體,並藉助SAE或OSS等功能下載檔案。更多資訊,請參見使用Webshell實現檔案上傳下載。
檔案上傳
SAE藉助NAS和OSS,方便開發調試代碼。
日誌
SAE整合了SLS和Kafka日誌採集。SAE即時日誌功能支援查看500行日誌資訊,如果您有更高的查閱需求,建議使用檔案日誌收集功能。SAE會將業務檔案日誌(容器內日誌路徑)、容器標準輸出日誌(stdout)收集並輸入SLS或Kafka中,實現無限制行數查看日誌、自行彙總分析日誌,方便業務日誌對接。
檔案日誌
SAE整合了SLS日誌採集,您只需在SAE控制台開啟。與ECS時代手動維護採集的機器列表不同,在SAE配置好採集目錄或者採集檔案後,後續每當部署、擴容時,SAE都會自動和SLS對接日誌採集,支援在SLS控制台根據關鍵字檢索日誌。更多資訊,請參見設定日誌收集至SLS。
日誌源支援萬用字元,例如/tmp/log/*.log表示採集/tmp/log目錄以及子目錄下所有以log結尾的檔案。

在不便使用SLS採集、RAM使用者(子帳號)無法查看SLS日誌等情況下,您可以選擇將日誌匯入Kafka。在此基礎上,您可以結合自身的業務情境,將Kafka的資料投遞到例如Elasticsearch等其他持久化庫中,便於集中管理和分析日誌。更多資訊,請參見設定日誌收集至Kafka。
同時,您還可以通過環境變數來設定Logtail啟動參數。更多資訊,請參見設定環境變數提升Logtail採集效能。
即時日誌
SAE會自動採集標準輸出的日誌,保留最新的500條,並支援在SAE控制台查看。更多資訊,請參見查看即時日誌。

如果您希望將標準輸出內容也採集到SLS,可以先將標準輸出到檔案,再設定檔採集。參數如下圖所示。

儲存
SAE內建20 GB的系統硬碟儲存,如果您有讀寫外部儲存需求,建議使用NAS和OSS。診斷SAE應用程式套件括常規檢查和上傳日誌兩種方式,其中上傳日誌不僅可以使用OSS,也可以使用SAE內建的一鍵上傳與下載功能。
日誌情境下,建議使用SLS,不建議使用NAS和OSS。更多資訊,請參見設定日誌收集至SLS。
NAS
SAE支援NAS儲存功能,解決了應用執行個體資料持久化和執行個體間資料分發的問題。NAS儲存只有掛載到ECS或者SAE才能訪問。更多資訊,請參見設定NAS儲存。
OSS
OSS提供了便捷的工具以及控制台,支援可視化的管理Bucket。OSS適合讀多寫少的情境,例如掛載設定檔或者前端靜態檔案等。在SAE控制台部署應用時配置了OSS儲存後,您可以通過OSS控制台訪問資料。更多資訊,請參見設定OSS儲存。
寫日誌的情境下,無法使用ossfs工具。更多資訊,請參見ossfs 1.0。
上傳下載檔案
如果您希望將SAE內的檔案下載到本地,您可以使用Webshell內建的檔案上傳下載功能。更多資訊,請參見使用Webshell實現檔案上傳下載。
除使用NAS或者OSS儲存外,您還可以使用ossutil工具。關於如何使用阿里雲OSS服務進行日誌上傳下載,請參見通過常規檢查診斷應用。
監控警示
SAE內建了基礎監控和ARMS業務監控(Java和PHP)。警示管理提供了可靠的警示收斂、通知、自動升級以及其他功能,協助您快速檢測和修複業務警示。
基礎監控
基礎監控包含CPU、Load、MEM、磁碟、網路和TCP串連等。更多資訊,請參見基礎監控。當前基礎監控內建的是阿里雲CloudMonitor產品,所以您也可以登入CloudMonitor控制台配置自訂的監控大盤。
應用監控
SAE專業版應用整合了ARMS進階版應用監控功能,開啟應用監控後,不會產生額外費用,且該功能將對您的應用進行即時監控。更多資訊,請參見專業版應用監控。
SAE標準版應用整合了ARMS基礎版監控,開啟應用監控後可以免費使用該功能。但同時提供了開啟ARMS進階版監控功能的入口。開通後會產生額外費用,且需要去ARMS側查看資料。更多資訊,請參見標準版應用監控。
警示設定
SAE支援對以上各個監控項設定警示。更多資訊,請參見警示管理。
高可用
將應用部署在SAE後,針對流量的優雅上線與下線,您可以使用健全狀態檢查功能查看應用執行個體與業務運行是否正常,以便運行異常時定位問題。同時,SAE支援部署多vSwitch以應對機房層級的故障,支援使用AHAS實現Java應用的限流降級,全面保障應用的可用性。
多vSwitch部署
為了應對機房級的故障,建議您對生產層級的SAE應用配置多vSwitch。您可以選擇在建立應用時配置多vSwitch,或者在建立應用以後增加vSwitch。建立vSwitch時,建議您設計相對充足的IP地址數(建議100以上),如果IP地址不足則會出現無法建立或者Auto Scaling失敗的情況。更多資訊,請參見切換vSwitch。
基於多 vSwitch,SAE能夠協助業務實現自動地在多可用性區域做資源擴縮,使用者無需關注資源的分布,SAE能夠保證整體資源的可用性。比如,在碰到單點故障、可用性區域故障時,SAE 會在秒級時間內將故障執行個體等量遷移到正常的節點或者其它可用性區域。
建立時選擇多vSwitch。

建立後增加vSwitch。
說明增加vSwitch時,要注意同步設定資料庫白名單。更多資訊,請參見應用訪問阿里雲資料庫。
優雅上下線
在SAE部署應用時,一般會經過先擴容再縮容的過程,但是對於流量的優雅上線與下線有以下兩大業務痛點。
新擴容的執行個體是否已經就緒能夠承接流量。
如何優雅銷毀老執行個體。
SAE基於Kubernetes,提供了兩種健全狀態檢查方式,包括應用執行個體存活檢查(Liveness配置)和應用業務就緒檢查(Readiness配置)。針對上述兩大痛點,SAE支援配置健全狀態檢查Readiness。Readiness探針會周期性地檢測執行個體是否就緒,新執行個體就緒後,SAE才會接入流量。如果檢測失敗,SAE不會引入流量。開始銷毀老執行個體前,會先從流量側摘除,並且銷毀執行個體前可以配置下線指令碼以及等待時間。更多資訊,請參見設定健全狀態檢查。
健全狀態檢查Liveness,也會周期性的檢測執行個體是否已經啟動。如果檢測失敗,SAE會自動重啟容器。該特性便於進行異常情境的自動化營運,但可能會造成現場丟失,無法排查失敗原因。您可以根據您的實際情境判斷是否需要配置Liveness。
除配置Readiness或者Liveness外,微服務情境還需要配置微服務的優雅下線,以解決註冊中心存在緩衝的問題。更多資訊,請參見設定無損上下線。在生產環境中,可能會出現因使用自動Auto Scaling、復原升級等能力,而導致短時間內服務不可用、業務監控大量報錯等情況。針對上述痛點,SAE支援配置微服務的優雅上線。更多資訊,請參見設定無損上下線。
限流降級
對於大流量情境,SAE整合Microservices Engine (MSE)的流量防護能力,能夠方便地配置和管理限流降級規則,保障應用的可用性。更多資訊,請參見流量防護。
彈性(降本增效)
SAE支援手動擴縮、定時彈性、指標彈性、混合彈性和定時啟停等彈性策略。彈性作為雲原生架構和應用的典型特點,從機器成本角度能夠幫您降低成本,從營運角度能夠幫您提升營運效率。
手動擴縮
手動擴縮適用於人工營運的情境。相較於ECS相對較複雜較慢的擴縮過程,SAE擴縮基於容器鏡像,更加快速。更多資訊,請參見手動擴縮。
定時彈性
定時彈性適用於流量可預期的情境。例如,餐飲和教育行業每天存在明確的早晚業務高峰,因此可以配置在不同的時間段運行不同的執行個體數,使伺服器資源盡量貼合實際業務流量。更多資訊,請參見配置Auto Scaling策略。
指標彈性
指標彈性適用於流量相對不可預期的情境,當前支援CPU、MEM、TCP串連數、QPS和RT等指標。更多資訊,請參見配置Auto Scaling策略。
混合彈性
混合彈性適用於同時有突發流量和定時彈性訴求的情境,例如互連網、教育和餐飲等行業,對已知的時段進行精細粒度的執行個體數調整。
例如,在工作日彈性的執行個體最大值配置為max,最小值配置為min,但是實際上在周末又不需要保持min的執行個體數,則可以針對周末再配置一個執行個體數,減少min。更多資訊,請參見配置Auto Scaling策略。
定時啟停
定時啟停功能可以實現按命名空間定時批量啟停應用,例如定時啟停開發環境或測試環境的全部應用。假設對於開發測試環境,每天只需在08:00~20:00時使用,其餘時間處於閑置狀態,則可以在SAE配置定時啟停,以降低成本。更多資訊,請參見建立定時啟停規則。
實踐教程
針對各種業務需求,SAE提供了相關的最佳實務。除本文涉及到的彈性、網路、儲存和應用訪問阿里雲資料庫等外,還包括鏡像、應用加速、JVM參數配置等。更多常見情境,請參見實踐教程。