[JavaBrains] [Microservices POC]
https://www.youtube.com/watch?v=y8IQb4ofjDo&list=PLqq-6Pq4lTTZSKAFG6aCDVDP86Qx4lNas
#### Spring Boot Microservices Level 1: Communication and Discovery
https://www.youtube.com/watch?v=y8IQb4ofjDo&list=PLqq-6Pq4lTTZSKAFG6aCDVDP86Qx4lNas
#### Spring Boot Microservices Level 2: Fault Tolerance and Resilience
https://www.youtube.com/watch?v=o8RO38KbWvA&list=PLqq-6Pq4lTTbXZY_elyGv7IkKrfkSrX5e
#### Spring Boot Microservices Level 3: Microservice configuration
https://www.youtube.com/watch?v=upoIwn4rWCo&list=PLqq-6Pq4lTTaoaVoQVfRJPqvNTCjcTvJB
Why , We should not hard-code URLS of Services
- Code Change for URL modification
- Dynamic Cloud URL
- Load Balancer URL - Multi Instance URL
- Multiple Environment Server URLS
When Services Call Each other, How does a Service1 knows about Service2 URL ?
- Service Discovery - Design Pattern
- Eureka - Technology used for implementing "Service Discovery"
Client Side Service Discovery vs Server Side
Client Side Service Discovery
Client -> Service Discovery Server
Looks Up IP address of Service1
<- Provides IP Address to Client
Client -> Call to Service 1
Client <- Gets a response from Server1
Server-Side Service Discovery
Client Calls Service Discovery asks it to Send "Hi" on its behalf to Service1
Service1 Sends "Hello" response to Discovery Server and its forwarded to Client
Other Technologies which have come from Netflix OSS or developed by Spring Boot
- Hysterix - Fault Tolerance Library
- Zuul - Gateway
- Ribbon
- Feign
POM Management
spring-cloud-starter-netflix-eureka-server
spring-cloud-starter-netflix-eureka-server
<properties>
<java.version>11</java.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- @LoadBalanced
- @EnableEurekaClient
- @EnableEurekaServer
EurekaClient sends heartbeat to EurekaServer
So, If A Service Goes Down, After Maybe about 30 Seconds,
The Entry gets removed from Dashboard of Eureka Server
#### Spring Boot Microservices Level 1: Communication and Discovery
https://www.youtube.com/watch?v=y8IQb4ofjDo&list=PLqq-6Pq4lTTZSKAFG6aCDVDP86Qx4lNas
#### Spring Boot Microservices Level 2: Fault Tolerance and Resilience
https://www.youtube.com/watch?v=o8RO38KbWvA&list=PLqq-6Pq4lTTbXZY_elyGv7IkKrfkSrX5e
#### Spring Boot Microservices Level 3: Microservice configuration
https://www.youtube.com/watch?v=upoIwn4rWCo&list=PLqq-6Pq4lTTaoaVoQVfRJPqvNTCjcTvJB
Adding Spring Cloud To An Existing Spring Boot Application
If you an existing Spring Boot app you want to add Spring Cloud to that app, the first step is to determine the version of Spring Cloud you should use. The version you use in your app will depend on the version of Spring Boot you are using.
The table below outlines which version of Spring Cloud maps to which version of Spring Boot.