多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#### 注册中心-客户端 - 首先引入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)