Eureka学习随笔

什么是Eureka

      Eureka是服务注册中心,提供服务注册发现,用于管理服务的相关信息。

 

Eureka的角色

       Eureka分为服务端和客户端,服务端是用来给服务注册的,所有的服务信息都需要在服务端中注册;客户端就是服务的提供者和消费者,客户端向服务端注册服务,通过服务端发现服务,一个客户端可以是服务的提供者也可以是消费者。

 

Eureka服务注册与发现

     Eureka是通过别名来进行服务注册与发现的,是以key-value的形式保存服务信息的,key就是客户端的别名,value就是客户端的ip地址和端口信息,客户端提供服务的时候需要指定客户端的别名,这个别名必须唯一。

    消费者需要消费服务的时候会根据别名在服务端中找到对应的服务提供者的地址,如果是集群则需要配合ribbon负载均衡去访问,默认通过轮询机制去访问提供者。

 

Eureka集群机制原理

     Eureka集群是通过多个Eureka服务端相互注册实现的,涉及两个关键参数:register-with-eureka(是否在register上注册),fetch-register(是否可被获取服务),都这两个参数开启为true的时候,服务端也会在指定的其他服务端上面注册,其他的服务端也会获取到当前服务端的信息,由此相互依赖组成集群。

    组成的集群会有主节点和从节点之分,只有主节点拥有所有客户端的信息,其他从节点只能看到其他的服务端信息,没有客户端信息的,当主节点挂掉之后,主节点原有的服务注册信息会自动同步到新的主节点,服务信息不会丢失

    注意的是服务启动是有先后顺序的,由于是相互依赖,先启动的服务必然会存在找不到其他服务端的情况出现,这时候不需要理会,等其他服务端也起来了之后会自动刷新。

 

Eureka自我保护机制

     正常情况下,客户端每隔一段时间会给服务端发送心跳包以表示自己处于存活状态,若超过一定时间服务端没有接收到服务端发送的心跳(默认90s)则会认为该服务不可达,会将该服务从服务端中剔除。但若短时间内有大量的服务实例丢失,服务端会认为是由于网络问题导致服务丢失,此时服务端会对注册的客户端信息进行保护,而不会剔除,这就是Eureka的心跳保护机制。

     一般情况下本地开发不建议开启,因为本地修改频繁,客户端会经常重启,生产环境建议开启。

 

与zookeeper的区别

eureka保证AP(可用性,分区容错性),zookeeper保证CP(一致性,分区容错性)

1.zookeeper是树状结构,通过一个个节点来注册服务;Eureka是通过key-value方式,将别名作为key,ip地址作为value

2.eureka没有选举机制,当主节点挂掉之后自动切换到另一个节点,每个节点都是平等的,只不过由于信息同步需要时间的原因,可能获取不到最新的服务信息,但是保证了服务的高可用,但是由于服务可能不是最新不保证一致性;zookeeper则是通过选举机制来决定新的主节点,但是当领导者被选举出来后,跟原来的是一样的,这就保证了一致性,但是由于选举过程会导致整个集群不可用,无法保证可用性。

3.eureka有自我保护机制,防止由于网络等原因造成服务丢失,保证服务高可用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值