再談Docker-微服務(wù)的場景化應(yīng)用

我的名字是濱田宏,我發(fā)明了一些自認為很神奇的東西,希望你們能喜歡.這是一個微型機器人,它看起來微不足道,但當(dāng)它和其他小伙伴們團結(jié)起來時荆烈,就變得有趣多了。它們由這個神經(jīng)發(fā)射器控制竟趾,我想讓它們做什么憔购,它們就照做宫峦。這項創(chuàng)造的應(yīng)用是無止境的。建筑物倦始,曾經(jīng)需要大隊人馬,人工建造數(shù)月或數(shù)年山卦,現(xiàn)在只要一個人就可以完成鞋邑。這僅僅是九牛一毛,可不可以用在交通運輸上账蓉,微型機器人可以輕松移動任何物體至任何地方枚碗,只有想不到,沒有做不到铸本。你的思維局限是它唯一的限制肮雨。

看過《超能陸戰(zhàn)隊》的朋友可能仍然對于電影中的男主角介紹和演示自己發(fā)明的微型機器人的場景記憶猶新∠溏瑁“它”看起來只是一跟帶有磁性的小小的金屬部件怨规。但是它是一個獨立的個體,自己能夠獨立的大腦锡足,同時波丰,和同伴之間有相互的接口你行鏈接。能夠通訊舶得。能夠隨意的組合成任意功能的物體掰烟。通過類比,我們很容易由硬件領(lǐng)域想到軟件領(lǐng)域沐批。譬如軟件系統(tǒng)的架構(gòu)纫骑,一直都是伴隨著幾種主流的模式蒙袍,集中式堡距,分布式以及最近才開始流行起來的”微服務(wù)“辈挂。濱田宏發(fā)明的微型機器人恭取,其實和微服務(wù)的思想很類似佣赖。一個微小的服務(wù)實體夷家,有對外的接口與外部通訊脖隶。彼此之間能夠快速組合成新的服務(wù)嗅定。其架構(gòu)松散耦合顾患。接下來的內(nèi)容番捂,會和大家一起分享微服務(wù)的特點以及所擁有的一些神奇的魔法。

什么是微服務(wù)江解?##

微服務(wù)设预,至少我目前也沒有找到一個很精確的標準化解釋。所以我們首先從字面上來理解犁河。既然是服務(wù)鳖枕,那一定是一個能夠?qū)崿F(xiàn)某個功能的實體魄梯。光有功能,是不能成為一下服務(wù)的宾符,因為還需要有途徑和外部交互酿秸。讓外部的實體能夠獲取服務(wù)。譬如web服務(wù)魏烫,通過http協(xié)議和瀏覽器或者app進行交互辣苏。所以微服務(wù),一般來說哄褒,是有一套和外部通訊的標準接口的稀蟋,譬如REST API。 名字帶了一個”微“字呐赡,說明提供的功能很小退客,或者很弱。但是一個非常小链嘀,或者非常弱的功能萌狂,是無法構(gòu)成一個系統(tǒng)的,因此怀泊,他們之間粥脚,必須是能夠相互組合的。在軟件領(lǐng)域包个,一般把它理解成一種新的架構(gòu)設(shè)計模式刷允。可以和我們通常所熟知的軟件架構(gòu)做類比碧囊,譬如集中式架構(gòu)树灶,分布式架構(gòu)。既然是一個很抽象的概念糯而,那我這里也用一幅很抽象的圖來表示天通。

微服務(wù)的特點##

彼此獨立:既然是一個獨立的服務(wù),那必然是一個完整的自治系統(tǒng)熄驼,不依賴外部的東西就能夠提供服務(wù)像寒。有自己一整套的完整的運行機制,有和外部通訊的標準化接口瓜贾。就像《超能特工隊》里面濱田宏發(fā)明的微型機器人诺祸,它就是一個獨立的小機器人〖缆可以和其他的機器人通過磁性相互吸引筷笨,可以探測到彼此的存在。離開了其他個體,一樣能夠運轉(zhuǎn)胃夏,只是功能比較單一轴或。

