使用micro建立微服務

2021-10-05 23:47:53 字數 3667 閱讀 1068

micro是乙個工具集,用來幫助開發者建立和管理微服務。它包括兩部分:

另外go-plugins作為一組外掛程式,在開發過程中也是必要的。通過外掛程式,我們在服務發現、非同步訊息和傳輸協議等方面有了更多的選擇。

go-micro的設計目標是簡化微服務的開發和分布式系統的建立。

在golang 1.14以後需要使用如下命令進行micro的安裝:

在安裝結束後,如下命令可以確認安裝是否正確完成:

micro --version
如果顯示如下資訊,則可確認micro已經正確安裝:

在成功安裝了micro後,我們就可以進行微服務的開發了。

作為開發的第一步,我們可以使用如下命令建立乙個專案:

micro new helloworld --namespace=com.pera --gopath=false
在我們執行完專案建立命令後,micro會給我們生成如下結構的專案檔案:

在成功建立專案後,需要使用如下命令,安裝專案需要的依賴:

在使用micro建立的專案中會有乙個makefile檔案,在此檔案中包括了一些常用的任務,我們可以使用make命令來編譯和執行專案:

make build && ./helloworld-service
在專案成功編譯後,在命令列中會顯示如下資訊:

}從main.go檔案可以清楚的看到,乙個服務的啟動包括了如下三個過程:

建立和初始化服務

// new service

service := micro.

newservice

( micro.

name

("go.micro.service.helloworld"),

micro.

version

("latest"),

)

我們使用newservice(opts …option) service方法來建立乙個服務。這個方法可以接收多個option作為引數,然後返回乙個service例項。

通過option我們可以控制service的行為。

在我們建立完服務例項後,就可以通過如下**對服務進行初始化:

// initialise service

service.

init

()

服務的init()方法可以接收和newservice()同樣的引數。

在這個階段實際上服務的例項已經建立完成,所以我們可以通過如下方式,獲取例項的基本資訊。如獲取伺服器的元資料資訊:

// initialise service

service.

init

(micro.

afterstart

(func()

error

))

註冊業務邏輯處理器
// register handler

helloworld.

registerhelloworldhandler

(service.

server()

,new

(handler.helloworld)

)// register struct as subscriber

micro.

registersubscriber

("go.micro.service.helloworld"

, service.

server()

,new

(subscriber.helloworld)

)

只有在註冊完業務邏輯處理器後,我們的服務才能真正的對外提供業務能力。

通常有兩種典型的操作:

註冊乙個grpc處理器:首先建立乙個helloworld物件,並把這個物件註冊到伺服器上。因為helloworld實現了helloworldhandler介面,所以它可以被傳遞到helloworld.registerhelloworldhandler方法中,否則會產生錯誤。在乙個伺服器上可以註冊多個處理器,用於多種業務能力。

註冊訊息處理器:在此情況下,第乙個引數是訊息的主題,第二個引數是伺服器,第三個引數就是具體處理訊息的物件

執行服務

if err := service.

run(

); err !=

nil

到這裡,服務就真正的執行起來了。

在我們啟動專案後,在命令列中我們可以看到http的監聽埠是62674,我們可以通過這個埠訪問我們的服務了。

在我們啟動了乙個服務後,我們可以通過micro命令列工具監控和操作這些服務。

我們可以執行micro web命令,顯示如下資訊:

從上面的資訊,我們可以看到我們有個服務執行在本地,並監聽8082介面。

這樣我們可以訪問http://localhost:8082/service/go.micro.service.helloworld,顯示如下頁面:

在這個web看板裡,我們可以看到服務的不同資訊:

通過micro web我們可以很容易的檢視服務的相關資訊。這些服務資訊的獲取是依賴於服務發現的。

在預設情況下,micro的服務發現是基於mdns的,所以只要在同乙個區域網內,服務都是可發現和註冊的。

注意

8082是乙個預設值,我們可以通過環境變數或命令列引數修改需要監聽的埠值。

介紹微服務框架Micro筆記

本文將介紹開源的微服務開發套件 micro micro提供了開發與管理微服務的基礎元件。micro主要為使用go語言的開發者提供了一系列庫與工具。其它程式語言使用sidecar通過http協議與micro互動。在開始討論micro的細節之前,我們先來看看為什麼要選擇micro。從過去的經驗與行業情況...

Go 微服務架構Micro相關概念理解

micro是乙個微服務框架 或者說是工具集 提供了各類元件,解決微服務架構中的不同問題,服務監控 服務發現 熔斷機制,負載均衡等等,自己乙個個解決這些問題幾乎不可能,這時候就需要借助go micro這些元件了。提供了微服務的基礎框架。是一種架構.go micro 是micro 底層實現,用於寫服務的...

Jhipster 建立微服務

生成步驟 生成getway 專案 執行命令 yo jhipster 選擇getway 專案 執行getway registry 執行微服務 請求微服務方式 http localhost 9000 airportservice api books 前半部分 http localhost 9000 是g...