| 導(dǎo)讀 | 當(dāng)今世界會(huì)時(shí)不時(shí)地出現(xiàn)一波波科技浪潮,將以前的技術(shù)拍死在海灘上。針對(duì) serverless 應(yīng)用的概念我們已經(jīng)談了很多,它是指將你的應(yīng)用程序按功能來部署,這些功能在被用到時(shí)才會(huì)啟動(dòng)。你不用費(fèi)心去管理服務(wù)器和程序規(guī)模,因?yàn)樗鼈儠?huì)在需要的時(shí)候在一個(gè)集群中啟動(dòng)并運(yùn)行。 |
但是 serverless 并不意味著沒有 Docker 什么事兒,事實(shí)上 Docker 就是 serverless 的。你可以使用 Docker 來容器化這些功能,然后在 Swarm 中按需求來運(yùn)行它們。serverless 是一項(xiàng)構(gòu)建分布式應(yīng)用的技術(shù),而 Docker 是它們完美的構(gòu)建平臺(tái)。
從 servers 到 serverless那如何才能寫一個(gè) serverless 應(yīng)用呢?來看一下我們的例子,"https://github.com/docker/example-voting-app"5個(gè)服務(wù)組成的投票系統(tǒng)

投票系統(tǒng)由下面5個(gè)服務(wù)組成:
兩個(gè) web 前端一個(gè)后臺(tái)處理投票的進(jìn)程一個(gè)計(jì)票的消息隊(duì)列一個(gè)數(shù)據(jù)庫后臺(tái)處理投票的進(jìn)程很容易轉(zhuǎn)換成 serverless 構(gòu)架,我們可以使用以下代碼來實(shí)現(xiàn):
import dockerrunclient = dockerrun.from_env()client.run("bfirsh/serverless-record-vote-task", [voter_id, vote], detach=True)這個(gè)投票處理進(jìn)程和消息隊(duì)列可以用運(yùn)行在 Swarm 上的 Docker 容器來代替,并實(shí)現(xiàn)按需自動(dòng)部署。
我們也可以用容器替換 web 前端,使用一個(gè)輕量級(jí) HTTP 服務(wù)器來觸發(fā)容器響應(yīng)一個(gè) HTTP 請(qǐng)求。Docker 容器代替長(zhǎng)期運(yùn)行的 HTTP 服務(wù)器來挑起響應(yīng)請(qǐng)求的重?fù)?dān),這些容器可以自動(dòng)擴(kuò)容來支撐更大訪問量。
新的架構(gòu)就像這樣:

紅色框內(nèi)是持續(xù)運(yùn)行的服務(wù),綠色框內(nèi)是按需啟動(dòng)的容器。這個(gè)架構(gòu)里需要你來管理的長(zhǎng)期運(yùn)行服務(wù)更少,并且可以自動(dòng)擴(kuò)容(最大容量由你的 Swarm 決定)。
我們可以做點(diǎn)什么?你可以在你的應(yīng)用中使用3種技術(shù):
在 Docker 容器中按需運(yùn)行代碼。使用 Swarm 來部署集群。通過使用 Docker API 套接字在容器中運(yùn)行容器。結(jié)合這3種技術(shù),你可以有很多方法搭建你的應(yīng)用架構(gòu)。用這種方法來部署后臺(tái)環(huán)境真是非常有效,而在另一些場(chǎng)景,也可以這么玩,比如說:
由于存在延時(shí),使用容器實(shí)現(xiàn)面向用戶的 HTTP 請(qǐng)求可能不是很合適,但你可以寫一個(gè)負(fù)載均衡器,使用 Swarm 來對(duì)自己的 web 前端進(jìn)行自動(dòng)擴(kuò)容。實(shí)現(xiàn)一個(gè) MongoDB 容器,可以自檢 Swarm 并且啟動(dòng)正確的分片和副本(LCTT 譯注:分片技術(shù)為大規(guī)模并行檢索提供支持,副本技術(shù)則是為數(shù)據(jù)提供冗余)。下一步怎么做我們提供了這些前衛(wèi)的工具和概念來構(gòu)建應(yīng)用,并沒有深入發(fā)掘它們的功能。我們的架構(gòu)里還是存在長(zhǎng)期運(yùn)行的服務(wù),將來我們需要使用 Swarm 來把所有服務(wù)都用按需擴(kuò)容的方式實(shí)現(xiàn)。
希望本文能在你搭建架構(gòu)時(shí)給你一些啟發(fā)。
玩得愉快。
本文原創(chuàng)地址:http://www.linuxPRobe.com/docker-creat-serverless.html
免費(fèi)提供最新Linux技術(shù)教程書籍,為開源技術(shù)愛好者努力做得更多更好:http://www.linuxprobe.com/thread
新聞熱點(diǎn)
疑難解答
圖片精選