原子化:作為一個微服務(wù),一定是一個原子化的服務(wù)仰禀。也就是說服務(wù)不能再劃分成更小的服務(wù)了照雁。世界上的一些事物都是有原子構(gòu)成的。它為什么能構(gòu)成所有的物體答恶,正是由于它足夠的基礎(chǔ)饺蚊。如果一個服務(wù)還能劃分成幾個小的服務(wù),那我們就不能稱之為一個微服務(wù)亥宿,它其實可以通過幾個微服務(wù)組合成的一個系統(tǒng)卸勺。

組合和重構(gòu):如果是最原子的服務(wù)砂沛,那一定是沒有任何用處的烫扼。微服務(wù)之所以神奇,在于它能快速的組合和重構(gòu)碍庵。彼此組合成一個系統(tǒng)映企。系統(tǒng)里面所有的實體在概念上是對等的。因此它的結(jié)構(gòu)相對簡單化静浴。是一種松散耦合的結(jié)構(gòu)堰氓,這樣的系統(tǒng),往往具有更強的可擴展性和魯棒性苹享。

微服務(wù)之于實踐##

前面談了這么多双絮,可能大部分人還是沒有明白微服務(wù)是個什么東西。我們試著可以通過一些的東西來描述得问。例如囤攀,我們使用ghost搭建了一套個人博客的系統(tǒng)。如果使用傳統(tǒng)的架構(gòu)宫纬,我們可能以模塊的視角來劃分焚挠,譬如可以分為”用戶管理”,”文章編輯“漓骚,”頁面顯示“蝌衔,”圖片存儲“,”文章分享“ 等幾個模塊蝌蹂,抽象成的架構(gòu)圖如下所示:

換一個視角噩斟,我們可以從服務(wù)的角度來思考。未來簡單起見孤个,我們先考慮單租戶的場景亩冬。:

  • Markdown Service
  • Web Service
  • UGC Service
  • MySQL Service

基于微服務(wù)的架構(gòu),可能是下面這樣一個圖:

我們再想想,如果要提供多租戶的服務(wù)呢硅急?我們把數(shù)據(jù)庫變大覆享,存儲多個用戶的信息?這的確是一種思路营袜,但是其思想有點和我們的微服務(wù)的思想背道而馳了撒顿。我們?yōu)槭裁床粸槊總€用戶配備這樣一套服務(wù)呢,只要每個服務(wù)足夠的微小荚板,其實是沒有太多的浪費的凤壁。上面圖里構(gòu)成的一套系統(tǒng)我們可以作為單獨服務(wù)一個用戶的自治系統(tǒng)。當(dāng)用戶增多時跪另,就呈現(xiàn)出了一套去中心化的云服務(wù)的雛形拧抖。

Docker在微服務(wù)系統(tǒng)中所扮演的角色##

在Docker出現(xiàn)之前,雖然我們談?wù)撐⒎?wù)架構(gòu)免绿,但是其實是很難實現(xiàn)的唧席。微服務(wù)要運行,首先需要一套執(zhí)行的環(huán)境嘲驾。這套環(huán)境不能對外部有依賴性淌哟。同時,執(zhí)行環(huán)境的粒度又必須足夠的小辽故,這樣才能稱之為”微“徒仓,否則必然是對資源的巨大浪費。一個微服務(wù)可以跑在一臺虛擬機上面誊垢,但是虛擬機粒度太大掉弛,即使最小的虛擬機,也至少也有1個核喂走。正如我們上面的ghost博客的例子殃饿,服務(wù)一個用戶的服務(wù),顯然用不了一個核缴啡。同時壁晒,虛擬機有沒有一套方便的管理機制,能夠快速的讓這些服務(wù)之間能夠組合和重構(gòu)业栅。Docker出現(xiàn)以后秒咐,我們看到了微服務(wù)的一個非常完美的運行環(huán)境。

  • 獨立性:一個容器就是一個完整的執(zhí)行環(huán)境碘裕,不依賴外部任何的東西携取。
  • 細粒度: 一臺物理機器可以同時運行成百上千個容器。其計算粒度足夠的小帮孔。
  • 快速創(chuàng)建和銷毀: 容器可以在秒級進行創(chuàng)建和銷毀雷滋,非常適合服務(wù)的快速構(gòu)建和重組不撑。
  • 完善的管理工具: 數(shù)量眾多的容器編排管理工具,能夠快速的實現(xiàn) 服務(wù)的組合和調(diào)度晤斩。

