基于Golang实现eureka client

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版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/skh2015java/article/details/117229302