自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Docker 構(gòu)建 Serverless 應(yīng)用

大數(shù)據(jù)
Serverless 不意味著沒有服務(wù)器,而是從應(yīng)用可以在一個(gè)抽象層上忽略它的存在,而只關(guān)注在功能實(shí)現(xiàn)上和自身的請(qǐng)求處理上;每一個(gè)功能實(shí)現(xiàn)在不是單純的業(yè)務(wù)邏輯處理的代碼,相反每個(gè)功能調(diào)用具有了 Server 的特質(zhì),進(jìn)化成為了一個(gè)具有自省、自知和自治的工作負(fù)載單元;他們更像是能夠衍生出其它新功能單元的生物體。

 

[[168033]]

Serverless 不意味著沒有服務(wù)器,而是從應(yīng)用可以在一個(gè)抽象層上忽略它的存在,而只關(guān)注在功能實(shí)現(xiàn)上和自身的請(qǐng)求處理上;每一個(gè)功能實(shí)現(xiàn)在不是單純的業(yè)務(wù)邏輯處理的代碼,相反每個(gè)功能調(diào)用具有了 Server 的特質(zhì),進(jìn)化成為了一個(gè)具有自省、自知和自治的工作負(fù)載單元;他們更像是能夠衍生出其它新功能單元的生物體。這樣整個(gè) Serverless 應(yīng)用架構(gòu)之內(nèi),每個(gè)生命可以衍生下去,子子孫孫無窮匱也。

處在這技術(shù)日新月異的時(shí)代里,新的技術(shù)浪潮經(jīng)常對(duì)當(dāng)前的技術(shù)產(chǎn)生著威脅和顛覆。在編寫應(yīng)用的時(shí)候我們目前經(jīng)常談?wù)摰?ldquo;Serverless”技術(shù)。它的核心思想是把應(yīng)用作為一系列的功能/function來部署,這些功能在需要的時(shí)候被按需部署。服務(wù)器管理應(yīng)該是不需要去操心的事情,所有功能被按需調(diào)用,被運(yùn)行在群集之上。

但是 Serverless 里不意味著沒有 Docker,事實(shí)上 ”Docker 就是 Serverless”。你可以用 Docker 來容器化這些功能,然后按需地運(yùn)行在 Swarm 群集上。Serverless 是一種構(gòu)建分布式計(jì)算的應(yīng)用的方法,而 Docker 是***的構(gòu)建和運(yùn)行他們的平臺(tái)。

從 Server 到 Serverless

那么我們?nèi)绾蝸砭帉?Serverless 的應(yīng)用?讓我們先看下這個(gè)例子:“一個(gè)有5個(gè)子服務(wù)組成的投票應(yīng)用”:

 

子服務(wù)

 

它的結(jié)構(gòu)如下:

1. 兩個(gè) Web 前端

2. 一個(gè)后臺(tái)的處理投票的 Worker 服務(wù)

3. 一個(gè)處理投票的消息隊(duì)列

4. 一個(gè)數(shù)據(jù)庫

那個(gè)后臺(tái)處理投票的進(jìn)程是非常容易成為轉(zhuǎn)換為 Serverless 架構(gòu)的目標(biāo)。在投票應(yīng)用內(nèi),我們可以運(yùn)行一點(diǎn)類似于下面的代碼,來執(zhí)行后臺(tái)任務(wù):

Worker 和消息隊(duì)列能用按需在 Swarm 上運(yùn)行的容器來替換,并自動(dòng)地按需擴(kuò)容。

 

代碼

 

我們甚至可以消除掉 Web 前端。我們可以這么做:用 Docker 容器來相應(yīng)每一個(gè)HTTP 請(qǐng)求,每個(gè) HTTP 請(qǐng)求都用一個(gè)自生長的跑著輕量 HTTP 服務(wù)器的容器來處理。之前使用的是長時(shí)間持續(xù)運(yùn)行的 HTTP 服務(wù)器,現(xiàn)在變成了具有 HTTP 相應(yīng)和處理能力的按需跑起來的容器,而且他們能自動(dòng)地?cái)U(kuò)容來支持所有訪問請(qǐng)求。

