Eureka
1、什么是Eureka?
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
2、Eureka包含两个组件:Eureka Server和Eureka Client。
- Eureka Server提供注册服务
- Eureka Client是一个Java客户端,用于简化与Eureka Server的交互
3、Eureka自我保护机制
某时刻一个为服务不可用了,Eureka不会立刻清理该服务,依旧会对该服务的信息进行保存。
- 一般情况下,EurekaServer与微服务实例之间存在心跳机制,节点默认90秒未收到微服务的心跳则会注销该实例;当EurekaServer在短时间内丢失过多的客户端,此时这个节点就会进入自我保护模式,保护服务注册表中的信息,不会注销任何微服务,直至故障恢复
- 当节点收到的心跳重新恢复到阈值以上时,会自动退出自我保护机制
- 在application.yml配置中可以添加
eureka.server.enable-self-preservation = false
禁用自我保护机制(不推荐)
4、CAP理论
C(Consistency):强一致性 A(Availability):可用性 P(Parition tolerance):分区容错性
==一个分布式系统不可能同时满足一致性==
NoSQL数据库分为CA、CP、AP三大类原则:
- CA:满足一致性、可用性,通常可扩展性较差
- CP:满足一致性,分区容错性的系统,通常性能不是特别高
- AP:满足可用性、分区容错性的系统,通常对一致性要求较低
5、Zookeeper与Eureka
Zookeeper:(CP)
当主节点因为网络故障或其他原因与节点失去联系时,剩余节点会进行leader选举,这个选举过程耗时较长,且在选举期间,整个集群都处于不可用状态
Eureka:(AP)
eureka各个节点都是平等的,只要有一个节点还在,就能保持服务注册与发现的可用性;如果在15分钟内超过85%的节点都没有正常的心跳,eureka就会认为客户端与注册中心出现了故障,会出现以下几种状况:
- 不再从注册列表移除长时间没有收到心跳而应该过期的服务
- 仍能接收新的
服务注册与发现
请求,但不会同步到其他节点上,以保证当前节点的可用性 - 当网络稳定,故障恢复时,同步信息到其他EurekaServer节点
评论 (0)