Simple demo of service registration and discovery using Eureka.
Initial work based on this guide:
https://spring.io/guides/gs/service-registration-and-discovery/
Start the server
cd eureka-server
mvn spring-boot:run
Visit the Eureka dashboard at http://localhost:8761
Note that there are no 'Instances' yet registered
Start up a client
cd eureka-client
mvn spring-boot:run
Visit the client directly at http://localhost:8080/
The /whoami
endpoint will show the client's self-knowledge of its application name and port
{
"springApplicationName":"eureka-client",
"serverPort":"8080"
}
The /instances
endpoint will take up to a minute to update, but should eventually
show all the instances of eureka-client
that have been registered with the
Eureka Discovery Client.
[
{
"host":"hostname",
"port":8080,
"serviceId":"EUREKA-CLIENT",
"uri":"http://hostname:8080",
"secure":false
}
]
You can also visit the Eureka dashoboard again now and see it listed there.
You can see that another client will be registred by doing the following:
cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081
The /whoami
endpoint will show the name foo
and the port 8081
.
In a minute or so, the /instances
endpoint will show the information about
this foo
instance too.
On the Eureka dashboard, two clients will now be registered.
Now try spinning up another instance of eureka-client
by only over-riding the
port parameter:
By default, Eureka uses the hostname as the instance name, so you have to
override the eureka.instance.metadataMap.instanceId
parameter when running
two instances locally for testing. (reference)
cd eureka-client
mvn spring-boot:run -Dserver.port=8082 -Deureka.instance.metadataMap.instanceId=instance2
The /whoami
endpoint for http://localhost:8082
shows what we expect.
In a minute or so, the /instances
endpoint now shows two instances of
eureka-client running.
The Eureka dashboard also shows 2 instances of eureka-client
running.
Start up the zuul proxy application
cd zuul-proxy
mvn spring-boot:run
The proxy automatically maps a route based on the service names it finds in the eureka registry and uses client side load balancing.
Repeated requests to http://localhost:9999/eureka-client/whoami
will show a different
port depending on which instance it calls.