微服務(wù)架構(gòu)與嵌入式系統(tǒng)

  微服務(wù)架構(gòu)是最近在互聯(lián)網(wǎng)企業(yè)興起的一種軟件架構(gòu)風(fēng)格,兩位大牛 James Lewis 和 Martin Fowler 合作了一篇題為《MicroServices》 的文章,對微服務(wù)架構(gòu)的方方面面進(jìn)行了詳細(xì)的闡述,在業(yè)界影響巨大。那什么是微服務(wù)架構(gòu)?文章是這樣描述的:“一系列小型服務(wù)的套件協(xié)作構(gòu)成一個完整的應(yīng)用炫刷,其中每個服務(wù)都運(yùn)行在自己的進(jìn)程中,并且通過輕量級的機(jī)制實(shí)現(xiàn)彼此間的通信郁妈,這通常是RESTful風(fēng)格的API浑玛。這些服務(wù)是圍繞著業(yè)務(wù)功能構(gòu)建的,并且可以通過完全自動化的部署機(jī)制進(jìn)行獨(dú)立部署噩咪。這些服務(wù)的集中式管理做到了最小化顾彰,每一種服務(wù)都可以通過不同的編程語言進(jìn)行編寫,并且可以使用不同的數(shù)據(jù)存儲技術(shù)剧腻【醒耄”

  與微服務(wù)架構(gòu)相對應(yīng)的是單一整體式的應(yīng)用(Monolithic Application),后者一般是在一個獨(dú)立的進(jìn)程中就實(shí)現(xiàn)了整個應(yīng)用书在,雖然這個應(yīng)用也是由多個功能模塊構(gòu)成,但是這些功能模塊最后是完全綁定在一起拆又,在一個進(jìn)程空間中運(yùn)行儒旬。相比之下,微服務(wù)架構(gòu)下的應(yīng)用則將這些功能模塊徹底的獨(dú)立出來帖族,放到單獨(dú)的進(jìn)程中去運(yùn)行栈源,服務(wù)之間采用進(jìn)程間通信的機(jī)制實(shí)現(xiàn)交互,并且每一個服務(wù)都很小竖般,大概100行左右的代碼就能夠?qū)崿F(xiàn)甚垦。

  看,就好像批薩餅不過是鋪了一層肉和奶酪的馕一樣涣雕,微服務(wù)架構(gòu)這么新潮的概念艰亮,說穿了也不足為奇嘛。我看到Microservices后第一眼也是這么不屑挣郭,所謂架構(gòu)設(shè)計迄埃,就是“分而治之”的技術(shù),你這拆分成獨(dú)立服務(wù)進(jìn)程的思路兑障,跟我拆分成獨(dú)立功能組件的思路侄非,有什么本質(zhì)的不同蕉汪?仔細(xì)看了相關(guān)人的實(shí)踐經(jīng)驗(yàn)后,才發(fā)現(xiàn)逞怨,正是將進(jìn)程內(nèi)組件移到進(jìn)程外獨(dú)立執(zhí)行這一點(diǎn)小小的改變者疤,卻對軟件開發(fā)以及產(chǎn)品運(yùn)維的方式產(chǎn)生了很大的影響,我總結(jié)一下有如下幾點(diǎn):

  首先叠赦,各個服務(wù)可以被獨(dú)立的開發(fā)宛渐,獨(dú)立的部署,獨(dú)立的升級眯搭,獨(dú)立的運(yùn)維窥翩,從而實(shí)現(xiàn)功能模塊的徹底解耦合。在Monolithic App中鳞仙,一個小功能的加入或者一個小bug的修改寇蚊,都會造成整個應(yīng)用的重新構(gòu)建和發(fā)布,但是在microservices架構(gòu)下棍好,一般只需要修改小一部分即可仗岸。代碼改動所帶來的風(fēng)險,并不是和改動代碼的規(guī)模線性相關(guān)借笙。改動一百行所帶來的風(fēng)險扒怖,比改十行代碼要大十倍以上。微服務(wù)模式下业稼,可以盡可能降低每次修改的規(guī)模盗痒,從而降低整體風(fēng)險。
  其次低散,良好的架構(gòu)設(shè)計可以被更好的遵守和維持下去俯邓。在Monolithic App中,雖然各個模塊可以通過頭文件等形式來規(guī)定接口熔号,但是在進(jìn)度緊張的壓力下稽鞭,仍然會有開發(fā)者圖方便繞過這些接口,通過引入全局變量等不好的形式引镊,破壞系統(tǒng)的架構(gòu)朦蕴;在大型開發(fā)團(tuán)隊(duì)中,會有專門的架構(gòu)看護(hù)工具來檢查這些違規(guī)代碼弟头。但是在Microservices架構(gòu)下吩抓,一個服務(wù)成了一個黑盒子,必須通過其官方的接口才能夠使用其服務(wù)亮瓷。這從根本上保證了架構(gòu)質(zhì)量的延續(xù)性琴拧。
  再次,操作系統(tǒng)提供的進(jìn)程隔離機(jī)制嘱支,能夠提高整個應(yīng)用的健壯性蚓胸;Monolithic App運(yùn)行時如果發(fā)生了不可恢復(fù)的錯誤挣饥,整個系統(tǒng)就會崩潰,在一個龐大的系統(tǒng)中尋找bug沛膳,是非常困難的扔枫;但是在分布式的MicroServices應(yīng)用中,如果某個服務(wù)崩潰了锹安,只需要運(yùn)維系統(tǒng)監(jiān)控到并且將它馬上恢復(fù)(比如重新啟動這個服務(wù))短荐,那么整個系統(tǒng)不會受到影響。同時在各個小服務(wù)系統(tǒng)中尋找bug叹哭,會容易得多忍宋。
  然后,是團(tuán)隊(duì)管理上的方便风罩,與微服務(wù)的方式相比糠排,單一獨(dú)立應(yīng)用的一次大的發(fā)布可能包含由數(shù)百開發(fā)人員完成的數(shù)千個變更,管理和協(xié)調(diào)這樣的發(fā)布是令人恐懼的超升,我們需要確保每一樣?xùn)|西各就其位并且能相互協(xié)調(diào)一致入宦。而微服務(wù)架構(gòu)模式下的開發(fā)團(tuán)隊(duì),因?yàn)橛辛烁訌氐椎母綦x以及明確的服務(wù)契約約定室琢,發(fā)布各個服務(wù)所需要的管理協(xié)調(diào)就工作就更加簡單乾闰。
  最后,MicroServices架構(gòu)風(fēng)格下盈滴,開發(fā)團(tuán)隊(duì)不僅僅是開發(fā)團(tuán)隊(duì)涯肩,同時還是運(yùn)維團(tuán)隊(duì),按照亞馬遜的說法:You build 雹熬,you run it宽菜,這樣開發(fā)團(tuán)隊(duì)必然會關(guān)注他們的產(chǎn)品是如何在生產(chǎn)環(huán)境運(yùn)行的,必然會和客戶進(jìn)行更多的接觸和互動竿报,會更加關(guān)注怎么讓其產(chǎn)品為客戶產(chǎn)生更多的價值。而傳統(tǒng)模式的開發(fā)團(tuán)隊(duì)只負(fù)責(zé)開發(fā)继谚,運(yùn)維一般是交給專門的運(yùn)維團(tuán)隊(duì)去負(fù)責(zé)了烈菌。

