Go Micro 微服務總結


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 服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM