天天看點

微服務

微服務架構似乎跟SOA非常相似,或者說,根本就是同一個東西,隻是換了一個名稱而已。

二者本質上都是元件化,将一個大系統拆分成若幹個獨立的小系統,再通過接口和服務組合起來。

不同之處在于粒度不一樣:SOA面向較大型項目,分拆成多個應用;或者是将原本存在的多個應用,通過公共服務和接口而接合起來,組成一個大型系統;而微服務架構則是将單個應用再分割,分割成若幹個微服務。

微服務
這樣做的可取之處,或者是出發點,無非就是為了

1、系統邏輯架構清晰

2、提高複用性

3、提高開發效率

由于各個元件或服務有相對獨立性,在開發過程中利于分開開發,提高效率;

4、友善單獨部署

但凡事有利有弊:

1、由于元件或服務數量多,互動和依賴增多,提高了整個系統的複雜度

2、同時元件之間存在依賴,降低系統的穩定性;如果被衆多依賴的服務或元件出問題,系統可能癱瘓。

3、本來在系統内可以很友善通路的東西,可能改為調用服務,降低了系統的效率

4、整體部署複雜,本來隻部署一個,現在N個

為什麼會發展出微服務這種模式呢?如果搞過java web項目可能就比較容易了解。java web項目,可以搞成一個war包,扔在tomcat的webapps裡。這個war包,裡面就包含了一個網站項目的所有,包括邏輯、頁面,樣式,腳本,十分符合微服務架構描述中的一個“巨大應用”的特征。

那麼将這個大war包,拆成若幹個小war包,每個小war包可以直接複用,或者交由不同團隊開發,肯定非常的快速、靈活。接着是快速部署,微服務和docker應該是絕配。這樣就可以進行所謂的AB測試了。就是同一個功能開發出AB兩份,經測試、對比,從中選一份。微服務跟網際網路息息相關,符合網際網路應用快速疊代、不斷試錯的要求。

微服務

我在網上搜了許多有關微服務與SOA的差別的文章,每篇文章都非常的長,說了一大通,根本不能三言兩語明确指出差別在哪裡。這恰恰說明,二者其實差別不大。SOA中的大項目與微服務架構中的大應用,其界限是模糊的。