eureka源码分析之后的总结

eureka服务端与客户端交互分析图ss


客户端行为

  1. 客户端启动按照配置的eureka节点列表,注册自己到服务端,按照节点列表提供的服务地址轮询,注册成功为止
  2. 每30秒发送一次心跳,告诉服务端, 我还活着,I am still living
  3. 拉取服务端所有注册成功的实例列表,每30秒问一次服务端,有更新的实例么?告诉我,我本地也更新一下

服务端行为

  1. 启动时,找一下自己的临近对等节点,把所有注册实例给我一份,然后自己放到自己的注册表里
  2. 每30秒检查一下自己的注册表信息,有没有过期的节点,是否触发了自我保护,触发了则不能剔除,否则按策略随机剔除
  3. 自己处理好后,通知一下自己的伙伴【对等节点】,我这边更新了 你们也更新一下

分析过程中抓包的一些数据,可以参考一下,对于自己的理解有个很好的对比,需要配置一下代理

续约

PUT /eureka/apps/EUREKA-SERVER/10.10.11.9:8082?status=UP&lastDirtyTimestamp=1544159712387 HTTP/1.1
DiscoveryIdentity-Name	DefaultClient
DiscoveryIdentity-Version	1.4
DiscoveryIdentity-Id	10.10.11.9
Accept-Encoding	gzip
Content-Length	0
Host	10.177.14.9:28721
User-Agent	Java-EurekaClient/v1.6.2
Authorization	Basic ZGRzaHVhaToxMjM0NTY=
Connection	keep-alive

注册

POST /eureka/apps/EUREKA-SERVER HTTP/1.1
Accept-Encoding	gzip
Content-Type	application/json
Accept	application/json
DiscoveryIdentity-Name	DefaultClient
DiscoveryIdentity-Version	1.4
DiscoveryIdentity-Id	10.10.11.9
Content-Length	877
Host	10.177.14.9:28721
User-Agent	Java-EurekaClient/v1.6.2
Authorization	Basic ZGRzaHVhaToxMjM0NTY=
Connection	keep-alive

{
	"instance": {
		"instanceId": "10.10.11.9:8082",
		"hostName": "10.10.11.9",
		"app": "EUREKA-SERVER",
		"ipAddr": "10.10.11.9",
		"status": "DOWN",
		"overriddenstatus": "UNKNOWN",
		"port": {
			"$": 8082,
			"@enabled": "true"
		},
		"securePort": {
			"$": 443,
			"@enabled": "false"
		},
		"countryId": 1,
		"dataCenterInfo": {
			"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
			"name": "MyOwn"
		},
		"leaseInfo": {
			"renewalIntervalInSecs": 30,
			"durationInSecs": 90,
			"registrationTimestamp": 0,
			"lastRenewalTimestamp": 0,
			"evictionTimestamp": 0,
			"serviceUpTimestamp": 0
		},
		"metadata": {
			"@class": "java.util.Collections$EmptyMap"
		},
		"homePageUrl": "http://10.10.11.9:8082/",
		"statusPageUrl": "http://10.10.11.9:8082/info",
		"healthCheckUrl": "http://10.10.11.9:8082/health",
		"vipAddress": "eureka-server",
		"secureVipAddress": "eureka-server",
		"isCoordinatingDiscoveryServer": "false",
		"lastUpdatedTimestamp": "1544159697067",
		"lastDirtyTimestamp": "1544164155198"
	}
}

获取变更的服务列表信息

GET /eureka/apps/delta HTTP/1.1
Accept	application/json
DiscoveryIdentity-Name	DefaultClient
DiscoveryIdentity-Version	1.4
DiscoveryIdentity-Id	10.10.11.9
Accept-Encoding	gzip
Host	10.177.14.9:28721
User-Agent	Java-EurekaClient/v1.6.2
Authorization	Basic ZGRzaHVhaToxMjM0NTY=
Connection	keep-alive

{
	"applications": {
		"versions__delta": "167299",
		"apps__hashcode": "UP_20_",
		"application": []
	}
}

对等节点信息复制

