Eureka组件技术原理阐述

本文介绍了Eureka相关技术,包含服务器端和客户端的通讯原理,Eureka的集群搭建等,但不涉及具体配置及实例。

Eureka简介

Eureka全称:Spring Cloud Eureka,是Spring Cloud Netflix微服务套件的一部分,也是分布式领域CAP原则中,基于AP原则构建的,而Zookeeper是基于CP构建的。C为数据一致性,A为服务可用性,P为服务队网络分区故障的容错性。

Eureka服务器和客户端通讯:

1.服务注册

当Eureka Client启动后,不会立即向服务端注册自己,而会延迟一段时间(默认为40秒),客户端会利用这段时间来生成自身元数据(推测),之后,客户端会根据配置向Eureka  Server注册自身的元数据,包含:IP地址、端口、运行指标url、主页地址等。之后,在默认情况下,客户端会每隔30秒发送一次心跳给服务端来进行服务续约,通过服务续约来说明自身仍然在线、可用,如果服务端在90秒时间内没有收到客户端的心跳请求,服务端会认为Client已经下线宕机,服务不可用,会将此客户端从注册列表中移除。官方不建议修改续约间隔时间。

Eureka Client会从服务端获取其他Client在服务端的注册信息,并缓存在本地,供远程调用时用。这个本地的缓存信息会每隔一定时间刷新一次(默认30秒),每次刷新获得的注册信息不同于本地时,本地信息会被处理并被同步,这样设计的一个目的是:在可用的情况下,客户端之间调用可用的远程服务,而不需要服务器端的转发,提高了通讯效率,并且由于客户端有可能存储了多个相同的服务提供者,那么在客户端负载均衡(Ribbon)的模式下,客户端会通过负载均衡组件实现远程服务提供者的合理调用,提高了分布式系统的性能及可靠性。

Eureka Server在正常时,不会进入保护模式,而当一定时间段内,如果续约的服务低于配置的百分比(默认为15分钟内低于85%),服务端会进入保护模式,在这种模式下,服务端不会删除注册表信息,以便能在网络故障或部分Eureka Client下线情况下,为其他在线的Eureka Client继续提供服务。默认情况下,保护模式是开启的,可以通过配置来关闭。

需要注意的是:Eureka Client在下线时,Eureka Server不会立即将其从注册表中删除,客户端关闭时要调用功能代码来实现。

2.Eureka 高可用架设

 Eureka 集群类似于Kafka,原因是Eureka 的集群配置只涉及Eureka Server之间的配置,而Eureka Client只需要相应配置修改即可。Eureka Server高可用集群通过设置defaultZone来实现,完成后,Eureka Client一旦连接并注册到其中一个服务端,那么其他的服务端也会在很短时间内同步。而在实战时,请将Client注册到所有服务端。

Eureka集群架设,请参考:https://www.cnblogs.com/jizhong/p/11390959.html

3.安全性

安全性涉及两个层面。层面一:基本身份验证,可通过用户名+密码方式来设定。层面二:通讯安全,可通过客户端和服务端通过增加SSL来实现,具体可设置服务器端和客户端的签名证书来实现。

原文地址:https://www.cnblogs.com/jizhong/p/13832033.html