在使用Eureka Client时要保证Server是启动的
Eureka创建概述
1.idea-->spring --->cloud discovery--->Eureka Discovery,删除多余文件,保证和server 的spring cloud 和 spring boot版本一致
2.在全局文件中配置注册中心的地址和别名(根据需要),以及应用的名字
3.在启动类上添加@EnableDiscoveryClient启动
在Server端可以关闭虚拟注册列表,在Server 上添加server:enable-self-preservation:false
启动类:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class SpringCloudClientApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudClientApplication.class, args); } }
pom.xml注意版本号
org.springframework.boot spring-boot-starter-parent 2.0.0.M3 UTF-8 UTF-8 1.8 Finchley.M2 0.0.1-SNAPSHOT
application.yml
eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # instance: # hostname: clientName spring: application: name: client logging: level: debug
------Eureka实现高可用-----
在idea 中的Eureka Server端右上角的Edit Configurationsh列表中复制一份,分别命名为EurekaApplication1 和
EurekaApplication2 ,这里用端口号作为区分
在VM options:中分别添加-Dserver.port=8761和-Dserver.port=8762
------------Eureka Server相互注册---------
在第一个Server端的defaultZone中填入第二个Server端的地址,在第二个中添加第一个Server端的地址
此时注意,当client注册在第一个Server端时,第二个Server端会被自动注册,简称同步机制
现在如果server1挂掉了,那么怎么保证client依然能访问到server呢?
解决的办法就是client同时注册到俩个server上,只要在client中以逗号隔开配置两个defaltZone地址
那么如果项目更大了,server更多了怎么办,此时server间依然按照俩俩注册,client端配置三个地址
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
如下图:
----------Eureka总结------------
1.@EnableEurekaServer @EnableEurekaClient
2.心跳检测,健康检查,负载均衡等功能
3.Eureka的高可用,生产上建议至少俩台以上
4.分布式系统中,服务注册中心是最重要的基础部分