提供Go微服務客戶端註冊到Eureka中心。點擊:github地址,歡迎各位多多star!java
(已經過測試驗證,用於正式生產部署)git
goeureka主要是經過REST請求來與server進行通訊。github
其中Java版本的核心實現請參看:com.netflix.discovery.DiscoveryClient
web
實現過程docker
註冊eureka服務端的配置信息以下:app
{ "instance": { "instanceId" : "${ipAddress}:${appName}:${port}", "hostName":"${ipAddress}", "app":"${appName}", "ipAddr":"${ipAddress}", "vipAddress":"${appName}", "overriddenstatus": "UNKNOWN", "status":"UP", "port": { "$":${port}, "@enabled": true }, "securePort": { "$":${securePort}, "@enabled": false }, "homePageUrl" : "http://${ipAddress}:${port}/", "statusPageUrl": "http://${ipAddress}:${port}/info", "healthCheckUrl": "http://${ipAddress}:${port}/health", "dataCenterInfo" : { "@class":"com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo", "name": "MyOwn" }, "metadata": { "management.port" : "${port}" } } }
本項目封裝了Eureka rest操做,實現瞭如下功能:框架
調用前三個特性register 、heartbeat 和deregister基本上能夠實現微服務註冊到Eureka中心,其中appid實例是客戶端的名稱。ide
工具包的導入方法:微服務
import "github.com/SimonWang00/goeureka"
工具
註冊代碼以下:
goeureka.RegisterClient("http://127.0.0.1:8761","59.172.3.26","my-goserver", "8000", "43")
Notes: RegisterClient 爲web server對應的端口號,涉及到異地機房聯調採用docker部署的話,須要映射公網IP,如59.172.3.26
或者
goeureka.RegisterClient("http://127.0.0.1:8761","","my-goserver", "8000", "43")
Notes:第二項參數爲空表明默認使用本機IP地址
在http中使用:
import ( "fmt" "github.com/SimonWang00/goeureka" "net/http" ) func main() { goeureka.RegisterClient("http://127.0.0.1:8761","","myapp", "8000", "43") http.HandleFunc("/hello", func(responseWriter http.ResponseWriter, request *http.Request) { resp := "hello goeureka!" _, _ = responseWriter.Write([]byte(resp)) }) // start server if err := http.ListenAndServe("127.0.0.1:8000", nil); err != nil { fmt.Println(err) } }
在gin框架中使用:
import ( "github.com/SimonWang00/goeureka" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("hello", func(c *gin.Context) { c.String(200, "hello goeureka") }) goeureka.RegisterClient("http://127.0.0.1:8761","","myapp", "8000", "43") r.Run("127.0.0.1:8000") }
java端測試代碼,內含有gateway-eureka.jar