springCloud - Eureka

2021-04-20 18:29

阅读:365

标签:password   fetch   步骤   之间   服务治理   driver   lse   inter   注册   

1.SpringCloud简介

SpringCloud集成了很多组件,包括:

  • Eureka: 服务治理,服务注册/发现
  • Zuul: 网关组件,提供智能路由,访问过滤功能 (集成了ribbon、hystrix)
  • Ribbon:客户端负载均衡的服务调用组件(客户端负载)
  • Fegin: 服务之间的调用组件 (集成了ribbon、hystrix)
  • Hystrix: 容错管理组件

2.Eureka注册中心

技术图片

  • Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
  • 提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
  • 消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
  • 心跳(续约):提供者定期通过http方式向Eureka刷新自己的状态

2.1.搭建注册中心EurekaServer

导入依赖:

 org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASEUTF-8UTF-81.8Finchley.RC2org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        org.springframework.boot
                spring-boot-maven-plugin
            

编写application.yml配置文件

server:
  port: 8081 # 端口
spring:
  application:
    name: eureka-server # 应用名称,会在Eureka中显示
eureka:
  client:
    service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。
      defaultZone: http://127.0.0.1:${server.port}/eureka

在引导类上加注解:

@SpringBootApplication
@EnableEurekaServer // 声明当前springboot应用是一个eureka服务中心

public class ItcastEurekaApplication {

public static void main(String[] args) {
    SpringApplication.run(ItcastEurekaApplication.class, args);
   }
}

直接启动,访问http:localhost:8081即可访问到

2.2.将其他服务注册到Eureka中

步骤:service-provide

  1. 在pom.xml中,添加springcloud的相关依赖。
  2. 在application.yml中,添加springcloud的相关配置。
  3. 在引导类上添加注解,把服务注入到eureka注册中心。

参照service-eureka的pom.xml中加入Eureka的客户端,载导入其他与数据库相关的依赖等

 

org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

application.yml:

erver:
  port: 8082
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/heima
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver
  application:
    name: service-provider # 应用名称,注册到eureka后的服务名称
mybatis:
  type-aliases-package: cn.itcast.service.pojo
eureka:
  client:
    service-url: # EurekaServer地址
      defaultZone: http://127.0.0.1:8081/eureka

在引导类上加上注解

@SpringBootApplication
@EnableDiscoveryClient
public class ItcastServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ItcastServiceApplication.class, args);
    }
}

启动后在注册中心中就可以看到此服务,可以再写一个服务的消费方的服务,也注册到Eureka中,通过feign来远程调用;

3.服务提供方

服务续约

在注册服务完成以后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer:“我还活着”。这个我们称为服务的续约(renew);

eureka:
  instance:
    lease-expiration-duration-in-seconds: 10 # 10秒即过期
    lease-renewal-interval-in-seconds: 5 # 5秒一次心跳
  • lease-expiration-duration-in-seconds: 服务续约(renew)的间隔,默认为30秒
  • lease-expiration-duration-in-seconds:服务失效时间,默认值90秒

默认情况下每个30秒服务会向注册中心发送一次心跳,证明自己还活着。如果超过90秒没有发送心跳,则会在服务列表里移除

4.服务消费方

eureka:
  client:
    service-url:
    registry-fetch-interval-seconds: 5  #拉取服务的间隔时间

5.失效剔除和自我保护

失效剔除

有时服务挂掉过着关掉,Eureka Server会将这些服务从列表中剔除:

自我保护

在当某些服务挂掉之后,Eureka会将这写服务保护一段时间,不被直接剔除

eureka:
  server:
    enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)

springCloud - Eureka

标签:password   fetch   步骤   之间   服务治理   driver   lse   inter   注册   

原文地址:https://www.cnblogs.com/cqyp/p/13284109.html


评论


亲,登录后才可以留言!