MicroServices雖然優(yōu)點(diǎn)很多,但是不足之處也是很明顯的花履,一位實(shí)踐了微服務(wù)的兄弟Wootton列舉了一些問題:
#會帶來重復(fù)代碼芽世;其實(shí)這一點(diǎn)我不是很明白,重復(fù)代碼通過使用共享庫(靜態(tài)或動態(tài))的技術(shù)應(yīng)該是可以被解決的诡壁;
#運(yùn)行開銷增大济瓢,進(jìn)程間的通信比進(jìn)程內(nèi)模塊間通信要慢幾個數(shù)量級;
#服務(wù)增多之后帶來了服務(wù)運(yùn)維部署的難度的增大妹卿,每一個服務(wù)可能都需要監(jiān)控旺矾;
#分布式系統(tǒng)的復(fù)雜性會遠(yuǎn)遠(yuǎn)大于獨(dú)立一體式應(yīng)用蔑鹦,可能會降低系統(tǒng)的可靠性;

  最后箕宙,回到我們的標(biāo)題嚎朽,微服務(wù)架構(gòu)適合嵌入式系統(tǒng)嗎?與亞馬遜的EC2等IT服務(wù)不同柬帕,嵌入式系統(tǒng)一般是實(shí)時性要求極高哟忍,但是運(yùn)維卻不由開發(fā)者甚至制造商負(fù)責(zé),比如電信設(shè)備陷寝」埽基于這個特點(diǎn),我認(rèn)為嵌入式軟件系統(tǒng)不能照搬微IT企業(yè)服務(wù)架構(gòu)的做法凤跑,不過微服務(wù)架構(gòu)的思想?yún)s是可以被借鑒的爆安,從而實(shí)現(xiàn)取長補(bǔ)短:
