简介
eureka即服务发现,包含server注册中心服务和各个client客户端服务,各个client客户端服务注册至注册中心,添加配置后,即可相互发现,就可以通过Ribbon或Feign等进行通信;
创建项目
1.1、创建父工程
1.2、删除src目录,编辑pom
<?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>cc.catface</groupId>
<artifactId>simple-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!--pom-->
<packaging>pom</packaging>
<name>simple-eureka</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!---注意SpringBoot版本不用太新,否则会有兼容问题->
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<!--子模块-->
<modules>
<module>server-center</module>
<module>server-account</module>
<module>server-order</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--SpringCloud版本和SpringBoot需兼容-->
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<!--可以统一子模块的依赖库版本-->
<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>
</project>
2.1、创建eureka server子工程《server-center》
2.2、删除test目录,编辑pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cc.catface</groupId>
<artifactId>simple-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>server-center</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>server-center</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--按图中创建eureka server,会自动添加该依赖,表明当前是eureka服务端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
2.3、编辑application.yml
#当前服务名
spring:
application:
name: server
#当前服务端口
server:
port: 7000
eureka:
client:
#注册到服务,因当前就是服务,所以不需注册
register-with-eureka: false
#获取服务器注册信息
fetch-registry: false
#eureka服务中心注册地址
service-url:
defaultZone: http://localhost:${server.port}/eureka/
2.4、Application声明注解@EnableEurekaServer
3.1、创建eureka client子工程《server-account》
前面步骤和创建eureka server子工程一致,这里选Eureka Discovery Client;
3.2、删除test目录,编辑pom
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cc.catface</groupId>
<artifactId>simple-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>server-account</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>server-account</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--按图中创建eureka client,会自动添加该依赖,表明当前是eureka客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--添加@Controller等支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
3.3、编辑application.yml
server:
port: 7001
#将当前服务注册至eureka注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:7000/eureka/
spring:
application:
name: server-account
3.4、Application声明注解@EnableEurekaClient
3.5、编写一个测试接口
@RestController
public class AccountController {
@GetMapping("account")
public String account() {
return "account--" + new Date().toLocaleString();
}
}
4.1、参考3.1~3.5创建eureka client子工程《server-order》
4.2、编辑application.yml
server:
port: 7002
eureka:
client:
service-url:
defaultZone: http://localhost:7000/eureka/
spring:
application:
name: server-order
4.3、编写一个测试接口
@RestController
public class OrderController {
@GetMapping("order")
public String order() {
return "order--" + new Date().toLocaleString();
}
}
运行项目并查看eureka管理页
1、启动《server-center》,访问:http://localhost:7000/
2、启动《server-account》和《server-order》,访问:http://localhost:7000/;发现了两个eureka client;
总结
至此,通过eureka创建了一个注册中心服务eureka server,两个客户端服务eureka client;并将客户端注册至eureka server,通过管理页,可以看到client服务以注册至注册中心,即client服务间可以相互发现了;接下来使用Ribbon和Feign来进行服务间请求;