關注公眾號“AI碼師”領取2021最新面試資料一份
面試官經常會問:你開發過微服務么?
我們肯定會回答:開發過的,之前什么什么專案就用過,
面試官接著問:那如果讓你搭建一套微服務的話,你覺得需要哪些組件?
這時,我們一般選擇以沉默回應,啞口無言了…因為我們平時都是在寫業務,很少去關注這些,所以今天給大家介紹一下微服務的基本組成:
文末有福利哦,,,
微服務基本組成
本篇文章推薦的基本都是spring cloud alibab套件,也是目前最流行的微服務全家桶,先貼一張目前比較成熟的微服務架構圖:

注冊中心
- 作用:因為在開發微服務專案中,至少會有兩三個服務,然而這些單個服務又會啟動多個實體,當服務間進行呼叫的時候,我們是無法把每個服務的地址全部保存下來的,因為這些服務有可能會被下線,或者進行擴容,導致我們很難去維護這些服務地址;所以就需要一個注冊中心,去處理這些服務的注冊請求,服務提供者會自己注冊到這個注冊中心,然后消費者會按照服務名去注冊中心尋找自己需要的服務,獲取具體的實體地址,能夠做到動態地進行切換,免去自己維護這些地址的成本,
- 推薦組件:Nacos
配置中心
- 作用:因為在開發微服務專案中,專案在運行程序中,會啟動很多服務,每個服務又會啟動很多實體,如果有一個需求來了,說是要修改一下組態檔,這時候按照傳統的單體的專案,肯定是改好組態檔后,重新打個包,然后丟到線上,就可以了,但是,現在微服務一般有多個相同的實體在運行,為了改一個組態檔,必須停止所有實體,然后重啟,成本是不是有點高?如果加上一個配置中心,只需要修改配置中心,所有實體會動態去重繪這些組態檔,就不需要一個個停止重啟了,
- 推薦組件:Nacos,阿里出版的nacos 即可支持注冊中心又能支持配置中心
服務網關
- 作用:我門啟動多個服務的時候,這些服務有可能運行在不同服務器上,有可能運行不同的埠,這樣會導致我們前端在請求介面的時候,需要寫很多基地址,每個服務都用不同的呼叫地址,如果能將這些服務統一暴露出一個地址的話,前端就不會這么麻煩了,誰能做這個事呢?當然就是網關了,前端只要將網關的基地址保存下來,就可以拼接不同服務的介面地址了,通過網關去轉發到對應的服務,
- 推薦組件: gateway
服務呼叫/負載均衡
-
作用:我們在服務間進行呼叫的時候雖然傳的是服務名稱,但是我們最終呼叫的地址肯定是IP加埠的形式,但是這一步當然不能由我們自己做,因為每個服務會有多個實體,每個實體有自己的地址,我們不可能一直呼叫同一個實體,肯定需要做負載均衡,并且還需要一個能把服務名轉換為最終實體地址的組件,
-
推薦組件: openfeign
限流/熔斷/降級
-
作用:
- 限流:防止某一服務訪問量太高,導致其他服務不可用,或者拒絕服務;對于用戶級別,防止某個惡意用戶對系統進行攻擊,導致系統癱瘓,不能對其他用戶提供正常服務,限流演算法一般包括:令牌桶和漏桶兩種演算法,
- 熔斷:熔斷是某個服務發生故障了,呼叫方就沒必要再去呼叫這個服務,就直接執行自己的本地方法,減少網路資源消耗,
- 降級:降級和熔斷不同,降級是為了在某些場景下,對某些服務進行降級,為的是讓出更多資源給其他服務,例如雙11的時候,就會把無關交易的服務進行降級,把更多的資源給交易服務騰出來,
-
限流/熔斷/降級,是微服務中抗高并發的三板斧,都發揮極其重要的作用,
-
推薦組件:sentinel,同時支持三個功能
日志中心
- 作用:目前來看,日志系統的主要作用是用來排查線網問題的,當系統出現問題時,我們必須依賴日志系統去排查,當然,既然做了微服務,肯定不會直接查看日志檔案,因為我們有成熟的套件能夠將這些資料進行可視化展現,
- 推薦組件:ELK,EFLK,
鏈路追蹤
- 作用:在系統出問題的時候,我們在排查問題時,需要將整個微服務呼叫鏈路給串聯起來,才能找到是哪個環節出現問題
- 推薦組件:Sleuth +Zinkin
分布式事務
-
作用:在微服務開發中,每個微服務使用的都是自己的資料庫,如果操作需要事務的資料,在兩個資料庫中間是無法完成的,這就得引入分布式事務,
-
推薦組件:seata,上手簡單
分布式鎖
-
作用:在進行分布式開發時,肯定避免不了使用鎖,但是在分布式中,傳統的鎖是鎖不住的,因為傳統的鎖只能鎖住一個行程里面;在分布式中,每個實體都運行在自己的行程中,只能使用分布式鎖才能保證業務的一致性,
-
推薦組件:klock,基于redis的封裝,實作的是功能完善的分布式鎖,當然你也可以自己基于redis實作,但是有一個現成的用不香么?
授權認證中心
- 作用:驗證用戶身份和授權
- 推薦組件:spring cloud security oauth2
其他組件
快取:redis,讀寫分離:mycat,訊息中間件:rabbitmq,
福利大放送
關注微信公眾號“AI碼師”,領取面試資料和最新全套微服務教程

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/275133.html
標籤:其他
下一篇:編程九十天之特別紀念篇
