一 创建“服务注册中心”
1 创建eureka-server,作为服务器
创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 服务中心依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<!-- 依赖版本管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 配置文件
spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
## 不让它自己注册自己玩
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
# 设为false,关闭自我保护
eureka.server.enable-self-preservation=false
# 清理间隔(单位毫秒,默认是60*1000)
eureka.server.eviction-interval-timer-in-ms=4000
默认情况下,服务器会将自己注册成服务,这里我们关闭了。
3 启动类入口
只需要增加 注解 @EnableEurekaServer ,就可以了
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
// SpringApplication.run(EurekaServerApplication.class, args);
//高版本的不行,要用其他的方法启动
new SpringApplicationBuilder(EurekaServerApplication.class).web(true).run(args);
}
}
4 启动查看
启动后访问地址
这样我们的服务器就好了。
二 创建两个服务客户端
我们这两个服务,作为集群,注册到 上面的服务器,模拟为购物的订单处理服务,让 其他放调用
1 创建 eureka-client,作为提供服务方
创建一个基本的Spring Boot应用。命名为eureka-client,并引入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<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>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 配置文件
spring.application.name=eureka-client
server.port=2001
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
- eureka-client 是注册到服务方的名称,供识别和其他方调用
- 2001 是自己端口
- http://localhost:1001/eureka/: 是服务方的地址,我们将提供的服务注册到这里
3启动类配置
只需要增加注解 @EnableDiscoveryClient,就可以了
@EnableDiscoveryClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
// new SpringApplicationBuilder(EurekaClientApplication.class).web(true).run(args);
}
}
这样,在启动的时候,就把提供的接口服务到了服务器,DiscoveryClient接口在eureka的实现中获取到的所有服务清单。由于Spring Cloud在服务发现这一层做了非常好的抽象,所以,对于上面的程序,我们可以无缝的从eureka的服务治理体系切换到consul的服务治理体系中区。
4 定义一个接口,库存处理
/**
* 提供库存服务
*/
@RestController
public class RepoController {
@Autowired
DiscoveryClient discoveryClient;
@GetMapping("/productRepo")
public String productRepo() {
String services = "Services: " + discoveryClient.getServices(); // 调用本服务的消费者
System.out.println("调用本服务的消费方:"+services);
System.out.println("==================> 的更新库存信息接口被调用了");
String result = "success服务1";
return result;
}
}
这样就好了,
复制上面的项目,改名为 eureka-client-two,只需修改一个端口为: 2002就可以了
这样我们就要两个 服务了,端口分别是 2001和2001,可以模拟集群。
再次查看服务方,我们现这两个服务已经注册好了。