Spring Cloud Alibaba微服務實戰筆記之微服務架構篇

 

目錄

 

一、微服務介紹

二、微服務架構的常見問題

三、微服務架構的常見概念

四、微服務架構的常見解決方案

 

概述:

俗話說,兵馬未動,糧草先行,只有更好的理解什麼是微服務,才能事半功倍的學習好微服務架構。

 

一、微服務介紹

微服務架構,重點在一個微字,簡單的說就是將單體服務拆分成更多更小的服務,每個服務都是一個獨立的,可以運行的項目。我們來看一張圖:

 

這麼拆有什麼好處?

沒有拆分之前,你修改一個功能,進行測試,部署上線,可能要一個月,要考慮對其他服務的影響,考慮其他人改動代碼的影響,還要對整個系統功能全量回歸測試,費事費力,可能上線基本上就得1個月,那麼服務拆分之後,可以獨立打包,測試,部署,升級,只需要關心自己的功能,隨時可以安排上線。而且每個微服務都有清晰的任務劃分,利於擴展。總之,拆分之後對於開發人員來說是非常爽的一件事。

有好處那就有缺點,服務多了之後,要考慮怎麼管理維護,使用的架構也不一樣,技術學習成本也會上升。

 

二、微服務架構常見的問題

一旦決定採用微服務架構系統,就會面臨以下幾個不能饒過的問題:

  • 這麼多服務,怎麼管理?

  • 這麼多服務,他們之間怎麼通訊?

  • 這麼多服務,用戶應該怎麼訪問他們?

  • 這麼多服務,一旦出現問題了,怎麼進行自處理?

  • 這麼多服務,一旦出現問題了,怎麼進行問題排查?

上面的這些問題,是任何一個微服務設計者都繞不過去的,市面上一些微服務架構產品就是提供了一系列的組件來解決上述問題。

 

來看一個常見的微服務架構圖

 

三、微服務架構的常見概念

1、服務治理

服務治理就是進行服務的自動化管理,其核心就是服務的自動註冊與發現

服務註冊:服務啓動的時候將自身的服務信息註冊到註冊中心

服務發現:服務去註冊中心獲取一些其他服務註冊到註冊中心的服務信息,通過這些信息可以去請求他們提供的服務。

服務刪除:服務中心會將不能提供服務的服務從註冊中心刪除掉,避免被其他服務調用到。

 

2、服務調用

在微服務架構中, 通常存在多個服務之間的遠程調用的需求。目前主流的遠程調用技術有基於HTTP的

RESTful接口以及基於TCP的RPC協議。

REST(Representational State Transfer):這是一種HTTP調用的格式,更標準,更通用,無論哪 種語言都支持http協議
RPC(Remote Promote Call):一種進程間通信方式。允許像調用本地服務一樣調用遠程服務。 RPC框架的主要目標就是讓遠程服務調用更簡單、透明。RPC框架負責屏蔽底層的傳輸方式、序列 化方式和通信細節。開發人員在使用的時候只需要瞭解誰在什麼位置提供了什麼樣的遠程服務接口 即可,並不需要關心底層通信細節和調用過程。

 

 

3、服務網關

 

隨着微服務的不斷增多,不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務 的接口才能完成一個業務需求,如果讓客戶端直接與各個微服務通信可能出現:

  • 客戶端需要調用不同的url地址,增加難度

  • 在一定的場景下,存在跨域請求的問題

  • 每個微服務都需要進行單獨的身份認證

針對這些問題,API網關順勢而生。

API網關直面意思是將所有API調用統一接入到API網關層,由網關層統一接入和輸出。一個網關的基本 功能有:統一接入、安全防護、協議適配、流量管控、長短連接支持、容錯能力。有了網關之後,各個 API服務提供團隊可以專注於自己的的業務邏輯處理,而API網關更專注於安全、流量、路由等問題。

 

 

4、服務容錯

在微服務當中,一個請求經常會涉及到調用幾個服務,如果其中某個服務不可用,沒有做服務容錯的 話,極有可能會造成一連串的服務不可用,這就是雪崩效應。我們沒法預防雪崩效應的發生,只能儘可 能去做好服務容錯。

 

5、鏈路追蹤

隨着微服務架構的流行,服務按照不同的維度進行拆分,一次請求往往需要涉及到多個服務。互聯網應 用構建在不同的軟件模塊集上,這些軟件模塊,有可能是由不同的團隊開發、可能使用不同的編程語言 來實現、有可能布在了幾千臺服務器,橫跨多個不同的數據中心。因此,就需要對一次請求涉及的多個 服務鏈路進行日誌記錄,性能監控即鏈路追蹤

 

四、微服務架構的常見解決方案

目前國內主流的微服務架構方案主要是Dubbo+一些自研的組件,目前是一些技術力量比較雄厚的大公司會採用。另一種是Spring Cloud微服務技術棧,目前主要是一些中小型公司在用,可以快速的搭建一套微服務架構。

 

隨着Spring Cloud的閉源,alibaba提供了一套Spring Cloud Alibaba微服務技術棧,Spring Cloud Alibaba 致力於提供微服務開發的一站式解決方案。此項目包含開發分佈式應用微服務的 必需組件,方便開發者通過 Spring Cloud 編程模型輕鬆使用這些組件來開發分佈式應用服務。

 

後記

Spring Cloud Alibaba微服務技術棧必將是國內未來微服務開發的主流技術棧,後續的微服務實戰筆記將基於此技術棧進行開發學習。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章