當前位置:
首頁 > 最新 > 微服務是什麼?

微服務是什麼?

什麼是微服務

關於這種新框架的定義,有下面的描述:

它是一種特殊方法設計的一種有多種,粒度較小的,可以獨立發布的服務(service)組成的應用。這種應用開發有很多優點。

最初這個概念由James Lewis,MartinFowler提出的。

微服務架構是一種通過一套小的服務組成一個單一的應用。這些服務都獨立運行和控制對外交互,他們往往表現為一個HTTP的API介面。這些服務往往能完成某種獨立的業務。這些最小單位的服務,可以通過不同語言的程序,不同數據存儲技術來實現。

一直以來成功的一體化架構

在說明微服務之前先說一下一體化架構(Monolithic Architecture).

一體化架構屬於包括全機能的獨立應用系統。下面的圖,就是一般的一體化架構的表現。

這樣的系統,一般是通過各種包,架構活用,把業務進行組件化,功能化分解,即使這樣,實施的時候互相還是互相緊密結合,在單一的進程中運行。

這種架構曾經是一種很成熟,很成功的。但是越來越多的開發維護人員為這種日益龐大的系統感到一種挫敗感。特別是當越來越多的應用往雲上移植重構的時候。再就是,這種架構下,一旦發生變更,哪怕很細小的變更,都要整個系統重構,整體重新編譯和發布。

下面列舉一下一體化架構的特點:

l應用整體在單一的Process下運行

l度量一個應用的時候,往往把應用整體的實例作為對象。(當然可以分解,只是整體一個應用規模比較大)

l應用的某個點發生修改的時候,需要全部重新編譯和再次發布。

l組件或者某個功能之間的通信通過方法,函數的直接調用。

當今隨著雲服務的成熟運用,應用程序部署到雲上已經作為一種普遍手段,需要更敏捷的對應變更,發布變的頻繁。如果依然像以前那樣,細微變更也要全部重新編譯,再次發布,這不是大家希望看到的。

基於微服務的架構

微服務的構成,請參考下面的圖例。

微服務,應用由很多規模比較小的Service組成(上面圖中的小圓圈,或者小圖例)。這些服務有下面的一些特徵。

lService通過實裝小規模的機能,並且運行於獨立的Process.

l度量的時候,僅僅必要的Service作為對象。

l應用某些機能需要變更的時候,僅僅需要把對應的Service進行個別重新編譯和發布。

l和其他的Service的通信通過HTTP的API(Service之間松耦合化)

lService的實現,適合對應機能的語言實裝就可以,不局限於一種開發語言。

lService具有自己的數據管理機能,也是使用適合對應自己機能的資料庫,可以根據機能特點選擇關係型資料庫(Oracle,MySql,SqlServer等)也可以選擇非關係型資料庫(NoSql,Cassandra,Cloudant等)。

也就是,應用通過Service組件化的過程。但是他的獨立性更高,能支持多語言,多資料庫,

變更發生時,影響範圍更小,這就是針對一體化架構的最大的優點。

還有很重要的一點,技術人員的構成。往往一體化的應用開發,著眼於技術層,分UI組,邏輯組,數據處理組等的構成很多。

但是,作為微服務,應用的業務機能如何實現基於單獨的Service。並且,各個服務包含UI要素,邏輯要素,數據處理要素,對於其他Service公開的API。這樣,不同的Service可以通過各種各樣的技術團隊來實現,比如Java,.NET,SFDC等等。這樣,一個大的應用可能由各種技術的組組成。

微服務的共同特徵

l基於Service的組件化

l基於業務如何實現的組織

l不是Project,而是Product

l靈活的終端,通過Message通訊的管道

l分散式管理

l分散式數據管理

l為故障做好準備的設計

l演進式設計

關於不是Project而是Product補充一下,以前開發人員可能就關注自己的一個片段代碼完成,然後集成時才會發現很多問題。在微服務的架構下,他必須關注整個技能的生命周期。也就是你開發這個Service,你運行這個Service。

關於「靈活的終端,通過Message通訊的管道」,原文是「smart endpoint, dumb pipe」(也有說啞管道),就是說Service之間的通訊通過HTTP介面,後面的處理都交給Service完成。

演進式設計,就應該指其粒度小,更適合頻繁變更,對應於變更更敏捷。

面向微服務以及面向服務

面向服務(SOA)架構,他們的概念很接近,都是松耦合。把微服務說成粒度小的服務的說法也有。

提倡微服務的James Lewis,MartinFowler,他們觀點是,SOA更多的場合是,利用EBS把一體化架構進行統合,從這點上來說,和微服務不同。SOA的組成過於龐大。

相對來說,微服務僅僅是提供基於HTTP的API的輕量的Service,這樣,即使Monolithic應用也可以和微服務通信。

今後,微服務的架構,更敏捷,更易於適應變革,作為一種新的發展方向,值得我們關注。

--------------------------------------

歡迎關注本公眾號,我們會持續推出關於微服務的文章。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

特爺們的女生可以變得又美又溫柔,變身!
我們真正的悲劇性就在於對「黑天鵝」事件的無視

TAG:全球大搜羅 |