POST /eureka/peerreplication/batch/ HTTP/1.1
Accept	application/json
Content-Type	application/json
DiscoveryIdentity-Name	DefaultServer
DiscoveryIdentity-Version	1.0
DiscoveryIdentity-Id	10.10.11.9
Accept-Encoding	gzip
Content-Length	1026
Host	10.177.14.9:28721
User-Agent	Java-EurekaClient-Replication/v1.6.2
Authorization	Basic ZGRzaHVhaToxMjM0NTY=
Connection	keep-alive

{
	"replicationList": [{
		"appName": "ZUUL-DEV",
		"id": "10.10.11.9:28723",
		"lastDirtyTimestamp": 1544160168179,
		"status": "UP",
		"instanceInfo": {
			"instanceId": "10.10.11.9:28723",
			"hostName": "10.10.11.9",
			"app": "ZUUL-DEV",
			"ipAddr": "10.10.11.9",
			"status": "UP",
			"overriddenstatus": "UNKNOWN",
			"port": {
				"$": 28723,
				"@enabled": "true"
			},
			"securePort": {
				"$": 443,
				"@enabled": "false"
			},
			"countryId": 1,
			"dataCenterInfo": {
				"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
				"name": "MyOwn"
			},
			"leaseInfo": {
				"renewalIntervalInSecs": 30,
				"durationInSecs": 90,
				"registrationTimestamp": 0,
				"lastRenewalTimestamp": 0,
				"evictionTimestamp": 0,
				"serviceUpTimestamp": 0
			},
			"metadata": {
				"@class": "java.util.Collections$EmptyMap"
			},
			"homePageUrl": "http://10.10.11.9:28723/",
			"statusPageUrl": "http://10.10.11.9:28723/info",
			"healthCheckUrl": "http://10.10.11.9:28723/health",
			"vipAddress": "zuul-dev",
			"secureVipAddress": "zuul-dev",
			"isCoordinatingDiscoveryServer": "false",
			"lastUpdatedTimestamp": "1544160173786",
			"lastDirtyTimestamp": "1544160168179",
			"actionType": "ADDED"
		},
		"action": "Register"
	}]
}

获取所有注册实例

GET /eureka/apps/ HTTP/1.1
Accept	application/json
DiscoveryIdentity-Name	DefaultClient
DiscoveryIdentity-Version	1.4
DiscoveryIdentity-Id	10.10.11.9
Accept-Encoding	gzip
Host	10.10.11.9:8082
User-Agent	Java-EurekaClient/v1.6.2
Authorization	Basic ZGRzaHVhaToxMjM0NTY=
Connection	keep-alive

{
	"applications": {
		"versions__delta": "1",
		"apps__hashcode": "UP_1_",
		"application": [{
			"name": "ZUUL-DEV",
			"instance": [{
				"instanceId": "10.10.11.9:28723",
				"hostName": "10.10.11.9",
				"app": "ZUUL-DEV",
				"ipAddr": "10.10.11.9",
				"status": "UP",
				"overriddenstatus": "UNKNOWN",
				"port": {
					"$": 28723,
					"@enabled": "true"
				},
				"securePort": {
					"$": 443,
					"@enabled": "false"
				},
				"countryId": 1,
				"dataCenterInfo": {
					"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
					"name": "MyOwn"
				},
				"leaseInfo": {
					"renewalIntervalInSecs": 30,
					"durationInSecs": 90,
					"registrationTimestamp": 1544160173785,
					"lastRenewalTimestamp": 1544160173785,
					"evictionTimestamp": 0,
					"serviceUpTimestamp": 1544160173786
				},
				"metadata": {
					"@class": "java.util.Collections$EmptyMap"
				},
				"homePageUrl": "http://10.10.11.9:28723/",
				"statusPageUrl": "http://10.10.11.9:28723/info",
				"healthCheckUrl": "http://10.10.11.9:28723/health",
				"vipAddress": "zuul-dev",
				"secureVipAddress": "zuul-dev",
				"isCoordinatingDiscoveryServer": "false",
				"lastUpdatedTimestamp": "1544160173786",
				"lastDirtyTimestamp": "1544160168179",
				"actionType": "ADDED"
			}]
		}]
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值