1. 程式人生 > >0基礎快速入門運維-EDAS Serverless(FAAS) 產品評測

0基礎快速入門運維-EDAS Serverless(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(函式即服務,即阿里雲函式計算),如下圖:

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 (杭州)區域 。

  1. 登入 EDAS 控制檯

  2. 進入 EDAS Serverless 控制檯。

    1. 在控制檯左側導航欄選擇應用管理
    2. 在頁面左上角切換地域到 華北 2 (北京)華東 1 (杭州)
    3. 在頁面右上角單擊建立 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 服務消費者

參照上面的服務提供者的步驟建立服務消費者。

  1. 在應用列表頁面右上角單擊建立 Serverless 應用
  2. 在應用基本資訊頁面,輸入應用相關資訊,然後單擊下一步:應用部署配置。
    • 應用名稱:輸入與服務提供者區分開的應用名稱。允許數字,字母,下劃線以及中劃線組合,僅允許字母開頭,最大長度 36 個字元。
    • 名稱空間:選擇與服務提供者相同的名稱空間。
    • VPC 網路:在下拉選單中選擇選擇與服務提供者相同的 VPC 和 vswitch。
    • 應用例項數:選擇要建立的例項個數。
    • 例項規格:單擊請選擇,在選擇例項規格頁面內選擇例項的 CPU 和 Memory 規格。當完成選擇後會在應用基本資訊頁面顯示所選擇的規格。
    • 應用描述:填寫應用的基本情況,輸入的描述資訊不超過100個字元。
  3. 在應用部署配置頁面,選擇 Jar 包部署,完成設定後單擊確認建立

    • Java 環境:選擇 JDK7 或 JDK8
    • 檔案上傳方式:可選擇上傳 Jar 包 Jar 包地址兩種方式來上傳。如果選擇 Jar 包地址,則在配置欄填寫 Jar 包的地址。

      • 上傳 Jar 包:下載 service-consumer,待樣例下載完成之後單擊選擇檔案,選擇剛下載 Jar 包 service-consumer 並上傳。
      • Jar 包地址:右鍵單擊 service-consumer 並單擊選擇複製連結地址,將該地址貼上在Jar 包地址欄中。

      注意:應用部署程式包名僅允許字母、數字,及中劃線“-”、下劃線“_”四個特殊符號。

    • 版本:設定版本(如:1.1.0),不建議用時間戳作為版本號。
    • 啟動命令設定(可選):參照如何設定 Jar 啟動命令配置。
    • Hosts 繫結設定(可選):參照如何設定 Hosts 繫結配置。
    • 應用健康檢查(可選):參照如何設定應用健康檢查配置。
  4. 在建立完成頁面單擊應用詳情頁,進入應用詳情頁檢視應用的基本資訊和例項部署資訊。在應用詳情頁中例項部署資訊頁籤檢視例項的執行狀態,如果執行狀態顯示為綠色的 Running,說明應用釋出成功

5.4.3 服務呼叫驗證

1、在左側導航欄單擊應用列表,在應用列表中找到您所建立的服務提供者和服務消費者應用,單擊應用名稱進入應用詳情頁。通過檢視服務列表和實時日誌可以驗證應用成功釋出並互相呼叫。

2、在左側導航欄單擊服務列表,可以分別檢視應用釋出和消費的服務。

  • 服務提供者可以在釋出的服務頁籤檢視到所釋出的服務。

  • 服務消費者可以在消費的服務頁籤檢視到所消費的服務。

  • 進入服務消費者應用,在左側導航欄單擊實時日誌,可以看到消費者服務在不斷輸出 hello12345

  1.  

五、與其他運維工具對比,優劣勢

Serverless領域 AWS Lambda是先行者,隨後其他廠商相繼推出了自己的函式服務,包括Azure Function,Google Cloud Functions。阿里雲的Serverless產品函式服務(Function Compute)現在正在公測,期待強勢崛起。

六、結合具體的業務場景,闡述對EDAS的整體認知,以及優化方向。

阿里雲未來會圍繞Serverless概念構建完整的生態體系,產品層面將全力打造API Gateway,Docker,Function Compute等為主的Serverless基礎產品序列,同時圍繞基礎框架提升大資料服務能力,推動API經濟發展,使阿里雲成為中國Serverless的領導者。