除了Docker生態(tài)系統(tǒng)之內(nèi)的一些工具焕檬,包括Serf之類的服務(wù)自發(fā)現(xiàn)技術(shù)的發(fā)展,可以讓微服務(wù)能夠自動化的感知其關(guān)聯(lián)的其他服務(wù)澳泵,實現(xiàn)系統(tǒng)的自我構(gòu)建实愚。我記得2014年早些時候,centurylinklabs里面有一篇文章兔辅,講述了如何通過FIG腊敲,Serf,HAProxy構(gòu)建一個自動負載均衡的Docker應(yīng)用维苔。其實碰辅,這篇文章所蘊含的思想,就是一種微服務(wù)架構(gòu)的概念介时。

AUTO-LOADBALANCING DOCKER WITH FIG, HAPROXY AND SERF WITH DOCKER

去中心化的云服務(wù)##

最近一段時間没宾,”場景化“是一個頻繁出現(xiàn)的詞匯。在這里潮尝,我也套用一下這個詞榕吼,”什么是微服務(wù)的場景化應(yīng)用饿序?”勉失。去中心化的云服務(wù),是一個非常典型的應(yīng)用場景原探。什么是去中心化的云服務(wù)呢乱凿?這里做一個類比,譬如家里的供暖咽弦,可以采用集中化的供暖方式徒蟆。由電廠或者鋼鐵廠統(tǒng)一提供供暖服務(wù)。當(dāng)然型型,也有的家庭自己會建設(shè)一套中央空調(diào)系統(tǒng)進行供暖段审。云服務(wù),也會有類似的趨勢闹蒜。目前云計算的發(fā)展比較低級寺枉。主要是以托管為主,因此大部分還是中心化的云服務(wù)绷落。隨著云計算的應(yīng)用越來越垂直化姥闪,必然也會出現(xiàn)越來越多的去中心化的應(yīng)用場景。去年iCloud爆出了被黑客攻擊砌烁。黑客攻破一家服務(wù)商筐喳,就直接竊取了所有用戶的資料。這就是一種中心化的云服務(wù)帶來的一些不利的因素。既然我們可以由統(tǒng)一的服務(wù)商來提供云服務(wù)避归。我們能否實現(xiàn)一套去中心化的服務(wù)呢荣月?就拿個人云存儲來舉例。每個人都有一套個人的云的存儲系統(tǒng)梳毙。這套系統(tǒng)運行在任意的提供“水和電”的基礎(chǔ)云服務(wù)商的系統(tǒng)之上喉童。并且可以任意在不同的服務(wù)商之間遷移和部署。不同的用戶顿天,可能位于不同的服務(wù)商之上堂氯。完全由自己控制的一套系統(tǒng)。每一套系統(tǒng)牌废,都是一系列微小的服務(wù)組合而成咽白。雖然底層也依賴基礎(chǔ)云服務(wù)商,但是他們的作用更像水和電一樣鸟缕。

國內(nèi)內(nèi)以微服務(wù)為基礎(chǔ)的去中心化的云服務(wù)也已經(jīng)有一些實踐的例子晶框,譬如terminal.com, dianCloud.com等,逐漸呈現(xiàn)出一部分這樣的思想懂从。借助于這樣的服務(wù)授段,用戶能夠快速的構(gòu)建一套屬于自己的ghost博客系統(tǒng),或者采用開源軟件ownCloud搭建的個人云存儲系統(tǒng)番甩。選購他們侵贵,就像在商店里面選購商品一樣,拿回家缘薛,插上電就可以用了窍育。這種模式,也給開源軟件找到了一個非常好的商業(yè)化的機制宴胧。我相信這種機制未來會越來越流行漱抓。

一個游戲架構(gòu)的應(yīng)用場景##

