<dfn id="hx5t3"><strike id="hx5t3"><em id="hx5t3"></em></strike></dfn>

    <thead id="hx5t3"></thead><nobr id="hx5t3"><font id="hx5t3"><rp id="hx5t3"></rp></font></nobr>

    <listing id="hx5t3"></listing>

    <var id="hx5t3"></var>
    <big id="hx5t3"></big>

      
      

      <output id="hx5t3"><ruby id="hx5t3"></ruby></output>
      <menuitem id="hx5t3"><dfn id="hx5t3"></dfn></menuitem>

      <big id="hx5t3"></big>

        入門 Serverless——簡介與實踐

        譚光志

        Serverless,即無服務架構。是指由第三方云計算供應商以服務的方式為開發者提供所需功能,例如數據庫、消息,以及身份驗證等。它的核心思想是讓開發者專注構建和運行應用,而無需管理服務器。

        Serverless 技術的應用一般有兩種:Faas(Function as a Service) 函數即服務和 Baas(Backend as a Service) 后端即服務。

        優點

        Serverless 最大的優點就是自動擴展伸縮、無需自己管理。

        在以往部署一個應用時,需要經歷購買服務器、安裝操作系統、購買域名等等一系列步驟,應用才能真正的上線。后來有了云服務器,我們就省去了購買服務器、安裝操作系統這些操作步驟。只需要在云服務器上搭建環境、安裝數據庫就可以部署應用了。

        但是這仍然有個問題,當網站訪問量過大時,你需要增加服務器;訪問量過小時,需要減少服務器。如果使用 Serverless,你就不需要考慮這些,云服務商會幫你管理這一切。云服務商會根據你的訪問量自動調整所需的資源。

        缺點

        當應用部署在云上,并且使用云存儲或云數據庫,那可能會讓我們的應用訪問速度變得比較慢。因為網絡的訪問速度比內存和硬盤差了一到兩個數量級。

        Faas

        什么是函數即服務?

        一個函數通常用于處理某種業務邏輯,例如一個 abs() 函數,它將返回所傳參數的絕對值。我們可以把這個函數托管到 Faas 平臺,由平臺提供容器并運行這個函數。當執行函數時,只需要提供函數所需的參數,就可以在不部署應用的情況下得到函數的執行結果。

        無狀態

        Faas 運行函數的容器是無狀態的,上一次的運行效果和下一次的運行效果是無關的。如果需要存儲狀態,則需要使用云儲存或者云數據庫。

        冷啟動

        Faas 函數如果長時間未使用,容器就會對其進行回收。所以函數在首次調用或長時間未使用時,容器就需要重新創建該函數的實例,這個過程稱為冷啟動,一般耗時為數百毫秒。

        既然有冷啟動,就有熱啟動。例如容器剛剛調用完函數,過一會又有新的事件觸發。這時由于函數仍未被回收,所以可以直接復用原有的函數實例,這被稱為熱啟動。

        事件驅動

        Faas 函數需要通過觸發事件來運行。我們可以指定不同的觸發器:

        • HTTP 觸發器
        • 對象存儲
        • 定時觸發
        • CDN 觸發

        ...

        其中 HTTP 觸發器是最常見的,即通過 HTTP 請求觸發。

        低成本、按需收費

        像以往我們購買的云服務器一般是采取包月、包年的計費方式,即使你買了不用也要收取費用。Faas 采取的是按需付費的方式,云服務商會根據你的實際使用量來收取費用,不使用不收費(一般來說,Baas 可按需付費,也可包年包月)。

        需要配合 Baas 使用

        Faas 如果單獨使用的話,那它只適合部署一些工具類函數。因為它是無狀態的,每次運行都可能是在不同的容器上,它不知道上一個函數的運行結果。所以如果要使用 Serverless 來部署整個應用,還得額外購買 OSS 云存儲或者云數據庫來提供數據存儲服務(也就是需要配合 Baas 來使用)。

        Baas

        什么是后端即服務?

        假設你是一個前端,現在要開發一個網站。前端部分你可以自己完成,但后端部分怎么辦呢?這個時候就可以使用 Baas 了。也就是說,你只需編寫和維護前端頁面。其他的一切,例如數據庫、身份驗證、對象存儲等等都由云服務商提供。你只需要在前端通過 API 調用它們就可以使用所需的服務。

        Faas 和 Baas 的區別

        Faas 其實是一個云計算平臺,用戶可以將自己寫的函數托管到平臺上運行。而 Baas 則是提供一系列的服務給用戶運用,用戶通過 API 調用。

        其他不同點:

        • Faas 無狀態,Baas 有狀態。
        • Faas 運行的是函數,由開發者自己編寫;Baas 提供的是服務,不需要開發者自己開發。

        可以說 Faas 和 Baas 是兩個不同的東西,但它們有一個共同點,就是無需自己管理服務器和資源的分配、整理,所以都屬于 Serverless。

        阿里云 Faas 實踐

        現在的阿里云、騰訊云都可以免費體驗 Faas,下面以阿里云為例,演示一下如何使用 Faas。

        打開阿里云 serverless,點擊立即開通:

        開通后(阿里云每個月提供一定額度的免費流量,可以利用這一點來學習如何使用 Serverless)如果沒打開函數計算頁面,請點擊控制臺搜索函數計算:

        然后會提示是否授權,授權成功后,就可以查看剛才創建的函數。

        箭頭所指處是一個 API 地址,調用它可以觸發你設置的函數。

        使用 Serverless 框架

        從剛才的示例可以發現,要想編寫 Faas 函數只能在線編寫,或者提前寫好復制到阿里云。為了改善這種情況,現在有很多 Serverless 框架,可以讓你在本地進行開發,開發完后再部署到阿里云或其他云上。

        在這里推薦一下 midway 框架,主要是國人開發,具有非常詳細的中文文檔。根據文檔的快速指引,就可以成功將函數部署到阿里云或其他云上。

        小結

        Serverless 最大的優點就是彈性擴容和無需親自管理服務器。即使它也有不少缺點,但相對于優點來說,是可以忽略的,近幾年來 Serverless 技術的火熱程度也證實了這一點。目前 Serverless 技術仍有很大的發展空間值得我們去探索,畢竟還是一門“出生”不久的新技術。

        參考資料

        帶你入門前端工程 全文目錄:

        1. 技術選型:如何進行技術選型?
        2. 統一規范:如何制訂規范并利用工具保證規范被嚴格執行?
        3. 前端組件化:什么是模塊化、組件化?
        4. 測試:如何寫單元測試和 E2E(端到端) 測試?
        5. 構建工具:構建工具有哪些?都有哪些功能和優勢?
        6. 自動化部署:如何利用 Jenkins、Github Actions 自動化部署項目?
        7. 前端監控:講解前端監控原理及如何利用 sentry 對項目實行監控。
        8. 性能優化(一):如何檢測網站性能?有哪些實用的性能優化規則?
        9. 性能優化(二):如何檢測網站性能?有哪些實用的性能優化規則?
        10. 重構:為什么做重構?重構有哪些手法?
        11. 微服務:微服務是什么?如何搭建微服務項目?
        12. Severless:Severless 是什么?如何使用 Severless?
        閱讀 601
        5.6k 聲望
        10.3k 粉絲
        0 條評論
        你知道嗎?

        5.6k 聲望
        10.3k 粉絲
        宣傳欄
        一本到在线是免费观看_亚洲2020天天堂在线观看_国产欧美亚洲精品第一页_最好看的2018中文字幕