總算有篇文章把【微服務(wù)】的來(lái)龍去脈講透了

面向過(guò)程(函數(shù))痒钝、面向?qū)ο蟆⒚嫦蚪涌谠位弧⒚嫦蚪M件午乓、面向服務(wù)、面向微服務(wù)闸准,這幾個(gè)詞益愈,好多人傻傻分不清楚。讓俺來(lái)回歸原教旨主義,給大家析辨析辨蒸其。正好這些階段咱都親身經(jīng)歷過(guò)敏释,沒(méi)有從90年代初期開(kāi)始編程的人,可能沒(méi)啥切膚體會(huì)到摸袁。

一钥顽、面向過(guò)程(函數(shù))

我們發(fā)現(xiàn),一個(gè)函數(shù)的輸入輸出變化了靠汁,很多關(guān)聯(lián)調(diào)用都要修改蜂大。所以我們提出面向過(guò)程(函數(shù)),好好的設(shè)計(jì)函數(shù)的輸入輸出蝶怔。

二奶浦、面向?qū)ο?/b>

我們發(fā)現(xiàn),不少函數(shù)其實(shí)是有一定組織關(guān)系的踢星,但是在面向過(guò)程(函數(shù))編程過(guò)程中澳叉,這些函數(shù)都是平行排列的,沒(méi)有顯性化組織沐悦。

所以我們發(fā)明面向?qū)ο蟪上矗粋€(gè)對(duì)象關(guān)聯(lián)的函數(shù)組織在一起,并且哪些函數(shù)是私有的藏否,哪些是公有的瓶殃,哪些是親兄弟才能半公開(kāi)調(diào)用的。

三秕岛、面向接口

我們發(fā)現(xiàn)有以下變化:

1碌燕、架構(gòu)師這一個(gè)崗位被提出來(lái)了,專(zhuān)門(mén)用于框架性代碼的設(shè)計(jì)继薛。架構(gòu)師和程序員是兩個(gè)崗位了。架構(gòu)師他們不關(guān)心具體實(shí)現(xiàn)愈捅,他們特別關(guān)心對(duì)象和對(duì)象之間的關(guān)系遏考、層與層之間的關(guān)系。這樣蓝谨,定義和實(shí)現(xiàn)要求分離灌具。

2、我們也發(fā)現(xiàn)譬巫,我和你不是一個(gè)項(xiàng)目組的咖楣,你想調(diào)用我的類(lèi),但是我不想給你這個(gè)類(lèi)的源代碼實(shí)現(xiàn)芦昔,因?yàn)槲业倪@個(gè)類(lèi)的源代碼的所有權(quán)歸我诱贿,我可能需要隨時(shí)變化它,但我和你商定好的調(diào)用接口,我們保持穩(wěn)定珠十,我只需要給你合規(guī)的輸入輸出料扰,你別管我內(nèi)部代碼怎么改。

因而焙蹭,面向接口編程出現(xiàn)了晒杈。它既是類(lèi)特征,又做到了定義和實(shí)現(xiàn)的分離孔厉。

四拯钻、面向組件

組件比對(duì)象更進(jìn)一步。這里面關(guān)鍵的差異就是:組件是有容器的撰豺,對(duì)象和類(lèi)是沒(méi)有容器的粪般。組件的生命周期是由容器來(lái)決定的,而對(duì)象郑趁,需要程序員自己管理對(duì)象的生死創(chuàng)建與回收刊驴。

顯然,組件更讓程序員省心寡润。因?yàn)閮?nèi)存管理捆憎,對(duì)于大量的程序員都是個(gè)挑戰(zhàn)。這又把編程難度拉下一個(gè)門(mén)檻梭纹。

小結(jié):這里出現(xiàn)了組件容器中間件服務(wù)器

五躲惰、面向服務(wù)

服務(wù)比接口更進(jìn)一步。

雖然組件編程已經(jīng)具備了容器化变抽,雖然面向接口編程已經(jīng)做到了定義和具體實(shí)現(xiàn)的分離础拨。

但我們還差一步,就是接口應(yīng)該和開(kāi)發(fā)語(yǔ)言無(wú)關(guān)绍载。所謂的接口诡宗,不外乎就是參數(shù)的輸入輸出。但輸入輸出是有類(lèi)型的击儡。比如說(shuō)塔沃,有的語(yǔ)言是面向?qū)ο蟮模愣x了一個(gè)輸出參數(shù)是個(gè)對(duì)象的阳谍,當(dāng)然這沒(méi)問(wèn)題蛀柴。但如果調(diào)用方是不面向?qū)ο蟮恼Z(yǔ)言,你咋辦矫夯?

這就是面向接口編程當(dāng)年留下的后遺癥鸽疾,和開(kāi)發(fā)語(yǔ)言強(qiáng)相關(guān)。

如何和開(kāi)發(fā)語(yǔ)言不強(qiáng)相關(guān)训貌,這就是面向服務(wù)要解決的制肮。

所以,面向服務(wù)在輸入輸出參數(shù)方面利用了結(jié)構(gòu)化文本這一東西,在參數(shù)傳遞方面利用了文本傳輸協(xié)議弄企。比如說(shuō):XML/JSON超燃、HTTP REST/WebService。當(dāng)然拘领,怎么傳數(shù)據(jù)也可以隨便意乓,可以用消息隊(duì)列(同步異步皆可),也可以用TCP等等约素。只不過(guò)協(xié)議需要定義好怎么建立握手届良、怎么響應(yīng)、怎么處理容錯(cuò)圣猎、怎么處理安全等等士葫,這都是需要協(xié)議定義好的。

