Features of Spring Cloud
The great part about Spring Cloud is that it builds the concept of Spring Boot. Spring cloud is built upon some of the common building blocks of Spring framework which are as follows:
Intelligent Routing and Service discovery
When building a microservices on Spring Cloud, there is a primary concern to deal with the first two primary microservices: configuration service and the discovery service.
The above figure represents the set of four microservices. The connection between each service indicates dependency. All services are dependent on each other. The configuration service lies at the top, and the discovery services at the bottom. There are two microservices in-between which are Recommendation Service and Movie Service.
It is the process of "how a microservice communicates with other dependent microservices via service registry or Eureka server." There is a sequence which follows in the service-to-service call.
Load balancing efficiently distributes network traffic to multiple backend servers or server pool. The objective of load balancing is to maximize throughput, minimize response time, increase efficiency, and optimize resource uses. It avoids overload of any single resource. Using multiple components with load balancing may increase reliability and availability through redundancy.
Leadership election allows the application to work with other application via a third-party system. The leadership election is used to provide global state or global ordering without sacrificing availability.
Global locks are used to ensure that no two thread simultaneously access the same resource at the same time. The programmer uses a mechanism to remove such situation, is called a lock. Each thread first cquires the lock, operate on the resources, and release the lock for other thread.
Distributed configuration is to configure every instance of all microservices. "Spring cloud config server" provides client-side support for externalized configuration in a distributed system. With the distributed configurations, we have a central place to manage external properties for applications across all environment.
The distributed messaging system provides the benefit of reliability, scalability, and persistence. The messaging pattern follows the Publish-Subscribe (Pub-Sub) model. In the Pub-Sub model, the sender of the message is called publisher and receiver of the message is called subscribers. Apache Kafka and RabbitMQ are the popular high throughput messaging system.