天天看點

微服務到底是什麼?

微服務就是将一個完整的系統,按照業務功能,拆分成一個個獨立的子系統,在微服務結構中,每個子系統就被稱為“服務”。這些子系統能夠獨立運作在web容器中,它們之間通過RPC方式通信。

舉個例子,假設需要開發一個線上商城。按照微服務的思想,我們需要按照功能子產品拆分成多個獨立的服務,如:使用者服務、産品服務、訂單服務、背景管理服務、資料分析服務等等。這一個個服務都是一個個獨立的項目,可以獨立運作。如果服務之間有依賴關系,那麼通過RPC方式調用。

這樣的好處有很多:

  1. 系統之間的耦合度大大降低,可以獨立開發、獨立部署、獨立測試,系統與系統之間的邊界非常明确,排錯也變得相當容易,開發效率大大提升。
  2. 系統之間的耦合度降低,進而系統更易于擴充。我們可以針對性地擴充某些服務。假設這個商城要搞一次大促,下單量可能會大大提升,是以我們可以針對性地提升訂單系統、産品系統的節點數量,而對于背景管理系統、資料分析系統而言,節點數量維持原有水準即可。
  3. 服務的複用性更高。比如,當我們将使用者系統作為單獨的服務後,該公司所有的産品都可以使用該系統作為使用者系統,無需重複開發。

那麼問題來了,當采用微服務結構後,一個完整的系統可能有很多獨立的子系統組成,當業務量漸漸發展起來之後,而這些子系統之間的關系将錯綜複雜,而且為了能夠針對性地增加某些服務的處理能力,某些服務的背後可能是一個叢集模式,由多個節點構成,這無疑大大增加了運維的難度。微服務的想法好是好,但開發、運維的複雜度實在是太高。為了解決這些問題,阿裡巴巴的Dubbo就橫空出世了。

知識點2:Dubbo

Dubbo是一套微服務系統的協調者,在它這套體系中,一共有三種角色,分别是:服務提供者(下面簡稱提供者)、服務消費者(下面簡稱消費者)、注冊中心。

你在使用的時候需要将Dubbo的jar包引入到你的項目中,也就是每個服務都要引入Dubbo的jar包。然後當這些服務初始化的時候,Dubbo就會将目前系統需要釋出的服務、以及目前系統的IP和端口号發送給注冊中心,注冊中心便會将其記錄下來。這就是服務釋出的過程。與此同時,也是在系統初始化的時候,Dubbo還會掃描一下目前系統所需要引用的服務,然後向注冊中心請求這些服務所在的IP和端口号。接下來系統就可以正常運作了。當系統A需要調用系統B的服務的時候,A就會與B建立起一條RPC信道,然後再調用B系統上相應的服務。

這,就是Dubbo的作用。