647号小宇宙

2020-04-19
负载均衡:Ribbon源码剖析(2)维护服务列表

我们上篇已经知道PollingServerListUpdater有可能是负责与Eureka交互定时获取服务列表的,本篇我们就剖析下这个组件相关的逻辑。

Read More

2020-04-13
负载均衡:Ribbon源码剖析(1)创建负载均衡器

入口

我们在每次使用Spring Cloud Netflix Ribbon的时候,有一个固定的套路就是需要用@LoadBalanced注解修饰一个RestTemplate

1
2
3
4
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
Read More

2020-04-08
负载均衡:Ribbon入门

Ribbon解决了什么问题

当集群中有了注册中心之后,服务消费者可以拿到所有服务的列表,此时就需要有一个组件能够将请求负载均衡到各个实例上去。ribbon就是这样一个客户端侧的负载均衡组件,同出Netflix,与其他组件整合后非常实用。

Ribbon提供了多种不同的负载均衡算法实现,非常实用。

Read More

2020-03-28
服务注册发现:Eureka源码剖析(13)Spring Cloud Eureka源码剖析

Spring Cloud Netflix Eureka对eureka原生项目做了一点儿轻量级的封装。

Read More

2020-03-25
服务注册发现:Eureka源码剖析(12)核心机制源码剖析总结

  • eureka 客户端会在启动时,从eureka server抓取全量注册表到本地
Read More

2020-03-18
服务注册发现:Eureka源码剖析(11)核心机制之Eureka Server集群机制

  • 什么是eureka集群?
    一组互相复制数据,完全对等的eureka节点。通过配置文件指定,也可以热刷新(扩容缩容)
Read More

2020-03-09
服务注册发现:Eureka源码剖析(10)核心机制之Eureka Server网络故障时的自我保护机制

  • 自我保护机制是什么?
    在eureka server中,他假定正常情况下肯定有大于85%的服务实例能够保持正常的心跳,最近1分钟内少于85%的服务实例心跳成功,eureka开发团队认为,此时大概率是eureka server自己的网络故障了,此时再进行过期实例剔除都会是误伤,于是就不再对故障实例剔除。这就叫进入了自我保护机制。
Read More

2020-03-03
服务注册发现:Eureka源码剖析(9)核心机制之服务实例的自动故障感知及自动摘除机制

  • 故障感知和摘除指的是什么?
    正常下线,会通过eureka client的shutdown方法进行,走下线流程。
    当因为一些原因,没有通过正常下线的方式,服务实例却下线了,这种异常情况,成为故障。
    感知,eureka server会通过定时检查多久没心跳了,感知到这种故障服务实例,并自动从注册表中把这个服务实例摘除。
Read More

2020-02-25
服务注册发现:Eureka源码剖析(8)核心机制之服务下线与实例摘除

  • 当调用eureka client的shutdown方法时,会走服务下线流程。(这个shutdown方法会在Spring Cloud Netflix中spring上下文关闭时调用)
    • 触发下线监听器
    • 停止调度任务(心跳、拉取注册表)
    • 调用eureka server的 DELETA /v2/apps/APP_NAME/服务实例ID 接口
    • 释放一系列jersey client的网络资源
    • 注销监控
      • 心跳监控
      • 注册表监控
Read More

2020-02-18
服务注册发现:Eureka源码剖析(7)核心机制之Eureka Clien与Eureka Server之间的心跳机制

  • 当eureka client启动时,会有一个定时任务每隔30秒向eureka server发送心跳
    • 心跳会将服务实例信息带上
    • 请求的eureka server的 PUT /v2/apps/APP_NAME/服务实例ID
    • 根据响应做如下处理
      • 如果返回状态码为404
        说明eureka server没有这个服务实例,此时会走服务注册流程
      • 如果返回状态码200,说明心跳成功了,会更新本地的最近一次成功心跳时间戳
Read More