0基礎快速入門運維-EDASServerless(FAAS)產品評測
一、前言:
前段時間,在做大企業採購尋源業務的整體上雲專案的過程中,對普通企業上雲的技術要點有了一些初步的認知,同時,對VPC,CSB,EDAS等優秀的產品印象深刻。在幫客戶搭建VPC系統及運維的過程中,對EDAS也有著自己的個人理解。
EDAS 是一個圍繞應用和微服務的PaaS平臺,提供多樣的應用釋出和輕量級微服務解決方案,幫助使用者解決在應用和服務管理過程中監控、診斷和高可用運維問題;
提供Spring Cloud和Dubbo的執行環境。Dubbo繼續開始更新之後,越來越多的名星企業熱衷使用Duubo作為企業RPC解決方案。而EDAS也天生對Dubbo協議支援良好,所以為大中小企業的應用上雲鋪平了道路,一切都顯得是那麼的自然。
最近,參加了阿里雲的技術共創徵文,於是參加了阿里雲EDAS Serverless 參照官方demo體驗了一把。
二、業務挑戰:
今天大多數公司在開發應用程式並將其部署在伺服器上的時候,無論是選擇公有云還是私有的資料中心,都需要提前瞭解究竟需要多少臺伺服器、多大容量的儲存和資料庫的功能等。並需要部署執行應用程式和依賴的軟體到基礎設施之上。假設我們不想在這些細節上花費精力,是否有一種簡單的架構模型能夠滿足我們這種想法?這個答案已經存在,這就是今天軟體架構世界中新鮮但是很熱門的一個話題——Serverless(無伺服器)架構。
微服務(MicroService)是軟體架構領域業另一個熱門的話題。如果說微服務是以專注於單一責任與功能的小型功能塊為基礎,利用模組化的方式組合出複雜的大型應用程式,那麼我們還可以進一步認為Serverless架構可以提供一種更加“程式碼碎片化”的軟體架構正規化,我們稱之為Function as a Services(FaaS)。而所謂的“函式”(Function)提供的是相比微服務更加細小的程式單元。例如,可以通過微服務代表為某個客戶執行所有CRUD操作所需的程式碼,而FaaS中的“函式”可以代表客戶所要執行的每個操作:建立、讀取、更新,以及刪除。從這一層意思來說,我們可以簡單地將Serverless架構與FaaS概念等同起來。
1.Serverless是什麼
Serverless是變革。過去十年來,我們已經把應用和環境中很多通用的部分變成了服務。Serverless也有這樣的趨勢——如把主機管理、作業系統管理、資源分配、擴容,甚至是應用邏輯的全部元件都外包出去,把它們都看作某種形式的商品——廠商提供服務,我們掏錢購買。這是雲端計算向縱深發展的一種自然而然的過程。
但是,Serverless給應用架構帶來巨大的變化。直到現在,大多數雲服務並沒有從根本上改變我們設計應用的方式。比如,使用Docker時,把一個小“箱子”放到應用邊上,但是它仍然是一個箱子,而我們的應用也沒有顯著改變。當我們把自己的MySQL例項託管到雲上時,還是要思考需要怎樣的虛擬機器來處理負載,考慮故障轉移問題。
Serverless帶來躍進式的變化。Serverless FaaS開啟的是一種全新的應用架構,完全由事件驅動。更細粒度的部署,需要在 FaaS 元件外面持久化狀態。Serverless FaaS把我們從編寫邏輯元件中解放出來,但是我們必須將應用與雲廠商提供的特定介面與模式整合。
- 在 Serverless 應用中,開發者只需要專注於業務,剩下的運維等工作都不需要操心
- Serverless 是真正的按需使用,請求到來時才開始執行
- Serverless 是按執行時間和記憶體來算錢的
- Serverless 應用嚴重依賴於特定的雲平臺、第三方服務
2.EDAS Serverless操作體驗
使用EDAS Serverless 我們無需管理和維護叢集與伺服器,即可快速建立應用。使用 EDAS Serverless,我們可以專注於設計和構建應用程式,而不用管理執行應用程式的基礎設施,這一點非常贊。並且 EDAS Serverless 根據應用實際使用的 CPU 和記憶體資源量進行按需付費,不用為閒置的資源付費。
EDAS 服務具有兩種模式,一種是經典的叢集方式,一種是 Serverless 模式。
- 在經典的 EDAS 模式中:您可以對應用建立的基礎設施和容器應用進行更細粒度的控制,比如選擇應用例項的 ECS 規格,自定義叢集型別。除了應用服務的本身的建立管理,您還需建立和管理應用的叢集和伺服器。
- 在 EDAS Serverless 模式下:您無需建立底層虛擬化資源,可以直接在 EDAS Serverless 中選擇例項的 CPU 和 Memory 規格並選擇 War 包、Jar 包或映象的部署方式進行應用部署。注意:EDAS Serverless 支援通用的 War 包和 Jar 包部署,如 Dubbo War/Jar,Spring War/Jar 等,但暫時還不支援 HSF 應用通過 War 包和 Jar 包部署,僅支援 HSF 應用通過映象部署。
四、支援原生Dubbo和Spring Cloud操作體驗:
近幾年微服務的發展如日中天,而dubbo開源若干年不更新的情況下重啟更新,對網際網路行業的發展更是添了一把明火。因為EDAS對Dubbo和spring cloud的支援非常完美。
EDAS Serverless 讓您無需管理和維護叢集與伺服器,即可快速建立應用。使用 EDAS Serverless,我們可以專注於設計和構建應用程式,而不是管理執行應用程式的基礎設施。
以下任務將幫助您在 EDAS Serverless 叢集中使用 Jar 包部署應用來實現 Dubbo 微服務的註冊和發現。
4.1 開通EDAS serverless
也就是開通阿里雲FAAS(函式即服務,即阿里雲函式計算),如下圖:
4.2 建立VPC
一般情況下,當對網路有較高的安全要求時,建議建立 VPC、新增 ECS 例項,這裡我以VPC為例子。
- 建立 VPC
- 如果您打算建立 ECS 叢集、釋出普通應用,並對網路沒有安全要求,可以跳過此步驟,使用經典網路即可。
- 登入專有網路控制檯,建立 VPC。詳細步驟請參考搭建專有網路。
- 說明:如果您尚未開通專有網路 VPC 服務,需要點選開通專有網路服務。進入 VPC 售賣頁面,閱讀並勾選專有網路VPC 開通協議,然後單擊立即開通。
- 將 VPC 同步到 EDAS 控制檯中。
- 登入 EDAS 控制檯,在左側導航欄中選擇資源管理 > VPC 。
- 在 VPC 頁面中選擇建立的 VPC 所在地域(如:華東1),在頁面右上角單擊同步 VPC 。
- 確認建立的 VPC 已同步到 EDAS 控制檯。
建立 ECS 例項
- 登入 EDAS 控制檯。
- 在左側導航欄中選擇資源管理 > ECS。
- 選擇您要建立 ECS 例項的地域及名稱空間(可選),在頁面右上角單擊建立例項。
- 在 ECS 購買頁面,根據您的需要,參考建立 ECS 例項,完成 ECS 的規格配置和支付。
4.3 建立名稱空間
在地域(Region)中構建的隔離的資源環境。 當您對資源有較高的安全要求時,需要建立名稱空間。
5.4 基於Dubbo建立服務提供者和消費者
5.4.1 服務提供者
此服務提供者提供了一個簡單的 echo 服務,並將自身註冊到服務發現中心。
注意:目前 EDAS Serverless 正在公測中,只開放了華北 2 (北京)和華東 1 (杭州)區域 。
-
登入 EDAS 控制檯。
-
進入 EDAS Serverless 控制檯。
- 在控制檯左側導航欄選擇應用管理。
- 在頁面左上角切換地域到 華北 2 (北京)或華東 1 (杭州)。
- 在頁面右上角單擊建立 Serverless 應用(公測),然後在確認切換至 EDAS Serverless 版對話方塊中單擊確定進入建立應用頁面。
在建立應用在應用基本資訊頁籤內,設定應用相關資訊,然後單擊下一步:應用部署配置。
- 應用名稱:輸入應用名稱。允許數字,字母,下劃線以及中劃線組合,僅允許字母開頭,最大長度 36 個字元。
- 名稱空間:在下拉選單中選擇名稱空間。如果不知怎麼選擇時可選名稱空間為預設。
- VPC 網路:在下拉選單中選擇一個VPC 和 vswitch 。
- 應用例項數:選擇要建立的例項個數。
- 例項規格:單擊請選擇,在選擇例項規格頁面內選擇例項的 CPU 和 Memory 規格。當完成選擇後會在應用基本資訊頁面顯示所選擇的規格。
- 應用描述:填寫應用的基本情況,輸入的描述資訊不超過100個字元。
在應用部署配置頁面,選擇 Jar 包部署,按照頁面指示進行配置。完成設定後單擊確認建立。
-
Java 環境:選擇 JDK7 或 JDK8。
-
檔案上傳方式:可選擇上傳 Jar 包或 Jar 包地址兩種方式來上傳。
- 上傳 Jar 包:下載 service-provider,待樣例下載完成之後單擊選擇檔案,選擇剛下載 Jar 包 service-provider 並上傳。
- Jar 包地址:右鍵單擊 service-provider 並單擊選擇複製連結地址,將該地址貼上在Jar 包地址欄中。
注意:應用部署程式包名僅允許字母、數字,及中劃線“-”、下劃線“_”四個特殊符號。
-
版本:設定版本(如:1.1.0),不建議用時間戳作為版本號。
-
啟動命令設定(可選):參照如何設定 Jar 啟動命令配置。
-
Hosts 繫結設定(可選):參照如何設定 Hosts 繫結配置。
-
應用健康檢查(可選):參照如何設定應用健康檢查配置。
5.4.2 服務消費者
參照上面的服務提供者的步驟建立服務消費者。
- 在應用列表頁面右上角單擊建立 Serverless 應用。
- 在應用基本資訊頁面,輸入應用相關資訊,然後單擊下一步:應用部署配置。
- 應用名稱:輸入與服務提供者區分開的應用名稱。允許數字,字母,下劃線以及中劃線組合,僅允許字母開頭,最大長度 36 個字元。
- 名稱空間:選擇與服務提供者相同的名稱空間。
- VPC 網路:在下拉選單中選擇選擇與服務提供者相同的 VPC 和 vswitch。
- 應用例項數:選擇要建立的例項個數。
- 例項規格:單擊請選擇,在選擇例項規格頁面內選擇例項的 CPU 和 Memory 規格。當完成選擇後會在應用基本資訊頁面顯示所選擇的規格。
- 應用描述:填寫應用的基本情況,輸入的描述資訊不超過100個字元。
-
在應用部署配置頁面,選擇 Jar 包部署,完成設定後單擊確認建立。
- Java 環境:選擇 JDK7 或 JDK8。
-
檔案上傳方式:可選擇上傳 Jar 包或 Jar 包地址兩種方式來上傳。如果選擇 Jar 包地址,則在配置欄填寫 Jar 包的地址。
- 上傳 Jar 包:下載 service-consumer,待樣例下載完成之後單擊選擇檔案,選擇剛下載 Jar 包 service-consumer 並上傳。
- Jar 包地址:右鍵單擊 service-consumer 並單擊選擇複製連結地址,將該地址貼上在Jar 包地址欄中。
注意:應用部署程式包名僅允許字母、數字,及中劃線“-”、下劃線“_”四個特殊符號。
- 版本:設定版本(如:1.1.0),不建議用時間戳作為版本號。
- 啟動命令設定(可選):參照如何設定 Jar 啟動命令配置。
- Hosts 繫結設定(可選):參照如何設定 Hosts 繫結配置。
- 應用健康檢查(可選):參照如何設定應用健康檢查配置。
-
在建立完成頁面單擊應用詳情頁,進入應用詳情頁檢視應用的基本資訊和例項部署資訊。在應用詳情頁中例項部署資訊頁籤檢視例項的執行狀態,如果執行狀態顯示為綠色的 Running,說明應用釋出成功
5.4.3 服務呼叫驗證
1、在左側導航欄單擊應用列表,在應用列表中找到您所建立的服務提供者和服務消費者應用,單擊應用名稱進入應用詳情頁。通過檢視服務列表和實時日誌可以驗證應用成功釋出並互相呼叫。
2、在左側導航欄單擊服務列表,可以分別檢視應用釋出和消費的服務。
- 服務提供者可以在釋出的服務頁籤檢視到所釋出的服務。
- 服務消費者可以在消費的服務頁籤檢視到所消費的服務。
- 進入服務消費者應用,在左側導航欄單擊實時日誌,可以看到消費者服務在不斷輸出 hello,12345。
五、與其他運維工具對比,優劣勢
六、結合具體的業務場景,闡述對EDAS的整體認知,以及優化方向。
相關文章
- 0基礎入門Linux 運維,應該先掌握哪些知識?Linux運維
- 給0基礎入門Linux運維新手的五個建議!Linux運維
- 自動化運維工具之Puppet基礎入門運維
- CTF入門指南(0基礎)
- Linux程式基礎命令有哪些?Linux運維命令入門基礎Linux運維
- 工具化、產品化、運營化—「美團點評」運維的故事運維
- Fitbit Charge智慧手環評測 略顯高科的入門級產品?
- Flutter基礎(三)Dart快速入門FlutterDart
- Flutter 基礎(三)Dart 快速入門FlutterDart
- Vue-vue基礎快速入門Vue
- vue 快速入門 系列 —— Vuex 基礎Vue
- HTML基礎快速入門筆記HTML筆記
- 快速零基礎入門 DockerDocker
- 0基礎7日入門PythonPython
- 0基礎如何入門人工智慧?人工智慧
- 0基礎快速入門Python,這些常識必須先了解!Python
- ThinkPHP3.2 快速入門(1)基礎PHP
- javascript快速入門14--DOM基礎JavaScript
- javascript快速入門24--XML基礎JavaScriptXML
- Oracle學習快速入門基礎教程Oracle
- Linux運維都需要做什麼?0基礎Linux運維學習Linux運維
- JS基礎入門篇(七)—運算子JS
- 哪些人適合學Linux運維?Linux入門基礎Linux運維
- Linux運維常用命令有哪些?Linux基礎入門Linux運維
- 0基礎入門 IT,該具備哪些技能?
- TimesTen運維技能檢測題-基礎篇運維
- 40分鐘快速入門Dart基礎(下)Dart
- 40分鐘快速入門Dart基礎(中)Dart
- gRPC(三)基礎:gRPC快速入門RPC
- javascript快速入門27--XSLT基礎JavaScript
- IT運維產品發展戲談薦運維
- 寫給0-3歲產品經理的第1封信:《產品經理的經濟基礎——邏輯思維能力》
- PyTorch基礎——輸入batch第0維含義PyTorchBAT
- Linux運維命令重要嗎?運維入門Linux運維
- Flutter 基礎(十)佈局 Widget 快速入門Flutter
- "Flutter基礎(十)佈局Widget快速入門Flutter
- Python快速入門之基礎知識(一)Python
- javascript快速入門7--ECMAScript語法基礎JavaScript