eureka 服务注册(客户端 服务端)简单部署

# eureka 服务注册 demo ![image.png](https://cos.easydoc.net/31477061/files/kmn13f7p.png) ## 1.导入pom ``` <!-- spring-cloud-starter-netflix-eureka-server 服务端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>3.0.2</version> </dependency> <!-- spring-cloud-starter-netflix-eureka-client 客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>3.0.2</version> </dependency> ``` ## 2.添加注解启动配置 ![image.png](https://cos.easydoc.net/31477061/files/kmlm5fnj.png) ![image.png](https://cos.easydoc.net/31477061/files/kmloo465.png) ## 3.添加yml配置 ### 服务端 ``` yml spring: application: name: eureka-peer #访问端口号↓ server: port: 8080 eureka: instance: hostname: dev instance-id: dev #定义客户端的参数 client: #fetch-registry 是否拉取信息↓ 服务端不需要拉取 ---- register-with-eureka 是否注册到服务中心,服务端不需要↓ fetch-registry: false register-with-eureka: false # 默认访问地址 service-url: #可以再后面添加多个地址,服务端添加,多个服务端会进行对等协议(数据的交换,高可用,如一个地址连接上了客户端,会发送给其他注册中心地址进行注册。)。 defaultZone: http://localhost:8080/eureka/ #定义服务端的参数 server: # 服务之间同步数据 为空时的等待时间 wait-time-in-ms-when-sync-empty: 0 # 自我保护机制 enable-self-preservation: true #节点更新时间间隔ms peer-eureka-nodes-update-interval-ms: 100000 ``` --- ### 客户端 ``` server: port: 8002 spring: application: name: helloserver eureka: client: service-url: #可以再后面添加多个地址,客户端添加,会依次进行注册,直到成功(注册第一个服务,成功则完成。失败注册第二个。只注册成功一次就不再访问其他地址。) defaultZone: http://127.0.0.1:8080/eureka/ //再main方法下面添加 @Autowired private RestTemplate restTemplate; @GetMapping("index") public String ww(){ return restTemplate.getForObject("http://HELLOSERVER/", String.class, ""); } @GetMapping("") public String www(){ return "2号客户端"; } @Bean @LoadBalanced //必须加上去才可以, ribbon的内部方法 帮我们调用服务中心 public RestTemplate template() { return new RestTemplate(); } ``` ### 打开页面 多次访问客户端的 http://localhost:8002/index 需要2个客户端 ![image.png](https://cos.easydoc.net/31477061/files/kmloehb1.png) --- ## 修改轮询策略 在调用接口的客户端修改 ``` <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-ribbon --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> <version>2.2.7.RELEASE</version> </dependency> ``` ![image.png](https://cos.easydoc.net/31477061/files/kmn751ng.png) ![image.png](https://cos.easydoc.net/31477061/files/kmn7rwki.png) ## 用于不停机更新项目,重试机制(注册中心上的多个实例,如果访问不通过,则按照轮询策略,继续调用下一个实例)只需要导入pom即可 ``` <!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry --> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>1.3.1</version> </dependency> ``` ## 其他代码参考 服务端启动多个 及多个yml ``` spring: profiles: active: dev2 --- spring: application: name: eureka-peer profiles: dev server: port: 8080 eureka: instance: hostname: dev instance-id: dev client: fetch-registry: false register-with-eureka: false service-url: defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/ server: wait-time-in-ms-when-sync-empty: 0 enable-self-preservation: true peer-eureka-nodes-update-interval-ms: 10000 --- spring: profiles: dev1 application: name: eureka-peer2 server: port: 8081 eureka: instance: hostname: dev1 instance-id: dev1 client: fetch-registry: false register-with-eureka: false service-url: defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/ server: wait-time-in-ms-when-sync-empty: 0 enable-self-preservation: true peer-eureka-nodes-update-interval-ms: 10000 --- spring: profiles: dev2 application: name: eureka-peer3 server: port: 8082 eureka: instance: hostname: dev2 instance-id: dev2 client: fetch-registry: false register-with-eureka: false service-url: defaultZone: http://localhost:8080/eureka/,http://localhost:8081/eureka/,http://localhost:8082/eureka/ server: wait-time-in-ms-when-sync-empty: 0 enable-self-preservation: true peer-eureka-nodes-update-interval-ms: 10000 --- ```