eureka的基本原理与线上实战配置

一、注册中心的主要功能

        1、服务注册与发现

        2、心跳和故障检查


二、服务的注册与发现

1、注册中心的基本工作流程

    1、服务的提供者作为eureka client将服务注册到eureka server端,一般使用服务名称进行注册,eureka server端将信息保存到服务注册表中

    2、服务的消费者作为eureka client到server端根据服务名称拉取服务提供者的信息列表

思考问题:服务的注册需要将信息写入到server端的服务注册表,服务发现方需要不断的到服务注册表中读取信息,这样就会出现读写并发冲突的问题,怎么办?

Eureka引入了多级缓存的架构,来解决读写并发的冲突问题

两个缓存readOnly缓存和readWrite缓存

2、引入多级缓存后的服务注册与发现流程

服务注册中心第一次启动readOnly缓存与readWrite为空

    1、服务注册,新服务注册到server端,写入到服务注册表

    2、清空readWrite缓存列表(第一次为空)

    3、readOnly缓存(第一次为空)

    4、服务发现,客户端默认30s启动线程拉取服务信息,这时先到readWrite缓存中拉取,发现没有,再去readWrite拉取,发现没有,再去服务注册表中查询,放入readWrite缓存与readOnly缓存

后续的服务的注册与发现流程:

注册中心启动运行的过程中,有新服务进行了注册步骤:

    1、记录信息到server端的服务注册表

    2、清空readWrite缓存列表

到这里我们发现了一个问题?清空了readWrite列表,readOnly缓存列表如何感知到readWrite变换,没错,我们应该可以想到,定时启动线程去比对readWrite与readOnly的信息。

所以这里又出现了一个可以配置的参数,默认30s钟启动线程去比对,将readWrite同步到readOnly中,这样两个缓存中信息就是同步的了。

思考问题:新注册的服务需要多长时间才会被发现

是不是需要这么多时间:后台启动定时任务同步readWrite缓存到readOnly的时间+服务发现方启动定时任务拉取服务列表的时间


三、说完了服务的注册与发现,我们再来看看心跳与故障?

心跳:服务的提供者将服务信息注册到eureka的server端后,server如何监控服务的健康状况,对,我们最常用的就是心跳。

两种方式:

1、服务的提供方定时发送心跳给eureka server端告知server自己还活着

2、Eureka server端启动线程去检查服务是否在指定时间内发送了心跳,以决定是否将服务从服务注册表中剔除掉

服务的提供方定时发送心跳给eureka server端,系统默认30秒钟,这也是我们可以调整的参数

除此之外,server端还会定时启动线程去检查那些服务没有发送心跳,系统默认时间是60秒钟,可以调整的参数

思考问题:

1、一个服务出现了故障,多长时间eureka server端会发现服务出现故障并将他从服务注册表中删除?

2、服务的发现方需要多长时间才能感知到服务已经出现了故障?

 


四、线上推荐配置:

        

server:
  port: 8888

eureka:
  instance:
    hostname: localhost
  client:
    #表示是否将自己注册到Eureka Server,默认为true
    registerWithEureka: false
    #要不要去注册中心获取其他服务的地址
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    #自我保护机制
    enable-self-preservation: false
    #只读缓存更新频率,单位:毫秒,默认是30s
    response-cache-update-interval-ms: 3000
    #读写缓存写入后过期时间,单位:秒。,默认是180s
    response-cache-auto-expiration-in-seconds: 180
    #移除队列里过期的租约变更记录的定时任务执行频率,单位:毫秒。默认值 :30 * 1000 毫秒。
    eviction-interval-timer-in-ms: 3000
    #

ribbon:
  eureka:
    enabled: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值