架構演進之「微服務架構」

「爲何要搞「微服務架構」」?這也是咱們當初討論的聚焦點。如今每天把「微服務」掛在嘴邊的人不少,可是有多少人真正深刻思考過「爲何」,我認爲可能很少。json

因而我在梳理材料的時候,就決定從源頭入手——即「爲何」。 微信

架構是演進的,不是一蹴而就。數據結構

「架構演進趨勢圖」中的趨勢分析,在業界比較公認。這個圖自己的內容、關於各個架構的描述、優缺點等等,網上簡單搜索一下有大把大把的,感興趣的同窗能夠自行搜索,畢竟這也不是咱們文章的重點。架構

軟件發展的不一樣時期、階段,對技術的理解、選擇和應用都有着不同的訴求。架構的選型,永遠只有「合適與不合適」,永遠沒有「哪一個更好」的說法。咱們今天來談論微服務,並非由於它更牛,而是通過謹慎分析,認爲微服務的思想更符合咱們的目標。框架

什麼是「微服務架構」?運維

既然聊的是「爲何」,那麼首先要明白「什麼是」。分佈式

「一解釋就懂,一問就不知,一討論就打架」,這是以前我在網上看到的一句話,笑了很久,太貼切了,就搬了過來。微服務

提到微服務,就無法不提到這位「大神」——馬丁·福勒,他沒有直接給微服務下一個精準的定義,而是給出了微服務特色的描述,大概從如下四個方面來講:測試

1.根據業務模塊劃分服務種類設計

2.每一個服務能夠獨立部署而且互相隔離

3.經過輕量的API調用服務

4.服務須要保證良好的高可用性

怎麼理解呢?如下是個人解讀:

第一點,按業務拆分服務,這是「水平拆分」;在技術層面的「先後分離」,屬於「垂直拆分」;橫縱一塊兒切,就把單一的應用拆分紅網狀的小塊應用,這是微服務中「微」思想的體現。

第二點,獨立部署與互相隔離,這點充分體現了「我爲人人、人人爲我」的設計理念,這是微服務中「服務」思想的體現。

第三點,關於輕量API,微服務自己是推薦使用輕量的通信協議和簡單的數據結構,實際上,實施環節一般採用的都是http+json的方式。這樣作的好處是,服務之間再也不須要關心對方的模型,僅經過事先約定好的接口來進行數據流轉便可。這是微服務中「解耦」思想的體現。

最後一點,比較通用了,就是現現在各類設計都必須考慮的事情。

因而,我給微服務下了一個定義(如圖)。

在實際工做中,咱們遇到過各式各樣的問題,有些是技術問題,有些是業務問題,還有些是管理問題,這裏拿其中一個案例來講一下。

這種事情說大不大,說小不小。其中最麻煩的事情是「推諉」的發生。每一個獨立組織都有本身的考覈指標和關注點,而實際狀況又不可能把具體的一個任務的界限劃分得特別清晰。例如接口定義,哪怕說的是「雙方坐下來一塊兒商討決定」,最終仍是會有一方對此事負責,推諉在所不免。

微服務的指導思想其中一塊就是關於組織機構調整的,這還有個專門的定律叫「康威定律」,感興趣的能夠自行搜索瞭解。

咱們的解決辦法也頗有效果。在組織機構沒有徹底按照微服務的理念從新規劃以前,這類須要跨組織協同完成的任務,直接成立臨時項目組:相關的部門出人的出人、出資源的出資源,指定/選拔一個能hold住的項目經理對整件事情負責,而後你們驚奇的發現:「部門牆」問題不見了,由於全部事情都是組內事情了,總體的完成狀況跟所有項目組成員的業績都掛鉤了,事情推動就很是順利。在順利交付以後,項目組解散,各回各家。極大的提高了溝通效率、交付速度,同時使得資源利用率也獲得了很大的提高。

其實不少時候,你們解決問題的想法和思路,並非要有了微服務才這樣作,而是「不謀而合」,微服務就存在於咱們平常工做的點點滴滴之中。

有人問:我要搞微服務了,有啥建議麼?

有的。經過咱們不斷的摸索和總結,要作好微服務,就要作好必定的準備工做,從四個具體的方面來談:

業務拆分 – 體如今設計環節:在設計的時候,要有足夠的判斷力來合理的規劃服務之間的界限。

服務治理 – 底層技術的支持:首先要選一款適合本身實際狀況的分佈式服務基礎框架,對於服務的發現、治理、熔斷、降級,都要作好相應的技術準備。

自動測試:必定要自動化。微服務一個明顯的表象就是隨着服務的增多,若是繼續沿用傳統的測試模式就會遇到瓶頸,爲了保證高效的迭代,儘可能作到更多的環節實現自動化。

自動運維 :微服務拆分以後,每一個服務均可以獨立部署,進而言之應該是隨時隨地能夠升級。尤爲當互聯網發展到今天,業務要保持對市場變化的一個高效響應,自動化運維就是提高交付速度的一個重要環節。

最後必定要提的是「監控」:包括硬件環境、服務狀態、系統健康度、接口調用狀況、異常的實時告警以及潛在問題的事先預警等等。「監控」在實施微服務過程當中會重要到什麼程度呢?一句話:沒準備好監控,就不要搞微服務。

最後,微服務不是銀彈,軟件領域沒有銀彈,微服務以其特有的優點在解決一些問題的同時,也引入了其餘問題,這幾點,必需要深入的思考。

「三思然後行」。

閱讀原文

——————————————————分割線——————————————————

我是黑少,直男一枚,微服務硬核玩家,喜歡分享、愛交友人、崇尚「實踐出真知」的理念,以折騰鼓搗代碼爲樂

個人微信:weiweiweiblack (備註:開源中國 )

微信公號:黑少微服務,專一微服務技術分享,非技術不八卦!

相關文章
相關標籤/搜索