eruka处理应用服务器集群,Eureka之server端集群节点发现,数据同步

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件Eureka服务端支持集群部署,通过源码查看集群节点发现以及数据同步功能的实现

提供集群功能的包路径

com.netflix.eureka.cluster

集群节点发现以及动态更新节点功能

Eureka服务端封装了一个集群节点管理的类名称为PeerEurekaNodes 通过名称翻译出来为对等的Eureka节点集合,可以看出这个类是对eureka服务端集群节点抽象,下面通过源码查询eureka是怎么管理与发现节点信息

通过PeerEurekaNodes类属性可以看到提供了两个集合以及一个执行定时任务的线程池,其它配置属性忽略

peerEurekaNodes 表示集群节点集合

peerEurekaNodeUrls 表示集群节点对应的URL集合

taskExecutor 执行定时任务的线程池

同时 PeerEurekaNodes 类提供start 与shutdown方法,接下来主要看start方法的实现

start 方法主要完成以下几件事

初始化定时任务线程池

首次更新集群节点 updatePeerEurekaNodes方法

创建更新集群节点任务线程

通过定时任务线程池定时执行更新集群节点线程

通过start 可以看出 eureka是通过一个定时线程定时去更新集群的节点信息达到对集群节点的动态发现和感知,在上面我们可以看到更新操作主要由updatePeerEurekaNodes方法完成,下面查看此方法的实现

updatePeerEurekaNodes根据传入的新集群URL集合完成节点的更新

校验传入的URL集合是否需要更新

移除新url集合中没有的旧节点并关闭节点

创建旧节点集合中没有的新URL节点通过createPeerEurekaNode方法

重新赋值节点集合以及URL集合完成节点的更新

updatePeerEurekaNodes传入的新URL集合是通过resolvePeerUrls方法获取,这个方法实际上是解析配置文件中的eureka.serviceUrl前缀的配置获取,并动态监听配置的更新。 创建新的节点是通过createPeerEurekaNode创建,下面查看此方法源码

PeerEurekaNode 方法

创建远程通讯客户端replicationClient 用户与此节点间通讯,数据同步等工作

获取要创建的远程节点的host

创建一个表示远程节点实例 PeerEurekaNode

PeerEurekaNode 表示一个与当前节点对等的远程节点,当前节点与远程节点的数据同步工作都是在此实例中完成的。

集群节点数据同步

在上面节点发现中知道eureka是通过PeerEurekaNode表示远程对等接点,并将远程通讯客户端replicationClient传入到PeerEurekaNode中,接下来通过查看PeerEurekaNode源码来看eureka集群节点间都有那些数据需要同步以及通讯内容

PeerEurekaNode 完成以下事件

创建数据同步的任务处理器ReplicationTaskProcessor

创建批处理任务调度器

创建单任务处理调度器

说明: eureka将节点间的数据同步工作包装成一个个细微的任务ReplicationTask ,每一个数据操作代表一个任务,将任务发送给任务调度器TaskDispatcher去异步处理。

下来查看PeerEurekaNode都可以创建那些同步任务

register

注册同步任务,当有服务注册到当前节点时,通过注册同步任务将服务信息同步到集群远程节点

cancel

取消服务注册任务,当前节点有服务取消注册,将信息同步到集群远程节点

heartbeat

心跳同步任务,当前节点有服务发送心跳续租,将信息同步到集群远程节点

StatusUpdate

DeleteStatusOverride

集群节点数据同步任务处理

在PeerEurekaNode的构造函数中可以看到同步任务处理由ReplicationTaskProcessor完成,下面看此类源码

单任务处理

调用任务task的execute完成远程数据同步

分析远程返回结果

批处理任务,将一组任务一次性发送到远程进行处理

根据task集合创建ReplicationList

调用批量同步接口将同步集合发送到远端节点同步数据 即调用rest API/{version}/peerreplication

分析远程返回结果

eureka 服务端 集群节点发现,数据同步功能主要是由PeerEurekaNodes与PeerEurekaNode类实现,通过源码的跟踪可以清晰看出集群实现的逻辑,方便在实际应用中对问题的定位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值