micro擁有完整的微服務生態,使用它構建一整套完整的微服務架構。下圖是做者在博客中給出的使用micro的微服務架構圖。 git
$ go get -u github.com/micro/micro
$ micro api --help
NAME:
micro api - Run the api gateway
USAGE:
micro api [command options] [arguments...]
OPTIONS:
--address Set the api address e.g 0.0.0.0:8080 [$MICRO_API_ADDRESS]
--handler Specify the request handler to be used for mapping HTTP requests to services; {api, event, http, rpc} [$MICRO_API_HANDLER]
--namespace Set the namespace used by the API e.g. com.example.api [$MICRO_API_NAMESPACE]
--resolver Set the hostname resolver used by the API {host, path, grpc} [$MICRO_API_RESOLVER]
複製代碼
micro工具是使用go-micro構建,全部一樣具備服務發現等功能。如上圖,micro api會把外部的http請求轉發的內部Order API服務等,API服務內部實現會調用更底層的Service。通常咱們將這裏的API服務(Order API ...)稱爲聚合層服務或者業務層服務,更加底層的Serivce稱爲支撐服務或者基礎服務。github
能夠看出從邏輯上大體分爲三層,網關層,聚合服務層,基礎服務層,如圖: golang
全部的服務均可以多實例部署,go-micro已經幫咱們處理好服務發現,RPC調用等問題,開發起來很是方便。固然咱們還須要鑑權,熔斷,鏈路追蹤,監控等功能,才能真正的能夠投入使用。micro框架的插件機制,能夠很是方便的實現這些功能。web
通常鑑權,熔斷等功能都須要內置在API網關中,micro自帶的網關並無提供這些功能,可是咱們能夠本身寫插件或者使用框架自帶的插件來實現。計劃爲micro API網關增長以下功能:後端
聚合層服務主要是業務層邏輯,具體實現就是對外的HTTP API供前端調用。雖然micro API網關提供的將HTTP轉換成內部RPC調用功能,可是寫起來總以爲變扭。幸運的是micro一樣提供gin等經常使用golang web 框架的集成方法,此處有做者的例子https://github.com/micro/examples/tree/master/greeter/api。使用這種方式,網關在工做時就不須要將外部HTTP請求轉換成RPC方法,因此須要在啓動mciro API網關增長一個參數:micro api --handler=http ,handler默認是rpc模式。api