Eureka使用详解

Eureka是一种基于rest的服务,主要用于aws云,为了实现中间层服务的负载均衡和故障转移。

分为Eureka serverEureka client

Eureka主要是可以提供负载均衡。还有心跳检测,服务注册到Eureka,然后服务向Eureka服务端每30秒发送一次心跳检测,更新一次租约。如果客户端无法续订租约几次,则会在大约90秒内将其从服务器注册表中删除。注册信息和续订将会复制到群集中的所有Eureka节点。来自任何区域的客户端都可以查找注册表信息(每30秒发生一次)以查找其服务(可能位于任何区域中)并进行远程调用。

Eureka中分为region和zone,来自aws的概念。

Eureka中的region是固定的,就那几个。一个region中有好多zone

服务会通过服务注册表,注册到Eureka

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

Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server 在多个心跳周期内没有接受到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认是3个周期,也就是90秒)

Eureka Server之间将会通过复制的方式完成数据的同步。

Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。

综上,Eureka通过心跳检测、健康检查、客户端缓存等机制。确保了系统的高可用性、灵活性和伸缩性。

自己编写一个Eureka server注册中心,步骤如下:

1.只需要引入Eureka的server jar包,spring-cloud-starter-eureka-server

2.然后在启动类上加上两个注解@springbootApplication和@EnableEurekaServer

3.application.yml的配置

spring:
    application:
        name: @project.name@     #建议名称全部用小写
server:
  port: 7000
eureka:
  environment: @package.environment@
  instance:
    appname: monitor-server
    leaseRenewalIntervalInSeconds: 5
  server:
    enable-self-preservation: true            # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 5000       # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
  client:
    registryFetchIntervalSeconds: 5
    registerWithEureka: false			#表示不要注册自己
    fetch-registry: false                          # 表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
    serviceUrl:
      defaultZone: http://127.0.0.1:${server.port}/eureka/ # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。

这样一个注册中心就完成了。

将服务注册到Eureka注册中心,步骤如下:

1.引入jar包spring-cloud-starter-eureka

2.在启动类上添加注解@EnableEurekaClient和@SpringBootApplication

其实作用就是服务发现。在此说一下@EnableEurekaClient和@EnableDiscoveryClient的区别。其实两者的作用都是用于服务发现的,但是注册中心是有多种实现的,可以有dubbo,console,Eureka等。当注册中心是Eureka时,用注解@EnableEurekaClient。当注册中心是其他时,用@EnableDiscoveryClient。

3.配置application.yml

spring:
    application:
        name: @project.name@
server:
    port: 7006
eureka:
    environment: @package.environment@
    instance:
        prefer-ip-address: true #启用ip配置 这样在注册中心列表中看见的是以ip+端口呈现的
        leaseRenewalIntervalInSeconds: 5
        statusPageUrlPath: /info
        healthCheckUrlPath: /health
    client:
        healthcheck:
            enabled: true
        registryFetchIntervalSeconds: 5
        serviceUrl:
            defaultZone: http://127.0.0.1:7000/eureka  # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。

 

spring-boot-starter-actuator是监控系统健康情况的工具。

看篇文章https://www.jianshu.com/p/481134c3fab7

Eureka深入学习

Eureka的高可用,其实就像跟zookeeper一样,做成Eureka集群,让他们之间相互注册。

搭建参照:https://blog.csdn.net/jrn1012/article/details/77837671

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值