Spring Cloud教程 Eureka篇
程序员文章站
2022-06-12 15:22:14
...
介绍
Eureka在Spring Cloud体系中起服务注册和发现的作用,即订单服务将服务地址注册到注册中心。当产品服务想调用订单服务的时候先从注册中心拿到订单服务的地址列表,然后根据一定的负载均衡策略调用其中一个订单服务地址
Eureka
1.加入如下依赖
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2.写好配置文件
application.yaml
server:
port: 7001
eureka:
instance: #eureka实例定义
hostname: localhost # 定义eureka所在的主机名称
client:
fetch-registry: false # 不需要从eureka拉取注册信息,因为自己就是注册中心,没啥用
register-with-eureka: false # 不需要注册到eureka
server:
eviction-interval-timer-in-ms: 1000 #设置清洗的间隔时间,时间使用的是毫秒单位(默认是60s)
enable-self-preservation: false # 设置false表示关闭保护模式,(保护模式:有一段时间不可用还保留)
3.在启动类上加注解@EnableEurekaServer,或任意@Configuration注解修饰的类
4.访问localhost:7001即可看到注册中心的页面
注册服务到Eureka
1.加入如下依赖
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.配置注册中心的地址
application.xml
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
instance:
instance-id: cloud-provider-product #设置页面的Status显示为这个名字
prefer-ip-address: true #显示ip地址,而不是主机地址
lease-renewal-interval-in-seconds: 2 # 设置心跳的时间间隔(默认是30秒),用不着太频繁
lease-expiration-duration-in-seconds: 5 # 如果超过了5秒,就认为服务挂了(默认是90秒)
spring:
application:
name: cloud-provider-product #这个是设置服务名,不然页面Application显示UNKNOWN
3.在启动类上加注解@EnableEurekaClient
服务发现
1.启动类加注解@EnableDiscoveryClient
2.注入DiscoveryClient 类即可
@Autowired
private DiscoveryClient client;
对Eureka注册进行权限校验
1.加入依赖
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.新增配置类
@Configuration
@EnableWebSecurity
public class EurekaSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
super.configure(http);
}
}
3.配置权限
application.yaml
spring:
security:
user:
name: admin
password: admin
4.改变服务注册方的注册方式
application.yaml
eureka:
client:
service-url:
defaultZone: http://admin:aaa@qq.com:7001/eureka # 现在的方式
#defaultZone: http://localhost:7001/eureka 原先的方式
注册中心高可用
在host文件中配置如下信息
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3
eureka1的服务改为如下,其他的2个更改对应的部分即可
eureka:
instance: #eureka实例定义
hostname: eureka1 # 定义eureka所在的主机名称
client:
fetch-registry: false # 不需要从eureka拉取注册信息
register-with-eureka: false # 不需要注册到eureka
service-url:
defaultZone: http://admin:aaa@qq.com:7001/eureka,http://admin:aaa@qq.com:7002/eureka,http://admin:aaa@qq.com:7003/eureka
此时访问注册中心页面
DS Replicas就会显示其余的2个注册中心
注册的时候地址只写一个,另外2个会复制过去,但也是不合适的。如果注册的这个地址挂了,还是访问不了,所以注册地址直接写3个
eureka:
client:
service-url:
defaultZone: http://admin:aaa@qq.com:7001/eureka,http://admin:aaa@qq.com:7002/eureka,http://admin:aaa@qq.com:7003/eureka
#defaultZone: http://admin:aaa@qq.com:7001/eureka 注册一个的方式,不合理
欢迎关注
参考博客
下一篇: 详解Python中的循环语句的用法
推荐阅读
-
spring cloud Eureka 配置信息
-
详解Spring Cloud Eureka多网卡配置总结
-
跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用
-
Spring Cloud第六篇 | Hystrix仪表盘监控Hystrix Dashboard
-
跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
-
Spring Cloud第五篇 | 服务熔断Hystrix
-
spring cloud eureka服务搭建(生产者消费者)
-
Spring Cloud Eureka 常用配置及说明
-
Spring-Cloud-Netflix-Eureka注册中心
-
spring Boot+spring Cloud实现微服务详细教程第二篇