●在架構(gòu)設(shè)計時,對系統(tǒng)進(jìn)行徹底的解耦合饶火;功能模塊分散到各個單獨(dú)的操作系統(tǒng)進(jìn)程中鹏控;通過進(jìn)程隔離,實(shí)現(xiàn)對解耦設(shè)計的保護(hù)肤寝。
●各功能模塊之間通過預(yù)先定義好的服務(wù)接口進(jìn)行交互当辐;在這里,我們不能使用HTTP和RESTful的API鲤看,這樣效率太低缘揪;實(shí)時操作系統(tǒng)已經(jīng)提供了更加高效的IPC機(jī)制;
●獨(dú)立的發(fā)布义桂,很多嵌入式系統(tǒng)的軟件都是一個獨(dú)立的bin文件找筝,這是一個Monolithic形式的APP,通過微服務(wù)的改造慷吊,可以將其從業(yè)務(wù)邏輯的維度袖裕,分成多個獨(dú)立的服務(wù)交付件,由不同團(tuán)隊(duì)來開發(fā)和交付溉瓶;
●從特性的維度組建跨功能團(tuán)隊(duì)急鳄,一個服務(wù)往往是一個獨(dú)立的特性,交給一個獨(dú)立的團(tuán)隊(duì)開發(fā)堰酿,這個團(tuán)隊(duì)中往往包含了開發(fā)所需要的全部技能疾宏,比如UI,數(shù)據(jù)庫触创,中間件坎藐,業(yè)務(wù)邏輯等。

MicroServices在互聯(lián)網(wǎng)行業(yè)中已經(jīng)取得了不少成功的應(yīng)用哼绑,應(yīng)該說是互聯(lián)網(wǎng)行業(yè)快速交付和運(yùn)維的壓力所導(dǎo)致的一個必然結(jié)果岩馍,但是在嵌入式系統(tǒng)開發(fā)過程中是否可行碉咆,還需要同行們的更多的思考和實(shí)踐,以上算是拋磚引玉吧兼雄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吟逝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赦肋,更是在濱河造成了極大的恐慌块攒,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佃乘,死亡現(xiàn)場離奇詭異囱井,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)趣避,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門庞呕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人程帕,你說我怎么就攤上這事住练。” “怎么了愁拭?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵讲逛,是天一觀的道長。 經(jīng)常有香客問我岭埠,道長盏混,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任惜论,我火速辦了婚禮许赃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘馆类。我一直安慰自己混聊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布乾巧。 她就那樣靜靜地躺著技羔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卧抗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天鳖粟,我揣著相機(jī)與錄音社裆,去河邊找鬼。 笑死向图,一個胖子當(dāng)著我的面吹牛泳秀,可吹牛的內(nèi)容都是我干的标沪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼嗜傅,長吁一口氣:“原來是場噩夢啊……” “哼金句!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吕嘀,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤违寞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后偶房,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趁曼,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年棕洋,在試婚紗的時候發(fā)現(xiàn)自己被綠了挡闰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡掰盘,死狀恐怖摄悯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情愧捕,我是刑警寧澤奢驯,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站晃财,受9級特大地震影響叨橱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜断盛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一罗洗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钢猛,春花似錦伙菜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壶愤,卻和暖如春淑倾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背征椒。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工娇哆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓碍讨,卻偏偏與公主長得像治力,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子勃黍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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