現(xiàn)在有企業(yè)服務(wù)總線送悔,你想用啥輸入輸出表示格式都行慢显,你想用啥傳輸協(xié)議都行,根據(jù)你組件的質(zhì)量保證要求就OK欠啤。當(dāng)然荚藻,你說(shuō)你的代碼簡(jiǎn)單,不需要企業(yè)服務(wù)總線洁段,兩個(gè)組件之間通過(guò)服務(wù)直接調(diào)用了应狱,那也OK,那就不需要企業(yè)服務(wù)總線了祠丝。

小結(jié):這里出現(xiàn)了企業(yè)服務(wù)總線中間件疾呻。

六、面向微服務(wù)

我們解決了接口與開(kāi)發(fā)語(yǔ)言的無(wú)關(guān)性写半,我們的組件就可以由不同語(yǔ)言來(lái)實(shí)現(xiàn)岸蜗,而且之間能通暢調(diào)用,通過(guò)各種近程遠(yuǎn)程協(xié)議我們還能實(shí)現(xiàn)跨進(jìn)程跨服務(wù)器之間的調(diào)用叠蝇。

當(dāng)時(shí)我們這時(shí)又遇到了一個(gè)棘手問(wèn)題散吵,就是各個(gè)語(yǔ)言實(shí)現(xiàn)的組件,需要依賴(lài)的框架和庫(kù)越來(lái)越多蟆肆,而且這些框架和庫(kù)的版本還有時(shí)候打架。你經(jīng)常會(huì)發(fā)現(xiàn)晦款,你用的這個(gè)框架要依賴(lài)2.3版本炎功,另外一個(gè)東西非要依賴(lài)2.2版本(可能作者懶了不更新了)。而如果2.3和2.2之間的函數(shù)接口不一致了缓溅,而且作者也沒(méi)保證平滑升級(jí)蛇损,那就不能升級(jí)統(tǒng)一版本。

咋辦?為了防止版本打架淤齐,只能把這些組件隔離開(kāi)股囊。幸好現(xiàn)在出現(xiàn)了Docker技術(shù),可以在一臺(tái)物理機(jī)上不用安裝N個(gè)笨重的虛擬機(jī)(虛擬機(jī)要操作系統(tǒng)一堆東西)更啄,只需要安裝好Docker稚疹,組件以及組件關(guān)聯(lián)的各種框架類(lèi)庫(kù)就被隔離開(kāi)了。

小結(jié):這里出現(xiàn)了Docker容器中間件祭务。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末内狗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子义锥,更是在濱河造成了極大的恐慌柳沙,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌倍,死亡現(xiàn)場(chǎng)離奇詭異赂鲤,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)柱恤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)数初,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人膨更,你說(shuō)我怎么就攤上這事妙真。” “怎么了荚守?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵珍德,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我矗漾,道長(zhǎng)锈候,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任敞贡,我火速辦了婚禮泵琳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誊役。我一直安慰自己获列,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布蛔垢。 她就那樣靜靜地躺著击孩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹏漆。 梳的紋絲不亂的頭發(fā)上巩梢,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天创泄,我揣著相機(jī)與錄音,去河邊找鬼括蝠。 笑死鞠抑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忌警。 我是一名探鬼主播搁拙,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慨蓝!你這毒婦竟也來(lái)了感混?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤礼烈,失蹤者是張志新(化名)和其女友劉穎弧满,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體此熬,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庭呜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犀忱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片募谎。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阴汇,靈堂內(nèi)的尸體忽然破棺而出数冬,到底是詐尸還是另有隱情,我是刑警寧澤搀庶,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布拐纱,位于F島的核電站,受9級(jí)特大地震影響哥倔,放射性物質(zhì)發(fā)生泄漏秸架。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一咆蒿、第九天 我趴在偏房一處隱蔽的房頂上張望东抹。 院中可真熱鬧,春花似錦沃测、人聲如沸缭黔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)试浙。三九已至,卻和暖如春寞蚌,著一層夾襖步出監(jiān)牢的瞬間田巴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工挟秤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壹哺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓艘刚,卻偏偏與公主長(zhǎng)得像管宵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攀甚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理箩朴,服務(wù)發(fā)現(xiàn),斷路器秋度,智...
    卡卡羅2017閱讀 134,600評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法炸庞,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法荚斯,繼承相關(guān)的語(yǔ)法埠居,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,587評(píng)論 18 399
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,520評(píng)論 25 707
  • 夜幕悄悄地降臨事期,今夜的夜色卻是格外的好滥壕。皎潔的月光從窗口悄悄地溜了進(jìn)來(lái),照在我的臉龐上兽泣,本已是睡意朦朧的我更加...
    聆聽(tīng)的路人閱讀 362評(píng)論 0 0
  • 跑馬溜溜的山上绎橘,一朵溜溜的云喲端端溜溜的照在,康定溜溜的城喲 倘若你看到上面的兩行歌詞唠倦,不自覺(jué)的唱起來(lái) 称鳞。那么恭喜...
    伴奐爾游矣閱讀 839評(píng)論 5 7