All Projects → HikoQiu → go-eureka-client

HikoQiu / go-eureka-client

Licence: Apache-2.0 license
Non-offical implementation of Spring Cloud Eureka client. Eureka server api, refer to: https://github.com/Netflix/eureka/wiki/Eureka-REST-operations

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to go-eureka-client

sample-spring-cloud-gateway
sample spring cloud application with embedded api gateway on spring cloud gateway with or without service discovery with eureka
Stars: ✭ 25 (+4.17%)
Mutual labels:  spring-cloud, eureka-client
Cloud-Native-App-Spring-Boot
A Cloud Native App with Spring Coud Security with KeyCloak Auth Server, API Gateway Server, Naming Server, Config Server and Distributed Tracing and ELK Stack hosted in K8s
Stars: ✭ 19 (-20.83%)
Mutual labels:  spring-cloud, eureka-client
sample-axon-kafka
Sample CQRS and event sourced application developed on top of axon framework.(Kafka is used for distributing the events)
Stars: ✭ 31 (+29.17%)
Mutual labels:  spring-cloud, eureka-client
springCloudShop
🚀 用spring-cloud 基于tcc做的简单下单流程
Stars: ✭ 54 (+125%)
Mutual labels:  spring-cloud
wemirr-platform
最优秀、最简单、最漂亮的开源SAAS、多租户、SpringCloud、Mysql、Mybatis-Plus、Spring Cloud Alibaba 、Oauth2.0 、有BUG第一时间修复
Stars: ✭ 39 (+62.5%)
Mutual labels:  spring-cloud
spring-microservices
Example of a microservice architecture using Spring Cloud
Stars: ✭ 76 (+216.67%)
Mutual labels:  spring-cloud
springboot2-swagger
Swagger integration with Spring Boot 2.0.1.BUILD-SNAPSHOT and Spring Cloud Finchley.BUILD-SNAPSHOT
Stars: ✭ 17 (-29.17%)
Mutual labels:  spring-cloud
spring-petclinic-cloud
Fork of the Spring Cloud Microservices project packaged to be deployed on several Cloud platforms: Kubernetes and Cloud Foundry
Stars: ✭ 106 (+341.67%)
Mutual labels:  spring-cloud
spring-projects
Some spring sample projects
Stars: ✭ 24 (+0%)
Mutual labels:  spring-cloud
OnlineStore
REST api for an online store using microservices architecture.
Stars: ✭ 27 (+12.5%)
Mutual labels:  spring-cloud
mmall-kay-Java
A simple project to learn different architecture (Monolithic on SpringBoot, Microservices on SpringCloud, K8S etc.). 一个简单的学习项目(Mall 商城), 用来学习单体架构,微服务架构,K8S等
Stars: ✭ 60 (+150%)
Mutual labels:  spring-cloud
redislimiter-spring-boot
an excellent API limiting framework for Spring boot/cloud application, especially for microservice project
Stars: ✭ 64 (+166.67%)
Mutual labels:  spring-cloud
sample-spring-chaosmonkey
sample applications illustrating usage of codecentric's chaos monkey library for microservices created using spring boot and spring cloud
Stars: ✭ 19 (-20.83%)
Mutual labels:  spring-cloud
easemesh
A service mesh implementation for connecting, control, and observe services in spring-cloud.
Stars: ✭ 454 (+1791.67%)
Mutual labels:  spring-cloud
generator-deepexi-spring-cloud
deepexi java scaffold(spring cloud) generator
Stars: ✭ 30 (+25%)
Mutual labels:  spring-cloud
spring-cloud-static
Static resources for the Spring Cloud website
Stars: ✭ 26 (+8.33%)
Mutual labels:  spring-cloud
spring-boot-microservices-entry
Entry level distributed application built with Spring Cloud
Stars: ✭ 13 (-45.83%)
Mutual labels:  spring-cloud
springboot-microservice-with-spring-cloud-netflix
msa backend service example with springboot REST API
Stars: ✭ 36 (+50%)
Mutual labels:  eureka-client
if1007
Desenvolvimento de Aplicações com Arquitetura Baseada em Microservices
Stars: ✭ 78 (+225%)
Mutual labels:  spring-cloud
DAFramework
云南数聚基础框架
Stars: ✭ 25 (+4.17%)
Mutual labels:  spring-cloud

go-eureka-client

Non-offical implementation of Spring Cloud Eureka client.

Tips: Non-full-features, only some basic and useful features implemented.

Spring Cloud Eureka Configurations