我們新的架構(gòu)大概如下圖所示:

 

架構(gòu)

 

其中紅色的方塊是需持續(xù)長期運(yùn)行的服務(wù),而綠色方塊成了按需被調(diào)用的 Docker容器。這樣這個(gè)應(yīng)用變成了只有少數(shù)幾個(gè)需要被管理的 long-running 服務(wù),在相應(yīng)請(qǐng)求的時(shí)候使用原生的 Swarm 擴(kuò)容能力,處理能力的上限是 Swarm 群集的上限。

具體如何實(shí)現(xiàn)

這里有三個(gè)有用的技巧,可以在你的程序中使用:

1. 把你代碼中的 function 作為按需拉起的 Docker 容器

2. 使用 Swarm 在群集上運(yùn)行這些容器

3. 從容器里面運(yùn)行這些功能容器,繞過了一個(gè) Docker API socket

使用以上技術(shù)的組合,程序執(zhí)行負(fù)載發(fā)生的可能性將和您如何架構(gòu)你的應(yīng)用相關(guān)。運(yùn)行后臺(tái)任務(wù)就是一個(gè)非常適合的例子,但是整個(gè)應(yīng)用中的其它工作負(fù)載也是有可能的,例如:

1.考慮到延遲,用啟動(dòng)一個(gè)容器來服務(wù)所有用戶的 HTTP 請(qǐng)求可能是不現(xiàn)實(shí)的??墒悄憧梢詫懸粋€(gè)內(nèi)置的負(fù)載均衡邏輯,讓它知道何時(shí)需要主動(dòng)地自動(dòng)擴(kuò)容 Web 前端自身,通過在 Swarm 群集上運(yùn)行更多 web 處理容器。

2.一個(gè) MongoDB 容器可以在 Swarm 上成為一個(gè)具有自省能力的架構(gòu),它能自動(dòng)地運(yùn)行出正確數(shù)量的 shard 和 replica 容器。

接下來

我們已經(jīng)得到了這些激進(jìn)的新工具,用做構(gòu)建應(yīng)用的抽象層,我們隱約看到了如何深入下去的可能性。我們依然像長時(shí)間以來在一堆服務(wù)器上構(gòu)建應(yīng)用一樣,而以后可以來利用 Swarm 能按需地在基礎(chǔ)架構(gòu)里的任何地方執(zhí)行功能代碼的能力。

希望這些能夠給您一些如何構(gòu)建應(yīng)用的新思路,但是我們還需要你們的幫助。我們已經(jīng)有的是一些構(gòu)建 Serverless 應(yīng)用的基礎(chǔ)功能,然而他們依然不是很完備,我們需要更好的工具、庫、樣例程序,文檔等等。

責(zé)任編輯:趙立京 來源: 51CTO
相關(guān)推薦

2017-10-30 16:12:30

DockerServerless樹莓派

2014-11-18 10:37:15

dockerlinux技巧

2020-12-31 05:57:36

DockerSpringBootMaven

2015-07-15 11:31:49

Docker云服務(wù)鏡像構(gòu)建

2022-10-27 14:25:46

無服務(wù)器Serverless云原生

2021-09-18 10:23:43

Serverless

2021-10-13 09:45:54

Serverless 應(yīng)用調(diào)試

2022-06-09 09:00:00

編程語言后端Dark

2009-11-23 19:42:57

ibmdwmashup

2021-10-11 14:28:25

TypeScript企業(yè)級(jí)應(yīng)用

2018-03-26 04:53:46

Serverless微服務(wù)架構(gòu)

2020-07-28 07:27:07

Vue前端Jquery

2017-03-13 16:30:50

React Route構(gòu)建JavaScript

2024-05-06 08:07:01

Spring項(xiàng)目Java

2024-12-10 08:01:38

2012-03-21 09:36:33

ibmdw

2017-01-06 10:54:03

AndroidiOSJenkins

2011-10-11 09:15:58

移動(dòng)應(yīng)用PhoneGapGoodDay

2025-02-17 08:11:59

C#類型安全生態(tài)系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)