Hi Developer,您有一份來自華為雲學院的微服務開發攻略請查收

華為雲學院發表於2018-09-26

微服務正成為最熱門的系統架構之一。作為一名開發者,是否已經瞭解微服務?微服務系統?微服務應用模式?如何提升微服務開發能力。。。。。。 本文帶你一起學習微服務。

1       什麼是微服務

微服務是架構 層的一個概念,透過分解(業務單元),將專案拆解出 n 個單元,互相沒有強依賴關係(解耦),自我準備需要的依賴條件,進而達到可以獨立執行,不再受環境與地點上的限制。

2       微服務的由來

微服務最早由 Martin Fowler與James Lewis於2014年共同提出,微服務架構風格是一種使用一套小服務來開發單個應用的一種方式,每個服務執行在自己的程式中,並使用輕量級機制通訊,通常是HTTP API,這些服務基於業務能力構建,並能夠透過自動化部署機制來獨立部署,這些服務使用不同的程式語言實現,以及不同資料儲存技術,並保持最低限度的集中式管理。

3       應用模式比較

3.1       傳統應用模式

我們在以往的傳統應用模式下,大致是所有的功能都整合在同一個應用中,這種模式一般被稱為單體式開發,即所有的功能打包在一個 war包內,然後部署在jee中,這裡麵包含了所有的業務邏輯,觸發器,大部分的還包含了ui,如下圖:


這樣的模式下暴露出了他所致命的缺點:

•  程式碼管理比較難,因為大家都在同一個工程下,會經常的發生衝突

•  新人不太容易上手,因為耦合性太高,調查一個問題時往往會牽扯更多的功能

•  打包危險度大,往往只是提交很小一部分的修改卻需要全量打包

•  運維危險度大,可能只是某一個功能崩潰了就會導致整個系統癱瘓

•  不容易擴充套件,如果只是一個功能的請求量突增,不容易擴充套件

•  部署要求較高,這樣的應用往往需要高配置的主機來承載

3.2      微服務應用模式

我們在做架構設計的時候,常常需要遵守三個標準(敏捷性、使用者體驗、成本),基於微服務的架構設計目的就是有效的拆分應用,每個應用單獨管理,進而實現敏捷開發和部署,如下圖:



由一些獨立的應用組合成一個軟體系統,每個服務獨立執行,跑在自己的微環境中,每個服務獨立開發可以按照業務單元進行拆分,實現了跨組織跨地域協同的問題,多個服務採用分散式進行管理,且具有強隔離性。

4       微服務架構

在微服務架構中,除了每個業務單元的服務外,就是那些服務治理元件了,比如:服務中心、服務消費、負載均衡、斷路器、智慧路由、配置管理等,這些個元件互相配合再加上業務的各個微服務,共同組建了一個微服務系統,一個簡單的微服務系統如下:


使用者透過客戶端發起請求, nginx負載到某個zuul上然後轉發到相應的微服務上,微服務間透過rpc或者mq進行通訊,透過配置服務獲取配置資料,最終將整合後的結果返回給使用者。

5       微服務的優勢

透過以上介紹,我們不難看出微服務的優勢:

1. 他將巨大的單體式應用分解出多個服務,解決了複雜性的問題,在總功能不變的情況下,系統被分解成多個可管理的服務,每個服務都用rpc/mq來驅動和定義清晰的api邊界,為很難實現的功能提供了模組化的解決方案,並且更容易開發和維護。

2. 在這樣的架構模式下,可以實現每個服務可由不同的團隊來開發,從而放寬了技術選型,只需提供標準的restapi即可,在這種自由模式的開發背景下,開發者可以選擇較新的技術,由於每個服務的功能很小,所以開發的難度也很低,即使出現了程式碼重寫的問題難度也不是很大。

3. 由於微服務採用的是獨立部署,開發者在部署的時候不用考慮其他的服務對自己的影響,這種改變加快了部署速度並減少了部署風險,微服務架構使ci/cd成為可能。

 

瞭解了微服務的基本概念與結構,應用模式和特點等,那麼如何學習微服務技術、提升微服務開發的能力?華為雲學院( https://edu.huaweicloud.com/ )已上線課程——《微服務上雲實踐》,從理論到實踐,一站式攻克微服務!

服務中心、路由閘道器、服務生產與消費、 Springboot、資料庫、快取服務、訊息系統、測試運維等八大方向,只有你想要的,沒有學不到的!

對微服務技術有疑問、實踐過程碰到問題?統統不要擔心,現在學習更有專家駐群、一對一解答 &指導!

快來華為雲學院( https://edu.huaweicloud.com/ )報名學習吧!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556022/viewspace-2214922/,如需轉載,請註明出處,否則將追究法律責任。

相關文章