用 Docker 建立 serverless 應用
導讀 | 當今世界會時不時地出現一波波科技浪潮,將以前的技術拍死在海灘上。針對 serverless 應用的概念我們已經談了很多,它是指將你的應用程式按功能來部署,這些功能在被用到時才會啟動。你不用費心去管理伺服器和程式規模,因為它們會在需要的時候在一個叢集中啟動並執行。 |
但是 serverless 並不意味著沒有 Docker 什麼事兒,事實上 Docker 就是 serverless 的。你可以使用 Docker 來容器化這些功能,然後在 Swarm 中按需求來執行它們。serverless 是一項構建分散式應用的技術,而 Docker 是它們完美的構建平臺。
那如何才能寫一個 serverless 應用呢?來看一下我們的例子,"個服務組成的投票系統
投票系統由下面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種技術:
- 在 Docker 容器中按需執行程式碼。
- 使用 Swarm 來部署叢集。
- 透過使用 Docker API 套接字在容器中執行容器。
結合這3種技術,你可以有很多方法搭建你的應用架構。用這種方法來部署後臺環境真是非常有效,而在另一些場景,也可以這麼玩,比如說:
- 由於存在延時,使用容器實現面向使用者的 HTTP 請求可能不是很合適,但你可以寫一個負載均衡器,使用 Swarm 來對自己的 web 前端進行自動擴容。
- 實現一個 MongoDB 容器,可以自檢 Swarm 並且啟動正確的分片和副本(LCTT 譯註:分片技術為大規模並行檢索提供支援,副本技術則是為資料提供冗餘)。
我們提供了這些前衛的工具和概念來構建應用,並沒有深入發掘它們的功能。我們的架構裡還是存在長期執行的服務,將來我們需要使用 Swarm 來把所有服務都用按需擴容的方式實現。
希望本文能在你搭建架構時給你一些啟發。
玩得愉快。
via: http://devzum.com/2015/01/28/top-12-best-free-network-monitoring-tools/
作者: Ben Firshman 譯者: 校對:
本文由 原創編譯, 榮譽推出
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2949901/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- serverless 專案配置及建立helloworld應用(二)Server
- 重磅釋出 | Serverless 應用中心:Serverless 應用全生命週期管理平臺Server
- DOCKER應用Docker
- 用docker-machine建立Docker Swarm叢集DockerMacSwarm
- 從零入門 Serverless | 線上應用的 Serverless 實踐Server
- 為你的Go應用建立輕量級Docker映象?GoDocker
- [nodejs/npm] 基於Docker建立Nodejs前端應用NodeJSNPMDocker前端
- 在 OpenFunction 中執行 Serverless 應用FunctionServer
- Docker_Docker應用部署4Docker
- java應用docker化JavaDocker
- Docker部署Angular應用DockerAngular
- docker 打包 php 應用DockerPHP
- 應用容器引擎-DockerDocker
- 如何利用 Webshell 診斷 EDAS Serverless 應用WebshellServer
- Serverless 應用優化四則祕訣Server優化
- Serverless 工程實踐 | Serverless 應用開發觀念的轉變Server
- Serverless 工程實踐 | Serverless 應用優化與除錯祕訣Server優化除錯
- Homestead 建立應用
- Docker管理應用資料Docker
- 使用 Docker 部署 Node 應用Docker
- Docker常用的應用部署Docker
- calico docker 應用例項Docker
- 使用Docker安裝應用Docker
- 用Serverless Kubernetes為.NET (Core)應用保駕護航Server
- Spring Boot Serverless 實戰 | Serverless 應用的監控與除錯Spring BootServer除錯
- Serverless 工程實踐 | Serverless 應用最佳化與除錯秘訣Server除錯
- 輕鬆搭建基於 Serverless 的 ThinkPHP 應用ServerPHP
- 急速搭建 Serverless AI 應用:為你寫詩ServerAI
- 快速搭建 Serverless 線上圖片處理應用Server
- 深度學習 | 如何開發、部署 Serverless 應用?深度學習Server
- Serverless 應用最佳化四則秘訣Server
- 使用 Ansible 部署無服務(serverless)應用Server
- Serverless + AI 讓應用開發更簡單ServerAI
- 用 Docker Machine 建立 Azure 虛擬主機DockerMac
- Docker中部署.NET CORE應用(控制檯應用程式篇)Docker
- 讓 Serverless 應用開發更簡單, Serverless Devs 2.0 全新發布Serverdev
- 從零入門 Serverless | Serverless 應用如何管理日誌 & 持久化資料Server持久化
- Docker 入門系列三:Docker 應用部署-MySQLDockerMySql