About Spring Cloud:
Spring Cloud provides developers with some common patterns for quickly building distributed systems (such as configuration management, service discovery, circuit breakers, intelligent routing, micro-proxies, control buses, one-time tokens, global locks, leading elections, distributed sessions, cluster status). The coordination of distributed systems has led to boiler plate mode, and the use of spring cloud developers can quickly stand up to implement these patterns of services and applications. They can work in any distributed environment, including developers ' own laptops, bare-metal data centers and managed platforms such as Cloud Foundry.
Features of Spring Cloud:
-Distributed/versioned configuration
-Service Registration and discovery
-Routing
-Service-to-service Call
-Load Balancing
-Circuit Breaker
-Distributed Message Delivery
Common components of Spring cloud:
-Service Discovery--netflix Eureka
-Customer-side load Balancing--netflix Ribbon, feign
-Circuit Breaker--netflix Hystrix
-Service Gateway--netflix Zuul
-Distributed configuration--spring Cloud Config
Create a service registry Eureka
Create a MAVEN project in idea with the Pom file as follows:
<?xml version= "1.0" encoding= "UTF-8"?>
<project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion>4.0.0</modelVersion>
<groupId>com.iflytek</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-server</name>
<description>demo Project for Spring boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!--lookup parent from repository to
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>spring milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
Add Eureka annotations to the application startup class on the Spring Boot project, which opens a Eureka registry:
Create a new Eureka Profile APPLICATION.YML, where information such as the address and port number of the Eureka is set. Where, set Eureka.client.registerWithEureka and Fetchregistry to False, is to indicate that it is a Eureka server.
Next, start the project, enter http://localhost:8671 in the browser, and get the following interface, indicating that the Eureka Registry was successfully started.
Create a service Provider
The process is roughly the same as creating a registry, first create a MAVEN project with the Pom file as follows
<?xml version= "1.0" encoding= "UTF-8"?>
<project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion>4.0.0</modelVersion>
<groupId>com.iflytek</groupId>
<artifactId>service-hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>service-hello</name>
<description>demo Project for Spring boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!--lookup parent from repository to
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>spring milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
Add annotation @enableeurekaclient on the application class to indicate that you are a client of a service provider
Similarly, create a new profile APPLICATION.YML for the service provider.
After that, start the project and refresh the Eureka browser page to discover that Service-hello has successfully registered on it.
Finally, enter Http://localhost:8762/hello?name=SpringCloud in the browser address bar, which you will see on your browser: Hello springcloud,i am from port:8762. Indicates that the service was invoked.
Registration and discovery of Spring cloud services