Linux中國

用 Docker 創建 serverless 應用

但是 serverless 並不意味著沒有 Docker 什麼事兒,事實上 Docker 就是 serverless 的。你可以使用 Docker 來容器化這些功能,然後在 Swarm 中按需求來運行它們。serverless 是一項構建分散式應用的技術,而 Docker 是它們完美的構建平台。

從 servers 到 serverless

那如何才能寫一個 serverless 應用呢?來看一下我們的例子,5個服務組成的投票系統

投票系統由下面5個服務組成:

  • 兩個 web 前端
  • 一個後台處理投票的進程
  • 一個計票的消息隊列
  • 一個資料庫

後台處理投票的進程很容易轉換成 serverless 構架,我們可以使用以下代碼來實現:

import dockerrun
client = dockerrun.from_env()
client.run("bfirsh/serverless-record-vote-task", [voter_id, vote], detach=True)

這個投票處理進程和消息隊列可以用運行在 Swarm 上的 Docker 容器來代替,並實現按需自動部署。

我們也可以用容器替換 web 前端,使用一個輕量級 HTTP 伺服器來觸發容器響應一個 HTTP 請求。Docker 容器代替長期運行的 HTTP 伺服器來挑起響應請求的重擔,這些容器可以自動擴容來支撐更大訪問量。

新的架構就像這樣:

紅色框內是持續運行的服務,綠色框內是按需啟動的容器。這個架構里需要你來管理的長期運行服務更少,並且可以自動擴容(最大容量由你的 Swarm 決定)。

我們可以做點什麼?

你可以在你的應用中使用3種技術

  1. 在 Docker 容器中按需運行代碼。
  2. 使用 Swarm 來部署集群。
  3. 通過使用 Docker API 套接字在容器中運行容器。

結合這3種技術,你可以有很多方法搭建你的應用架構。用這種方法來部署後台環境真是非常有效,而在另一些場景,也可以這麼玩,比如說:

  • 由於存在延時,使用容器實現面向用戶的 HTTP 請求可能不是很合適,但你可以寫一個負載均衡器,使用 Swarm 來對自己的 web 前端進行自動擴容。
  • 實現一個 MongoDB 容器,可以自檢 Swarm 並且啟動正確的分片和副本(LCTT 譯註:分片技術為大規模並行檢索提供支持,副本技術則是為數據提供冗餘)。

下一步怎麼做

我們提供了這些前衛的工具和概念來構建應用,並沒有深入發掘它們的功能。我們的架構里還是存在長期運行的服務,將來我們需要使用 Swarm 來把所有服務都用按需擴容的方式實現。

希望本文能在你搭建架構時給你一些啟發,但我們還是需要你的幫助。我們提供了所有的基本工具,但它們還不是很完善,我們需要更多更好的工具、庫、應用案例、文檔以及其他資料。

我們在這裡發布了工具、庫和文檔。如果想了解更多,請貢獻給我們一些你知道的資源,以便我們能夠完善這篇文章。

玩得愉快。

更多關於 Docker 的資料

via: https://blog.docker.com/2016/06/building-serverless-apps-with-docker/

作者:Ben Firshman 譯者:bazz2 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國