FEATURES Support
AvailabilityZones
ServiceUrl
UseDnsForFetchingServiceUrls
RegisterWithEureka
PreferSameZoneEureka
FilterOnlyUpInstances
RegistryFetchIntervalSeconds
FetchRegistry
EurekaServerPort
EurekaServerUrlContexts

go-eureka-client extended features

FEATURES Support
AutoUpdateDnsServiceUrls
AutoUpdateDnsServiceUrlsIntervals
HeartbeatIntervals

Samples

Sample 1

Get Eureka server urls from configuration, e.g:

    config := eureka.GetDefaultEurekaClientConfig()
    config.UseDnsForFetchingServiceUrls = false
    config.Region = "region-cn-hd-1"
    config.AvailabilityZones = map[string]string{
        "region-cn-hd-1": "zone-cn-hz-1",
    }
    config.ServiceUrl = map[string]string{
        "zone-cn-hz-1": "http://192.168.20.236:9001/eureka,http://192.168.20.237:9001/eureka",
    }

    // custom logger
    //eureka.SetLogger(func(level int, format string, a ...interface{}) {
    //    if level == eureka.LevelError {
    //        fmt.Println("[custom logger error] " + format, a)
    //    }else {
    //        fmt.Println("[custom logger debug] " + format, a)
    //    }
    //})

    // run eureka client async
    eureka.DefaultClient.Config(config).
        Register("APP_ID_CLIENT_FROM_CONFIG", 9000).
        Run()

    select {}

Full sample code, refer to: samples/client_from_config.go

Sample 2

Get Eureka server urls from dns(TXT Record) lookup, e.g:

    config := eureka.GetDefaultEurekaClientConfig()
    config.UseDnsForFetchingServiceUrls = true
    config.Region = "region-cn-hd-1"
    config.AvailabilityZones = map[string]string{
        "region-cn-hd-1": "zone-cn-hz-1",
    }
    config.EurekaServerDNSName = "dev.ms-registry.xf.io"
    config.EurekaServerUrlContext = "eureka"
    config.EurekaServerPort = "9001"

    // custom logger
    //eureka.SetLogger(func(level int, format string, a ...interface{}) {
    //    if level == eureka.LevelError {
    //        fmt.Println("[custom logger error] " + format, a)
    //    }else {
    //        fmt.Println("[custom logger debug] " + format, a)
    //    }
    //})

    // run eureka client async
    eureka.DefaultClient.Config(config).
        Register("APP_ID_CLIENT_FROM_DNS", 9000).
        Run()

    select {}

Full sample code, refer to: samples/client_from_dns.go

Sample 3

Eureka Server REST api util, e.g:

    config := eureka.GetDefaultEurekaClientConfig()
    config.UseDnsForFetchingServiceUrls = false
    config.Region = "region-cn-hd-1"
    config.AvailabilityZones = map[string]string{
        "region-cn-hd-1": "zone-cn-hz-1",
    }
    config.ServiceUrl = map[string]string{
        "zone-cn-hz-1": "http://192.168.20.236:9001/eureka,http://192.168.20.237:9001/eureka",
    }

    c := eureka.DefaultClient.Config(config)
    api, err := c.Api()
    if err != nil {
        log.Fatalln("Failed to pick EurekaServerApi instance, err=", err.Error())
    }
    instances, err := api.QueryAllInstances()
    if err != nil {
        log.Fatalln("Failed to query all instances, err=", err.Error())
    }

    log.Println("all instances: ", instances)

Full sample code, refer to: samples/eureka_api_rest.go

Eureka server Rest api supported, refer to list below:

Operation HTTP action Support
Register new application instance POST /eureka/v2/apps/appID
De-register application instance DELETE /eureka/v2/apps/appID/instanceID
Send application instance heartbeat PUT /eureka/v2/apps/appID/instanceID
Query for all instances GET /eureka/v2/apps
Query for all appID instances GET /eureka/v2/apps/appID
Query for a specific appID/instanceID GET /eureka/v2/apps/appID/instanceID
Query for a specific instanceID GET /eureka/v2/instances/instanceID
Take instance out of service PUT /eureka/v2/apps/appID/instanceID/status?value=OUT_OF_SERVICE
Move instance back into service (remove override) 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)
Update metadata PUT /eureka/v2/apps/appID/instanceID/metadata?key=value
Query for all instances under a particular vip address GET /eureka/v2/vips/vipAddress ×
Query for all instances under a particular secure vip address GET /eureka/v2/svips/svipAddress ×

Registry screenshots

Registry screenshots

Client heartbeat

Client Heartbeat

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].