一.新建Eureka服务注册中心(eureka-server)模块
1.导入依赖
注:此处导入的是eureka-server依赖,区别于eureka-client依赖
<!--热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.6.7</version>
</dependency>
<!--eureka server依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>3.1.2</version>
</dependency>
2.编写主启动类
注:需要在主启动类添加@EnableEurekaServer注解以开启eureka服务注册中心
@SpringBootApplication
@EnableEurekaServer//开启eureka服务注册中心
public class EurekaServer_7001 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer_7001.class,args);
}
}
3.配置yml文件
server:
port: 7001
spring:
application:
name: eureka-server
eureka:
instance:
hostname: eureka7001 #设置主机名
client:
register-with-eureka: false #不向自身的eureka服务中心自我注册
fetch-registry: false #不从eureka服务中心获得注册信息 因为自身即注册中心
service-url:
defaultZone: http://eureka7002:7002/eureka/ #向eureka集群中的其他eureka服务中心注册自己
以同样的方式创建另一个eureka-server模块eureka7002,在其配置文件中设置向eureka7001服务中心注册自己
4.修改host文件(C:\Windows\System32\drivers\etc)
在文件中添加127.0.0.1(localhost)的别称
原因:添加别称后,可用别称代替eureka.client.service-url.defaultZone地址中的localhost,进而使得eureka服务注册中心的DS Replicas显示别称(否则只显示localhost,在集群数量大于或等于三时无法直观地区分集群中的个体)
二.修改provider和consumer模块
1.导入依赖
注:此处导入的是eureka-client依赖,区别于eureka-server依赖
<!--eureka client依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.1.2</version>
</dependency>
2.为主启动类添加@EnableEurekaClient注解
3.配置eureka相关的yml配置
Provider:
#Eureka配置
eureka:
client:
service-url:
defaultZone: http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
instance:
instance-id: springcloud-Provider-Dept-8001 #修改实例名称
prefer-ip-address: true # 鼠标悬停于实例上时显示ip地址而非主机名
Consumer:
#eureka配置
eureka:
client:
register-with-eureka: false #服务消费者不向eureka服务中心注册自己
service-url: #获取服务的eureka服务中心地址
defaultZone: http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/
注:
Consumer中若使用ResTemplate:需将url中的微服务主机ip+端口修改为Provider的微服务名(微服务名于Provider中通过spring.application.name设置)
Consumer中若使用Feign:无需赋值@FeignClient注解中的url属性,而是赋值name属性
同一微服务名下可配置多个Provider用于负载均衡(需额外设置负载均衡)
运行效果
启动eureka-server与Provider,访问http://eureka7001:7001
可以看到,DS Replicas中显示了eureka集群中的其他个体
SPRINGCLOUD-PROVIDER-DEPT为微服务名,通过spring.application.name设置;springcloud-Provider-Dept-8001等为实例名,eureka.instance.instance-id设置
eureka7002不再赘述