Spring Cloud全解析:注册中心之初识Eureka

Eureka简介

关于Eureka

Eureka是springCloud在一开始的时候推荐使用的注册中心,是Netflix开源的服务发现组件

Eureka包含两个组件:Eureka Server和Eureka Client

Eureka Server提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到

EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。Eureka Client会缓存服务注册表中的信息,这种方式可以使得微服务不需要每次请求都查询Eureka Server,从而降低了Eureka Server的压力,如果Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者完成调用

eureka的高可用性,不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功,当数据出现不一致时,虽然A,B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息如果请求A查不到,但请求B就能查到

多个Eureka Server实例之间,互相之间通过复制的方式,来实现服务注册表中数据的同步

服务提供者

服务提供者是作为EurekaClient存在的,其主要工作是

  • 向服务器注册服务
  • 发送心跳给服务器
  • 向服务器获取注册列表
服务调用者

服务调用者也是作为客户端存在的,其主要职责就是发现与调用服务

Eureka Server注册中心配置

依赖
<!--eureka-server服务端 -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

<!--新版本的eureka-server服务端 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
yml配置
eureka:
  instance:
    hostname: localhost
    # 过期时间,默认90s, 可不配置
    lease-expiration-duration-in-seconds: 90
    # 续约时间,默认30s,可不配置
    lease-renewal-interval-in-seconds: 30
    # ip地址优先
    prefer-ip-address: true
  server:
    # 开启自我保护机制,可以在本地测试时关闭,在正式上线时不建议关闭,默认为true
    enable-self-preservation: true
    # 去除失效服务的时间间隔(毫秒)
    eviction-interval-timer-in-ms: 4000
  client:
    # 启用eureka客户端,默认为true, 可不配置
    enabled: true
    # 不需要拉取注册表,本身就是注册中心,只需要维护实例,不需要拉取注册,默认为true
    # 如果是eureka server集群的话,是需要互相同步的
    fetchRegistry: false
    # 两个心跳参数,默认都是30s,可不配置
    instance-info-replication-interval-seconds: 30
    # 拉取服务的间隔 使用定时任务来进行拉取  拉取之后存在localRegionApps中
    # 如果Eureka server挂掉之后,请求server进行拉取最新的地址失败,并不会把缓存清空,所以只要所访问的服务地址没变,依然是可以正常访问的
    registry-fetch-interval-seconds: 30
    # 不向注册中心注册自身,默认为true
    registerWithEureka: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/  # 设置与eureka server交互的地址,用来查询服务和注册服务
      # 如果是集群的eureka server,需要配置其他server机器的地址,多个地址用逗号分隔
#      defaultZone: http://eureka2:7002/eureka,http://eureka3:7003/eureka
启动类
@SpringBootApplication
@EnableEurekaServer  // 启动Eureka Server相关功能
public class EurekaServerApp {

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

业务微服务配置

依赖
<!-- eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

<!-- 新版 eureka client -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
yml配置
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka  #如果eureka server使用了basic认证的话,地址需要改成http://username:password@localhost:8761/eureka
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${server.port}
    prefer-ip-address: true   #以IP地址注册到服务中心,如果为false会使用微服务所在的hostname
    ip-address: 192.168.217.211
    non-secure-port: 8767
    #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则),默认30
    lease-renewal-interval-in-seconds: 10
    #Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己),默认90
    lease-expiration-duration-in-seconds: 30
    status-page-url: /info #状态页面
    health-check-url-path: /health #健康检查页面
启动类
@SpringBootApplication
@EnableEurekaClient  // 服务启动后注册到Eureka Server注册中心中  也可以使用@EnableDiscoveryClient,对于@EnableEurekaClient只对于Eureka可用,而@EnableDiscoveryClient可以使用任意注册中心服务
public class ProviderApp {

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

https://zhhll.icu/2021/框架/微服务/springcloud/注册中心/Eureka/1.Eureka简介/

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾光师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值