微服務是一種架構設計。在架構中經過將業務邏輯拆分紅一系列小而鬆散耦合的分佈式組件來共同構成較大的應用。其中每一個組件都被稱爲一個服務,而每一個服務都在總體架構中執行着單獨的任務。架構
微服務架構使得一個複雜的應用被拆分爲一系列簡單的微小服務,而這使得後期維護簡單,每一個小團隊負責一個或多個服務,能夠快速高效的解決問題。同時微服務在如今的彈性部署很是有優點,某些微服務有瓶頸直接擴容升級而不須要再和之前同樣總體優化升級,很好利用彈性雲等基礎設施。分佈式
SOA是什麼?微服務
服務導向式架構(SOA---service oriented architecture)是集成多個較大組件(通常是應用)的一種機制,它們將總體構成一個彼此協做的套件。通常來講,每一個組件會從始至終執行一塊完整的業務邏輯,一般包括完成總體大action所需的各類具體任務與功能。組件通常都是鬆耦合的,固然也能夠緊耦合,沒有硬性規定。優化
SOA其實能夠看作早期版本的microservice,不過其粒度比microservice大不少。而粒度過大就會致使一些組件比較複雜,一些較大的組件也可能太過複雜而難以實現自動化,在最壞的狀況下甚至徹底沒法實現。
網站
購物網站的例子
架構設計
一個在線購物網站一般會有一些不一樣的功能,好比商品目錄,購物車等等。設計
若是採用SOA的架構設計通常會將網站按照大的功能拆分爲模塊,並將每一個部分做爲獨立應用分別開發,最後集成到一塊兒。好比購物車的全部功能是一個應用,他們須要瞭解整個購物車的工做機制,以便可以修改。在這個應用中,購物車設計的邏輯包括顯示物品、增長或移除購物車商品、查看庫存、處理運費、處理金額計算、短信發送,郵件發送等。而這些功能在別的模塊是也有的,是徹底能夠複用的,可是他們是由不一樣團隊開發致使重複實現,後期若是有改動還得都改動來保證一致性。開發
若是微服務架構會將購物車切分紅較小的服務。再也不是購物車應用了,而多是金額計算服務、添加/移除商品服務、運費服務。這樣後期維護簡單高效。出現新需求也能很快響應。部署
類似卻不相同團隊協作
微服務與SOA有不少相同之處。二者都是鬆耦合分佈式組件的系統結構。可是架構背後的意圖是不一樣的:SOA嘗試將應用集成,通常採用中央管理模式來確保各應用可以交互運做。微服務嘗試部署新功能,快速有效地擴展開發團隊。它着重於分散管理、代碼再利用與自動化執行。
結論:
SOA提供的粒度比較粗,microservice提供粒度更細。兩種各有優點,粗粒度複雜度低,較簡單,比較適合提供企業服務的應用,好比給xx企業提供如下服務,這服務內部實現可能很複雜,可是因爲是給企業提供的必須粒度粗,不可能要求企業去調用你各個microservice去組合吧。而microservice適合企業內部服務使用,內部進行解耦 ,團隊協做等,方便複用和維護。 在實際的架構設計中SOA和microservice沒有必要割裂開,好比在給企業提供服務時就能夠採用SOA,可是其內部卻能夠用microservice,經過microservice的組合來提供相似SOA的架構, 在其中一個服務中把各個服務組合起來提供統一的出口服務,達到屏蔽內部實現,又方便外部企業使用的目的。不論是SOA仍是microservice都只是解決方案,具體使用場景要按照實際狀況來。沒有任何架構是通用的。