go微服務系列 一 go micro入門

2022-01-19 04:11:12 字數 2980 閱讀 1658

2. go micro入門

3. 結合consul進行服務註冊/發現

它是乙個可插入的rpc框架,用於在go中編寫微服務。開箱即用,您將收到:

go 微體系結構可以描述為三層堆疊

頂層由客戶端-伺服器模型和服務抽象組成。

底層由以下型別的外掛程式組成:

sidecar提供服務註冊,grpc編碼/解碼和http處理程式。它支援多種語言。

最簡單的用法大概如下,結合net/http標準庫監聽路由

}也可以整合第三方web框架作為路由

web.address(":8081"), // 埠

web.metadata(map[string]string), // 元資訊

web.handler(r)) // 路由

_ = server.run()

}微服務裡最重要的關鍵一步就是服務註冊

常用的有consul、etcd、zookeeper、eureka

我們這裡使用consul

這裡直接使用docker安裝

docker run -d --name=cs -p 8500:8500 consul agent -server -bootstrap -ui -client 0.0.0.0
然後再訪問埠8500,如下現實安裝成功

github.com/micro/go-micro/registry/consul上面這個在1.14.0版本之後刪除了,要用這個github.com/micro/go-plugins/registry/consul,或者換成etcd作為註冊中心

// 初始化go micro

server := web.newservice(

web.name("productservice"), // 當前微服務服務名

web.registry(cr), // 註冊到consul

web.address(":8081"), // 埠

web.metadata(map[string]string), // 元資訊

web.handler(router)) // 路由

_ = server.run()

}把上述**執行起來,再去consul介面檢視,發現productservice服務新增成功

然後把**停掉,再去consul介面檢視,productservice就沒了,非常方便

// 3.使用random隨機獲取其中乙個例項

next := selector.random(services)

svc, err := next()

if err != nil

fmt.println("[測試輸出]:", svc.id, svc.address, svc.metadata)

}然後使用goland先啟動服務註冊中的productservice的微服務,再啟動服務發現中的**。

服務發現將會輸出如下,服務發現成功:

Go Micro 微服務總結

go micro 微服務總結 對外提供restful.api 服務的是通過 api 框架或原生寫法 直接呼叫的是 srv 內部呼叫是客戶端去訪問服務端 直接 rpc 呼叫的時候會繞過 restful.api 但是 micro api 閘道器是必須啟動的,閘道器也可配置 直接呼叫srv http請求 ...

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

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

使用go micro開發微服務詳解

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