Eureka 系列(02)服务发现源码分析

Eureka 系列(02)服务发现源码分析

[TOC]

在上一篇文章 Eureka 系列(02)客户端源码分析 中对客户端服务发现与

Eureka 一致性协议:

Eureka 是 AP 模型

消息广播:

Eureka源码解析 https://blog.csdn.net/u012394095/article/category/9279158

https://blog.csdn.net/u011834741/article/details/54694045

Eureka 集群发现 https://www.jianshu.com/p/4de50f536354

Eureka 数据同步 https://www.jianshu.com/p/4de50f536354

Eureka 服务启动过程 https://my.oschina.net/JackieRiver/blog/1925978

Eureka常见问题解答 https://cloud.tencent.com/developer/news/275633

Eureka架构 https://segmentfault.com/a/1190000019851462

https://www.cnblogs.com/theRhyme/p/10313299.html

1. Eureka 数据模型

表1:Eureka 数据结构

框架 集群(框架) 服务应用 服务集群 服务实例 租约管理
Spring-Cloud -- (serviceId) -- ServiceInstance --
Nacos Server Service Cluster Instance --
Eureka (serviceUrl) Application(appName) -- InstanceInfo(id) Lease
Ribbon -- -- -- Server --

2. 服务注册

图1:Eureka 服务实例注册时序图

sequenceDiagram
participant ApplicationResource
participant InstanceRegistry
participant PeerAwareInstanceRegistryImpl
participant AbstractInstanceRegistry
participant PeerEurekaNode
note over ApplicationResource: POST:/euraka/apps/{appName}<br/>addInstance(instanceInfo,isReplication)
ApplicationResource ->> InstanceRegistry: 1. register
InstanceRegistry ->> InstanceRegistry: 2.1 publishEvent
InstanceRegistry ->> PeerAwareInstanceRegistryImpl: 2.2 register(instanceInfo,isReplication)
PeerAwareInstanceRegistryImpl ->> AbstractInstanceRegistry: 3.1 register(instanceInfo,leaseDuration,isReplication)
PeerAwareInstanceRegistryImpl ->> PeerAwareInstanceRegistryImpl: 3.2 replicateInstanceActionsToPeers
PeerAwareInstanceRegistryImpl ->> PeerEurekaNode: 4. register(instanceInfo) -> POST:/euraka/apps/{appName}

图2:Eureka 心跳机制

sequenceDiagram
participant InstanceResource
participant InstanceRegistry
participant PeerAwareInstanceRegistryImpl
participant AbstractInstanceRegistry
participant PeerEurekaNode
note over InstanceResource: PUT:/euraka/apps/{appName}/{id}<br/>renewLease
InstanceResource ->> InstanceRegistry : 1. renew(appName,id,isReplication)
InstanceRegistry ->> InstanceRegistry : 2.1 publishEvent(EurekaInstanceRenewedEvent)
InstanceRegistry ->> PeerAwareInstanceRegistryImpl : 2.2 renew(appName,id,isReplication)
PeerAwareInstanceRegistryImpl ->> AbstractInstanceRegistry : 3.1 renew(appName,id,isReplication)
PeerAwareInstanceRegistryImpl ->> PeerAwareInstanceRegistryImpl : 3.2 replicateToPeers
PeerAwareInstanceRegistryImpl ->> PeerEurekaNode : 4. heartbeat -> PUT:/euraka/apps/{appName}/{id}

sequenceDiagram
participant PeerEurekaNode
participant batchingTaskDispatcher
participant BatchWorkerRunnable
participant nonBatchingDispatcher
participant SingleTaskWorkerRunnable
participant ReplicationTaskProcessor
participant JerseyReplicationClient
loop 批量发送处理:
PeerEurekaNode ->> batchingTaskDispatcher : register/cancel/heartbeat/statusUpdate/deleteStatusOverride
batchingTaskDispatcher ->> BatchWorkerRunnable : process(List<ReplicationTask> tasks)
BatchWorkerRunnable ->> JerseyReplicationClient : submitBatchUpdates -> `POST: peerreplication/batch`
end
loop 单个发送处理:
PeerEurekaNode ->> nonBatchingDispatcher : statusUpdate
nonBatchingDispatcher ->> SingleTaskWorkerRunnable : process(ReplicationTask task)
SingleTaskWorkerRunnable ->> JerseyReplicationClient : statusUpdate -> `PUT: asg/{asgName}/status`
end

原文地址:https://www.cnblogs.com/binarylei/p/11610885.html

时间: 2024-11-03 16:34:31

Eureka 系列(02)服务发现源码分析的相关文章

Eureka 系列(02)客户端源码分析

