Skip to content

Repository files navigation

go-eureka-client

介绍

简体中文 | English

Golang 实现的非官方 Spring Cloud Eureka client.

提示:非全功能,只实现了一些基本和有用的功能。

配置和特性

Spring Cloud Eureka Configurations:

配置支持
availabilityZones×
serviceUrl
useDnsForFetchingServiceUrls×
preferSameZoneEureka×
filterOnlyUpInstances
registryFetchIntervalSeconds
fetchRegistry
registerWithEureka
shouldUnregisterOnShutdown
instanceEnabledOnInit
renewalIntervalInSecs

go-eureka-client 支持并扩展的特性,见以下列表:

特性支持
注册至Eureka
定期获取注册服务列表
获取注册服务列表
定期重连
失败重试
注册重定向×
定期发送心跳

支持的Eureka server Rest api ,参见下面的列表:

操作HTTP动作支持
注册应用实例POST /eureka/v2/apps/appID
注销应用实例DELETE /eureka/v2/apps/appID/instanceID
发送心跳PUT /eureka/v2/apps/appID/instanceID
查询所有应用实例GET /eureka/v2/apps
通过 appID 查询所有实例GET /eureka/v2/apps/appID
通过 appID/instanceID 查询实例GET /eureka/v2/apps/appID/instanceID
通过 instanceID 查询实例GET /eureka/v2/instances/instanceID
从服务中取出实例PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE
将实例移除(移除覆盖)DELETE /eureka/v2/apps/appID/instanceID/status?value=UP (The value=UP is optional, it is used as a suggestion for the fallback status due to removal of the override)
更新元数据PUT /eureka/v2/apps/appID/instanceID/metadata?key=value
通过 vip address 查询所有实例GET /eureka/v2/vips/vipAddress
通过 secure vip address 查询所有实例GET /eureka/v2/svips/svipAddress

安装教程

  1. go get github.com/phpdragon/go-eurake-client
  2. import eureka "github.com/phpdragon/go-eureka-client"

使用说明

// create eureka clienteurekaClient = eureka.NewClientWithLog("config_sample.yaml", logger.GetLogger())
eurekaClient.Run()
//eurekaClient.Shutdown()//httpUrl, _ := eurekaClient.GetRealHttpUrl("http://DEMO/action")//fmt.Println(httpUrl)// http serverhttp.HandleFunc("/actuator/info", func(writerhttp.ResponseWriter, request *http.Request) {
writeJsonResponse(writer, request, eureka.ActuatorStatus(), true)
})
http.HandleFunc("/actuator/health", func(writerhttp.ResponseWriter, request *http.Request) {
writeJsonResponse(writer, request, eureka.ActuatorHealth(), true)
})
http.HandleFunc("/favicon.ico", func(writerhttp.ResponseWriter, request *http.Request) {
_, err := writer.Write(gFaviconIco)
iferr != nil {
logger.Info(err.Error())
writer.WriteHeader(http.StatusInternalServerError)
return
}
})
http.HandleFunc("/", func(writerhttp.ResponseWriter, request *http.Request) {
indexHandler(writer, request, eurekaClient)
})
// start http serveriferr := http.ListenAndServe("127.0.0.1:8080", nil); err != nil {
log.Fatal(err)
}

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

感谢

  1. https://github.com/xuanbo/eureka-client
  2. https://github.com/HikoQiu/go-eureka-client

用例

  1. gateway_proxy(转发代理)

码云特技

  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. 码云官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解码云上的优秀开源项目
  4. GVP 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
  5. 码云官方提供的使用手册 https://gitee.com/help
  6. 码云封面人物是一档用来展示码云会员风采的栏目 https://gitee.com/gitee-stars/

About

Non-offical implementation of Spring Cloud Eureka client.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages