Go Micro 微服務總結

2022-06-19 21:30:15 字數 1361 閱讀 4020

go micro 微服務總結

對外提供restful. api 服務的是通過 api 框架或原生寫法 -> 直接呼叫的是 srv

內部呼叫是客戶端去訪問服務端

直接 /rpc 呼叫的時候會繞過 restful. api(但是 micro api 閘道器是必須啟動的,閘道器也可配置) -> 直接呼叫srv (http請求 會自動轉成 rpc呼叫)

api 閘道器一般作用:

封裝了內部系統架構並且提供了每個客戶端定製的api、身份驗證、監控、負載均衡、快取、資料通訊協議轉換、統一維護流量路由表

至於向加一些其他功能比如鑑權則需要實現micro api的外掛程式,可以參考專案中的實現

micro api通過接收前端http請求,將請求轉換之後傳送到內部服務,對於服務間的請求,a服務可以直接使用go語言的grpc客戶端呼叫b服務的介面。相比在使用restful方式完成服務之間的相互訪問,grpc能提供更好的效能,更低的延遲,並且生來適合與分布式系統。

使用者身份鑑定:功能是除了登入功能的每乙個api都會呼叫的功能。統一在api 閘道器處理。對於容器化與無狀態服務,可以使用jwt進行身份驗證,以下是乙個例子,從authorization中解析出使用者資訊然後傳遞給閘道器後的服務。

server 服務端:

server包是使用編寫服務的構建包,可以命名服務,註冊請求處理器,增加中介軟體等等

客戶端:

客戶端提供介面來建立向服務端的請求。與服務端類似,它構建在其它包之上,它提供獨立的介面,通過註冊中心來基於名稱發現服務,基於選擇器(selector)來負載均衡,使用transport、broker處理同步、非同步訊息。

服務熔斷:當服務a呼叫服務b的請求滿足一定的規則,比如10秒內請求數達到20個,並且有一半以上的請求失敗了,此時我們通過切斷對服務b的呼叫來保護系統的整體響應,這種操作即為服務熔斷。

服務降級:在服務b被熔斷之後,服務a不會真正地呼叫服務b。取而代之的是,我們在服務a中定義乙個服務降級邏輯(通常是乙個fallback介面),此時服務a會直接呼叫服務降級邏輯快速獲取返回結果。

微服務註冊與發現:

服務的註冊發現對於微服務來說是乙個非常重要的環節,在單一架構應用中,service 之間的互相呼叫,通過乙個固定的host 和port 來發起rest 或者rpc 來呼叫,但是在微服務架構中,各個服務往往是動態變化的,所以需要乙個服務發現機制來傳送客戶端的請求到動態的service 例項中去。

golang學習需要轉換的思維:

資料處理和型別轉換以及型別定義

同乙份**在多個地方部署,最後註冊成同乙個服務名稱,不同的ip位址(也可以相同)或埠號

cli 命令列的方式呼叫不需要執行 micro api 閘道器,不需要 啟動 go.micro.api.auth 服務。是直接呼叫 go.micro.srv.auth 服務

go micro 微服務學習筆記(2)

通過.proto自動生成json介面資料時,會預設新增omitempty,此時若字段為空 例如空串,0,nil 則返回的json資料會忽略該欄位,如下圖自動生成的資料。通過查閱其原始碼 路徑protoc gen micro generator generator.go 可以發現其生成時會自動新增 o...

使用go micro開發微服務詳解

微服務架構是用來替換傳統的單體架構的。它使用細顆粒度的服務及其組合來完成乙個業務系統的工作。服務間是以一種約定來進行通訊。微服務架構會帶來如下的好處 當談論微服務時,服務的編排和發現是非常重要的。例如kubernetes就用於編排docker容器。通常來說乙個微服務對應乙個容器是乙個比較好的實踐。服...

go微服務系列 一 go micro入門

2.go micro入門 3.結合consul進行服務註冊 發現 它是乙個可插入的rpc框架,用於在go中編寫微服務。開箱即用,您將收到 go 微體系結構可以描述為三層堆疊 頂層由客戶端 伺服器模型和服務抽象組成。底層由以下型別的外掛程式組成 sidecar提供服務註冊,grpc編碼 解碼和http...