1. 程式人生 > >Golang微服務:Micro介紹

Golang微服務:Micro介紹

官方文件地址

https://micro.mu/docs/index.html

Tookit

  • API HTTP接入閘道器、反向代理或將HTTP轉為RPC請求呼叫後端服務
  • Web 一個web應用程式,預設監控本地:8082埠,執行micro web進入瀏覽器可看到介面上提供了(CLI,Registry,Call功能)
  • Proxy 客戶端代理,客戶端可以通過Proxy訪問微服務(客戶端與服務端網路不通時使用)
  • Bot 機器人,使用Slack,HipChat,XMPP等協議通過Bot訪問微服務
  • CLI 客戶端,功能列表(檢視服務列表,獲取一個服務,呼叫服務,服務健康檢查,註冊登出服務)
  • new 指令,根據proto生成微服務程式碼模板

Go Micro

Go-Micro是一套適用於微服務的可拔插的RPC框架,其核心是9個重要的介面,沒個介面都可以自由替換
image

  • Registry 服務的註冊和發現,目前實現的consul,mdns, etcd,etcdv3,zookeeper,kubernetes.等等,
  • Selector 以Registry為基礎,Selector 是客戶端級別的負載均衡,當有客戶端向服務傳送請求時, selector根據不同的演算法從Registery中的主機列表,得到可用的Service節點,進行通訊。目前實現的有迴圈演算法和隨機演算法,預設的是隨機演算法。
  • Broker Broker是訊息釋出和訂閱的介面。很簡單的一個例子,因為服務的節點是不固定的,如果有需要修改所有服務行為的需求,可以使服務訂閱某個主題,當有資訊釋出時,所有的監聽服務都會收到資訊,根據你的需要做相應的行為。
  • Trasport 服務之間的通訊介面,也就是服務傳送和接收的最終實現方式,是由這些介面定製的
  • Client Client是請求服務的介面,他封裝Transport和Codec進行rpc呼叫,也封裝了Brocker進行資訊的釋出。
  • Server Server看名字大家也知道是做什麼的了。監聽等待rpc請求。監聽broker的訂閱資訊,等待資訊佇列的推送等。
  • Codec 有了傳輸方式,下面要解決的就是傳輸編碼和解碼問題,go-micro有很多種編碼解碼方式,預設的實現方式是protobuf,當然也有其他的實現方式,json、protobuf、jsonrpc、mercury等等
  • Service Service是Client和Server的封裝,他包含了一系列的方法使用初始值去初始化Service和Client,使我們可以很簡單的建立一個rpc服務。
  • Wrappers 中介軟體,熔斷、限流、跟蹤

Plugins

上面的9大介面均在Plugins實現,且使用者可以自行其他實現