Eureka原理![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a2c1eaa9d4ce3a0d8494cbfbbe73d58e.png)
其中:
Eureka 服务注册组件
Region 类似于一个很多机房的一个集群
Availability Zon 类似于机房
我的理解如下
EUREKA 是一个不同微服务注册的组建。不同的微服务可以注册到一个EurekaServer 上。 注册在EurekaServer上的每个微服务也就成了EurekaClient即Eureka客户端。是Eureka Server 和Eureka Client 均需要在springboot的启动类上注解说明。
不同的Eureka Server可以相互注册,来形成Eureka集群,之间的注册表信息是同步更新的。 客户端通过心跳方式来更新Eureca中的注册表信息(默认30s),以及自己缓存中的注册表信息。 默认90s收不到微服务的心跳,会注销掉该微服务。
Eureka的高可用性原因如下
因为Eureka Server 默认90s收不到Client的信息会自动注销掉该微服务,那么就有可能会有客户端正常, Eureka Server 网络分区故障导致收不到心跳消息,导致注册中的Cliet均被删除, 自我保护机制就是当在短时间丢失过多客户端,会自动进入保护模式,进入保护模式以后会保护注册表中的所有信息,等网络分区故障恢复以后自动推出自我保护模式。
Eureka的多网卡ip选择
1 忽略指定网卡
2 正则表达式指定ip
3 手动指定ip
设置健康检查为true则会强制使用站点本地地址 如下
Eureka 的自我检查 通过请求/health节点来查看健康状况
不同微服务之间负载均衡,既可以结合Eureka 也可以脱离Eureka结合Eureka 各微服务注册在Eureka,Ribbon也注册在Eureka Server 请求时候先从Eureka Server 查询可用服务列表,然后实现负载均衡
二、Feign 声明式REST调用
我的理解
Feign实际上是编写一个feign接口,,指定 访问的微服务,,,在接口里面写对应的请求,然后就可以在controller中直接调用feign的方法请求,简化了不同服务间的请求。
三、Hystrix 断路器
原理图
保护机制如下
- 保护机制1
正常情况下,断路器关闭,可以正常的请求依赖的服务,当一段时间请求的失败率达到一定的阈值的时候(错误率达到50%100,或者100次/分钟)断路器就会断开,此时就不会再去请求依赖的服务 - 保护机制2
断路器断开以后一定时间,会进入半开状态,此时断路器运行一个请求访问依赖的服务,如果访问成功,断路器闭合,否置继续保持打开状态
我的理解
就像家中的断路保护器,默认5s20次失败会断开,通过Actuator监控/health 可以知道断路器的工作状态