Saturday, June 13, 2020

Client side load balancing using Eureka and Ribbon

Traditional server side load balancer has some drawbacks. It requires an additional hop from client to load balancer and then load balancer to service. Also there is a burden to run and manage load balancer itself. Client side load balancer is the solution to overcome these problems. In this architecture there is an addition inbuilt load balancer component that resides inside client.

In this example we will see how client side load balancer works with eureka discovery server.



1. When service (discovery client) boots up it registers itself with discovery server. Multiple instances register itself with discovery server. Here spring.application.name is use to identify a particular service

2. Client application will also resister itself to discovery client to find instance for load banacer

3. Now load balancer within client can find the service with the help of service name

Please find complete codes from github repository -


Discovery server code -

Ribbon service code -

Ribbon client code -

Sunday, June 7, 2020

Server side load balancing using Eureka and Zuul

Routing is an important part of a microservice architecture. In real time cloud application, service instances are added/removed dynamically based on requirement and availability in such scenario its very important to manage traffic load. In the following example you will see how to use Zuul API Gateway to enable sever side load balancing of your RESTful Web Services.

Request flow -

1. When service boots up it registers itself with discovery server. Multiple instances register itself with discovery server. Here spring.application.name is use to identify a particular service

2. Zuul gateway also registers itself with discovery server. Remember Zuul gateway is also a discovery client

3. When client sends request to zuul gateway for a particular service, Zuul gateway queries discovery server to fetch available healthy instance of the service and then accordingly send request to that service.

Please check previous example on Discovery Server.

Discovery code -

Wednesday, June 3, 2020

Spring cloud service discovery example

Real time cloud application consist of a large number of micro services communicating with each other. Service instances are added/removed dynamically based on requirement and availability. Service discovery is the process of one service dynamically discovering the network location (IP address and port) of another service without hard coding their location.


Steps involved in service discovery

1. Service registers location - when service boots up it registers itself with discovery server

2. Client looks for service location - When client needs to hit a particular service first it goes to discover server for its location

3. Discovery server sends back location - Discovery server sends the active location of the particular service

4. Client request service at location - This is a normal request to the service

5. Service sends response - Service responds to client accordingly

Example -

Started eureka server on default port 8761 and Started 2 instances of Application service on 8081 and 8082




Sunday, May 31, 2020

Spring boot ActiveMQ example

ActiveMQ Setup

Download the latest version of ActiveMQ from below link

https://activemq.apache.org/components/classic/download/



Extract the zip file, go to bin folder and start activemq server using activemq.bat

In my case it is
apache-activemq-5.15.11/bin/win32/activemq.bat

Verify ActiveMQ server is UP and running

http://localhost:8161/


Note - You can change the default port 8161 by updating below file
apache-activemq-5.15.11/conf/jetty.xml

Go to admin page

http://localhost:8161/admin/

Login with default credentials

Username - admin
Password - admin



Note - You can change default credentials by updating below file
apache-activemq-5.15.11/conf/jetty-realm.properties

Here is how our data will flow