Golang註冊Eureka的工具包goeureka發佈

1.簡介

提供Go微服務客戶端註冊到Eureka中心。點擊:github地址,歡迎各位多多star!java

(已經過測試驗證,用於正式生產部署)git

2.原理

goeureka主要是經過REST請求來與server進行通訊。github

其中Java版本的核心實現請參看:com.netflix.discovery.DiscoveryClientweb

實現過程
Golang註冊Eureka的工具包goeureka發佈docker

3.註冊信息

註冊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}"
    }
  }
}

4.功能特性

本項目封裝了Eureka rest操做,實現瞭如下功能:框架

  1. register
  2. sendheartbeat
  3. deregister
  4. instances

調用前三個特性register 、heartbeat 和deregister基本上能夠實現微服務註冊到Eureka中心,其中appid實例是客戶端的名稱。ide

5.使用方法

工具包的導入方法:微服務

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地址

6.接入示例

在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")
}

7.測試

java端測試代碼,內含有gateway-eureka.jar

eurekaconsumer

相關文章
相關標籤/搜索