一、什么是Eureka
Eureka是netflix公司研发并且开源的一个服务发现组件。(不过目前已经停止升级维护,现在架构不建议使用,但我们还是有必要学习一下)
二、什么是服务治理
Spring Cloud封装了Net公司开发的 Eureka模块来实现服务治理,在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。
三、什么是服务发现与注册
1)Eureka采用了CS的设计架构, Eureka Server
作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka的客户端(Eureka Client)连接到Eureka server
并维持心跳连接。
2)这样系统的维护人员就可以通过 Eureka Server
来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者或服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用
3)框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系服务治理概念。在任何rpc远程框架中,都会有一个注册中心(存放服务地址相关信息(接口地址)
四、Eureka两大组件
Eureka组件包含Eureka Server
(服务端-注册中心)和Eureka Client
(客户端)。
1)Eureka Server:提供服务注册服务,即服务注册中心
各个微服务节点通过配置启动后,Eureka客户端会把自身服务注册到注册中心,为其他Eureka客户端提供服务,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到,Eureka客户端通过注册中心相互发现对应服务并进行调用。
2)Eureka Client:Eureka客户端,通过注册中心访问
Eureka客户端,是一个java客户端,用于简化Eureka Server
的交互,客户端同时也具备一个内置的使用轮询(round-robin)负载算法的负载均衡器,在应用启动后,将会向Eureka Server
发送心跳,默认周期30s,如果Eureka Server
在多个心跳周期没有接收到某个节点的心跳,Eureka将会从服务注册表中把这个服务移除(默认90s)。相对注册中心而言,所有注册到服务注册中心的服务都可以表述为Eureka客户端;但是站在提供方和消费方的角度看,Eureka客户端又可以称之为服务端。
五、Eureka执行原理
- 1,启动eureka注册中心
- 2,启动服务提供者
- 3,服务提供者启动后会将自身信息以别名的方式注册到eureka
- 4,消费者在需要调用接口的时候,使用服务别名去注册中心获取实际的rpc服务远程调用地址
- 5,消费者获取调用地址后底层使用利用HttpClient技术实现远程调用
- 6,消费者获取服务地址后会缓存到jvm内存中,默认每三十秒更新一次服务调用地址
另外,Eureka还有自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,所以不会再接收心跳,也不会删除服务。
六、Eureka优点
在Eureka平台中,如果某台服务器宕机,Eureka不会像zookeeper选择leader的过程,客户端请求会自动切换到新的Eureka节点,当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理中,而对于它而言,所有要做的无非是同步一些新的服务注册信息。所以不用担心“掉队”的服务器恢复以后,会从Eureka服务器集群中踢除的风险。Eureka甚至被设计用来应付范围更广的网络分割故障,并实现0宕机维护需求。(多个zookeeper之间网络出现问题,造成出现多个leader,发生脑裂),当网络分割故障发生时,每个Eureka节点,会持续的对外提供服务(zookeeper不会)接收新的服务注册同时将它们提供下游的服务发现请求,这样一来,就可以实现在同一个子网中,新发布的服务仍然可以被发现与访问。
Eureka还有客户端缓存功能(Eureka分为客户端程序与服务端程序两个部分,客户端程序负责向外提供注册与发现服务接口)所以即便Eureka集群中所有节点都失效,或者发生网络分割故障导致客户端不能访问任何一台Eureka服务器;Eureka服务的消费者仍然可以通过Eureka客户端缓存来获取现有的服务注册信息。甚至最极端的环境下,所有正常的Eureka节点都不对请求产生相应,也没有更好的服务器解决方案来解决这种问题时;得益于Eureka的客户端缓存技术,消费者服务仍然可以通过Eureka客户端查询与获取注册服务信息,这点很重要。