Eureka 系列(02)客户端源码分析 [TOC] 在上一篇 Eureka 系列(01)最简使用姿态 中对 Eureka 的简单用法做了一个讲解,本节分析一下 EurekaClient 的实现 DiscoveryClient.本文的源码是基于 Eureka-1.9.8. 1)服务注册(发送注册请求到注册中心) 2)服务发现(本质就是获取调用服务名所对应的服务提供者实例信息,包括IP.port等) 3)服务续约(本质就是发送当前应用的心跳请求到注册中心) 4)服务下线(本质就是发送取消注册的HT

Spring Cloud Eureka服务注册源码分析

Eureka是怎么work的 那eureka client如何将本地服务的注册信息发送到远端的注册服务器eureka server上.通过下面的源码分析,看出Eureka Client的定时任务调用Eureka Server的Reset接口,而Eureka接收到调用请求后会处理服务的注册以及Eureka Server中的数据同步的问题. 服务注册 源码分析,看出服务注册可以认为是Eureka client自己完成,不需要服务本身来关心. Eureka Client的定时任务调用Eureka Se

Android的软件包管理服务PackageManagerService源码分析

Android系统下的apk程序都是通过名为PackageManagerService的包管理服务来管理的.PacketManagerService是安卓系统的一个重要服务,由SystemServer启动,主要实现apk程序包的解析,安装,更新,移动,卸载等服务.不管是系统apk(/system/app),还是我们手工安装上去的,系统所有的apk都是由其管理的. 以android 4.0.4的源码为例,android4.0.4/frameworks/base/services/java/com/

计划在CSDN学院推出系列视频课程《源码分析教程5部曲》

?? 计划在CSDN学院推出系列视频课程<源码分析教程5部曲> 源码分析教程5部曲之1--漫游C语言 源码分析教程5部曲之2--C标准库概览 源码分析教程5部曲之3--libevent源码分析 源码分析教程5部曲之4--memcached源码分析 源码分析教程5部曲之5--redis源码分析

Java入门系列之集合HashMap源码分析(十四)

前言 我们知道在Java 8中对于HashMap引入了红黑树从而提高操作性能,由于在上一节我们已经通过图解方式分析了红黑树原理,所以在接下来我们将更多精力投入到解析原理而不是算法本身,HashMap在Java中是使用比较频繁的键值对数据类型,所以我们非常有必要详细去分析背后的具体实现原理,无论是C#还是Java原理解析,从不打算一行行代码解释,我认为最重要的是设计思路,重要的地方可能会多啰嗦两句. HashMap原理分析 我们由浅入深,循序渐进,首先了解下在HashMap中定义的几个属性,稍后会

Java入门系列之集合Hashtable源码分析(十一)

前言 上一节我们实现了散列算法并对冲突解决我们使用了开放地址法和链地址法两种方式,本节我们来详细分析源码,看看源码中对于冲突是使用的哪一种方式以及对比我们所实现的,有哪些可以进行改造的地方. Hashtable源码分析 我们通过在控制台中实例化Hashtable并添加键值对实例代码来分析背后究竟做了哪些操作,如下: public static void main(String[] args) { Hashtable hashtable = new Hashtable(); hashtable.p

jquery2源码分析系列目录

学习jquery的源码对于提高前端的能力很有帮助,下面的系列是我在网上看到的对jquery2的源码的分析.等有时间了好好研究下.我们知道jquery2开始就不支持IE6-8了,从jquery2的源码中可以学到很多w3c新的标准( 如html5,css3,ECMAScript).原文地址是:http://www.cnblogs.com/aaronjs/p/3279314.html 关于1.x.x版的jquery源码分析系列,本博客也转载了一个地址http://www.cnblogs.com/jav

[转]jQuery源码分析系列

文章转自:jQuery源码分析系列-Aaron 版本截止到2013.8.24 jQuery官方发布最新的的2.0.3为准 附上每一章的源码注释分析 :https://github.com/JsAaron/jQuery 正在编写的书 - jQuery架构设计与实现 本人在慕课网的教程(完结) jQuery源码解析(架构与依赖模块) 64课时 jQuery源码解析(DOM与核心模块)64课时 jQuery源码分析目录(完结) jQuery源码分析系列(01) : 整体架构 jQuery源码分析系列(

Eureka 源码分析之 Eureka Client

文章首发于微信公众号<程序员果果>地址:https://mp.weixin.qq.com/s/47TUd96NMz67_PCDyvyInQ 简介 Eureka是一种基于REST(Representational State Transfer)的服务,主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移.我们将此服务称为Eureka Server.Eureka还附带了一个基于Java的客户端组件Eureka Client,它使与服务的交互变得更加容易.客户端还有一个内置的负载均