欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 注册一个的方式,不合理

欢迎关注

Spring Cloud教程 Eureka篇

参考博客