github地址:https://github.com/skh2015java/eurekago
说明
基于spring cloud eureka使用Go语言实现的eureka client。
实现了eureka server提供的restful接口,实现功能包括注册实例,注销实例,自动维持心跳,自动重连,根据应用名称或服务名称查询注册中心的实例列表等。
eureka server对外提供REST API接口,可参考:https://skaygo.blog.csdn.net/article/details/117228768
该eureka client基于spring cloud eureka server提供的REST API接口实现。
通过NewDiscoveryClient方法初始化eureka client即服务发现的功能,其参数如下:
type EurekaClientConfig struct {
Username string //用户名,校验使用,eureka server如果无需校验则可以忽略
Password string //密码,校验使用,eureka server如果无需校验则可以忽略
HeaderContentType string //请求参数的Content-Type值,JSON或XML,缺失默认使用JSON
ServiceUrls []string //eureka服务列表
RegisterWithEureka bool // 是否将自己注册到注册中心,如果为true,则会默认开启心跳
AppName string //应用名称
InstanceId string //实例名称
Port int //对应的端口号
HostName string //主机名
RenewalIntervalInSecs int //续约时间,默认30s
DurationInSecs int //服务时效时间,注册中心超过了该时间段没有收到心跳,则会从服务列表中移除
}
示例
package main
import (
"encoding/json"
"log"
"os"
"os/signal"
"syscall"
"github.com/skh2015java/eurekago"
)
func main() {
conf := eurekago.EurekaClientConfig{
ServiceUrls : []string{"http://localhost:8761/eureka"},
RegisterWithEureka : true,
AppName : "test",
InstanceId : "test-instance-1",
Port : 28000,
HostName : "localhost",
RenewalIntervalInSecs : 30,
DurationInSecs : 90,
}
registered , discovery , err := eurekago.NewDiscoveryClient(&conf)
if err != nil {
log.Fatal(err)
}
if registered {
appInfo ,err := discovery.GetApplication("test")
if err != nil {
log.Fatal(err)
}
appInfoBytes,_ := json.Marshal(appInfo)
log.Println(string(appInfoBytes))
}
exit := make(chan os.Signal,1)
signal.Notify(exit, os.Interrupt, syscall.SIGTERM)
<-exit
}
项目启动前需要启动eureka服务,假如eureka服务的端口为:8761
项目启动后可以看到如下:
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。