導讀 | 當今世界會時不時地出現一波波科技浪潮,將以前的技術拍死在海灘上。針對 serverless 應用的概念我們已經談了很多,它是指將你的應用程序按功能來部署,這些功能在被用到時才會啟動。你不用費心去管理服務器和程序規模,因為它們會在需要的時候在一個集群中啟動并運行。 |
但是 serverless 并不意味著沒有 Docker 什么事兒,事實上 Docker 就是 serverless 的。你可以使用 Docker 來容器化這些功能,然后在 Swarm 中按需求來運行它們。serverless 是一項構建分布式應用的技術,而 Docker 是它們完美的構建平臺。
從 servers 到 serverless那如何才能寫一個 serverless 應用呢?來看一下我們的例子,"https://github.com/docker/example-voting-app"5個服務組成的投票系統
投票系統由下面5個服務組成:
兩個 web 前端一個后臺處理投票的進程一個計票的消息隊列一個數據庫后臺處理投票的進程很容易轉換成 serverless 構架,我們可以使用以下代碼來實現:
import dockerrunclient = dockerrun.from_env()client.run("bfirsh/serverless-record-vote-task", [voter_id, vote], detach=True)這個投票處理進程和消息隊列可以用運行在 Swarm 上的 Docker 容器來代替,并實現按需自動部署。
我們也可以用容器替換 web 前端,使用一個輕量級 HTTP 服務器來觸發容器響應一個 HTTP 請求。Docker 容器代替長期運行的 HTTP 服務器來挑起響應請求的重擔,這些容器可以自動擴容來支撐更大訪問量。
新的架構就像這樣:
紅色框內是持續運行的服務,綠色框內是按需啟動的容器。這個架構里需要你來管理的長期運行服務更少,并且可以自動擴容(最大容量由你的 Swarm 決定)。
我們可以做點什么?你可以在你的應用中使用3種技術:
在 Docker 容器中按需運行代碼。使用 Swarm 來部署集群。通過使用 Docker API 套接字在容器中運行容器。結合這3種技術,你可以有很多方法搭建你的應用架構。用這種方法來部署后臺環境真是非常有效,而在另一些場景,也可以這么玩,比如說:
由于存在延時,使用容器實現面向用戶的 HTTP 請求可能不是很合適,但你可以寫一個負載均衡器,使用 Swarm 來對自己的 web 前端進行自動擴容。實現一個 MongoDB 容器,可以自檢 Swarm 并且啟動正確的分片和副本(LCTT 譯注:分片技術為大規模并行檢索提供支持,副本技術則是為數據提供冗余)。下一步怎么做我們提供了這些前衛的工具和概念來構建應用,并沒有深入發掘它們的功能。我們的架構里還是存在長期運行的服務,將來我們需要使用 Swarm 來把所有服務都用按需擴容的方式實現。
希望本文能在你搭建架構時給你一些啟發。
玩得愉快。
本文原創地址:http://www.linuxPRobe.com/docker-creat-serverless.html
免費提供最新Linux技術教程書籍,為開源技術愛好者努力做得更多更好:http://www.linuxprobe.com/thread
|
新聞熱點
疑難解答