#### 注册中心-客户端
- 首先引入pom依赖
```
<!-- Eureka客户端,向注册中心注册服务-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
- 启动类
```
~~~
package com.dg.sc.client;
import brave.sampler.Sampler;
import com.dg.sc.utils.PortUtil;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import java.util.Scanner;
//2.向注册中心注册服务,改变端口可注册多次
@SpringBootApplication
@EnableEurekaClient
//@EnableDiscoveryClient//非Eureka注册中心推荐用这个
public class EurekaClientApplication {
public static void main(String[] args) {
System.out.println("请输入端口号, 推荐 2222 、 2223 、 2224");
Scanner scanner = new Scanner(System.in);
int port = scanner.nextInt();
scanner.close();
if (PortUtil.isUsed(port)) {
System.err.println(port + "端口已被占用");
System.exit(1);
}
new SpringApplicationBuilder(EurekaClientApplication.class).properties("server.port=" + port).run(args);
}
}
~~~
```
- 配置文件
```
~~~
#应用名称
spring.application.name=sc-eureka-client
#Eureka 注册中心服务器主机名称
eureka.instance.hostname=eureka-client
#Eureka 注册中心服务器主机端口
eureka.server.port=1111
#Eureka 注册中心服务器默认连接地址
eureka.client.serviceUrl.defaultZone=http://192.168.0.114:8001/eureka/,http://192.168.0.114:8002/eureka/,http://192.168.0.114:8003/eureka/
~~~
```
- 启动运行,向注册中心查看是否注册到了Eureka
> 这个服务注册到了三个注册中心上了,这样就实现了服务的高可用
![](https://box.kancloud.cn/57e52709d88c2d611efda9cafba9e18a_1096x233.png)
- 测试高可用,ProductController.java
```
package com.dg.sc.client.controller;
import com.dg.sc.client.service.ProductService;
import com.dg.sc.pojo.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class ProductController {
@Autowired
ProductService productService;
@RequestMapping("/products")
public Object products() {
List<Product> ps = productService.listProducts();
return ps;
}
}
```
- postman测试结果
![](https://box.kancloud.cn/6c40306f798a9ffe75f04e663ac9f1d1_646x540.png)
- 现在注册中心都在运行中
![](https://box.kancloud.cn/7a45de58e71b2cd447b444f2f48802e7_754x107.png)
- 手动kill掉其中一个p1注册中心进程,那么只要有一个在,就不会出现死机的情况
![](https://box.kancloud.cn/14c426165beb77bca7419d9d9b809c04_756x96.png)
![](https://box.kancloud.cn/64333682be6be37846514fee416e3e8d_681x378.png)
- 测试运行,接口依然可以运行,实现其高可用
![](https://box.kancloud.cn/f220f7fbacbbe366cb8fed29e8c745f1_664x475.png)