游戲是一個比較特殊的行業(yè)。在國內(nèi)恕齐,應(yīng)該是比較早擁抱云計算的一個行業(yè)乞娄,但是也是架構(gòu)相對保守的行業(yè)。大部分的游戲架構(gòu)非常簡單显歧。分布式的架構(gòu)使用并不是太普遍仪或,大部分是單區(qū)單服,一臺強大的機器追迟,運行若干個游戲服(游戲世界)溶其。這并不是游戲架構(gòu)落后,而是游戲本身的特點決定的敦间。游戲一般以游戲服來劃分瓶逃,每個游戲服是一個獨立的游戲世界束铭。里面有一定數(shù)量的玩家。不能太多厢绝,也不能太少(總用戶量一定的情況下契沫,單服人數(shù)和總服的數(shù)量決定了游戲收入的最大化),兩個游戲世界之間昔汉,數(shù)據(jù)不需要互通懈万。因此通常都是一個進程搞定一個游戲服。其實這種模式下靶病,微服務(wù)也是一個非常好的應(yīng)用場景会通。我們知道,游戲其實有非常復(fù)雜的邏輯娄周,譬如有控制人物移動的邏輯涕侈,控制道具,控制戰(zhàn)斗煤辨,同時裳涛,游戲中還有成百上千的電腦控制的角色,每個角色都需要有自己智能众辨。為什么我們不將這些細小的功能通過微服務(wù)來實現(xiàn)呢端三?譬如游戲中的一個單獨的怪獸,可以由自己微服務(wù)構(gòu)成的小的自治系統(tǒng)來控制鹃彻。它可以完全獨立郊闯,接收外部信息,做出反應(yīng)浮声。未來游戲公司可以復(fù)用這些單獨的小系統(tǒng)虚婿。換上不同的皮膚旋奢,就可以用于不同的游戲泳挥。同時游戲其他的邏輯,都可以通過一些獨立的微服務(wù)來構(gòu)成至朗。這些微服務(wù)可以借助Docker之類的系統(tǒng)屉符,運行在容器中。能夠快速的自動化的構(gòu)建出一個完整的游戲世界锹引。

后記##

最近矗钟,基于Docker的創(chuàng)業(yè)公司不停的涌現(xiàn),大家一夜之間似乎都在談?wù)揇ocker嫌变。但是我想說的是吨艇,Docker只是一項新的技術(shù),消費者只會為服務(wù)買單腾啥,不會為技術(shù)買單东涡。何況冯吓,對于圈子之外的大部分的消費者,云已經(jīng)是其能理解的技術(shù)極限了疮跑,再來一個Docker组贺,基本是無法理解的。因此如果想在Docker領(lǐng)域創(chuàng)業(yè)祖娘。停止談?wù)揇ocker失尖,思考Docker技術(shù)之上的豐富的場景化的應(yīng)用,才是關(guān)鍵渐苏。同樣掀潮,微服務(wù)也只是一種架構(gòu)思想∏砀唬基于這種架構(gòu)所帶來的神奇的應(yīng)用場景才是未來胧辽。

by: yongfeng

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市公黑,隨后出現(xiàn)的幾起案子邑商,更是在濱河造成了極大的恐慌,老刑警劉巖凡蚜,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件人断,死亡現(xiàn)場離奇詭異,居然都是意外死亡朝蜘,警方通過查閱死者的電腦和手機恶迈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谱醇,“玉大人暇仲,你說我怎么就攤上這事「笨剩” “怎么了奈附?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長煮剧。 經(jīng)常有香客問我斥滤,道長,這世上最難降的妖魔是什么勉盅? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任佑颇,我火速辦了婚禮,結(jié)果婚禮上草娜,老公的妹妹穿的比我還像新娘挑胸。我一直安慰自己,他們只是感情好宰闰,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布茬贵。 她就那樣靜靜地躺著凸克,像睡著了一般。 火紅的嫁衣襯著肌膚如雪闷沥。 梳的紋絲不亂的頭發(fā)上萎战,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音舆逃,去河邊找鬼蚂维。 笑死,一個胖子當(dāng)著我的面吹牛路狮,可吹牛的內(nèi)容都是我干的虫啥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼奄妨,長吁一口氣:“原來是場噩夢啊……” “哼涂籽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起砸抛,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤评雌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后直焙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體景东,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年奔誓,在試婚紗的時候發(fā)現(xiàn)自己被綠了斤吐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡厨喂,死狀恐怖和措,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜕煌,我是刑警寧澤派阱,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站幌绍,受9級特大地震影響颁褂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜傀广,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彩届。 院中可真熱鬧伪冰,春花似錦、人聲如沸樟蠕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吓懈,卻和暖如春歼冰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耻警。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工隔嫡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甘穿。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓腮恩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親温兼。 傳聞我的和親對象是個殘疾皇子秸滴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容