Eureka的深度总结

一、Eureka是一个去中心化的架构,注重CAP理论中的AP,重点在于高可用性。

二、Eureka的serviceUrl既可以通过IP:Port的方式配置集群,也可以基于DNS方式配置高可用集群,它的原理就是通过域名获取所有的IP地址,但端口号要一致。配置DNS对增减服务器比较好,不需要每一台服务器修改其配置。

三、Spring cloud中可以添加spring-security支持Eureka监控界面的登录认证。

# 安全认证的配置
security:
  basic:
    enabled: true
  user:
    name: # 用户名
    password: # 用户密码

四、Eureka server在初始化之后会创建Eureka-Client,用于和 Eureka-Server 集群里其他节点通信交互。服务端有三层缓存机制:只读缓存、读写缓存、registry缓存。当只读缓存获取不到值的时候才从读写缓存里面取,并添加到只读缓存,当读写缓存获取不到值的时候从registry缓存获取并添加到读写缓存中。

五、Eureka server的自我保护机制:期望最大每分钟续租次数=当前注册实例数*2;期望最小每分钟续租次数=期望最大每分钟续租次数*续租百分比(默认8.5);当每分钟心跳次数小于期望最小每分钟续租次数时触发自动保护机制,不再自动过期租约。这里要注意的就是为什么是要乘以2,因为默认情况下,注册的应用实例每半分钟续租一次,那么一分钟心跳两次,因此 x 2 。

六、默认情况下服务端每60秒就会检查下有没有超过90秒没有心跳的实例,将其剔除。如果阈值renewalPercentThreshold不为0的情况下实例会是分批逐步过期的,而且是随机清理过期的租约。

七、客户端从服务端获取注册信息是第一次注册的时候全量获取,后面就是增量获取,但特殊情况下也会全量获取。增量获取比较复杂,涉及到一致性哈希码的问题,并且会有极少情景下出现不合理的情况。

八、客户端启动时并不是马上向注册中心发送注册请求,而是默认等待40秒。注册时会生成两个定时任务,一个是默认每30秒发送一次心跳到注册中心; 另一个是默认每30秒更新一下本地的注册信息缓存。

九、服务端集群同步时节点之间并发复制不会冲突,这是因为每个复制的操作都会有一个时间戳,最新的时间戳会覆盖旧的。

猜你喜欢

转载自blog.csdn.net/guotufu/article/details/81433500
今日推荐