Eureka服务端
本部分主要是对Eureka内部数据结构的维护与集群复制的分析,相比于其它源码分析类文章,本文更像是实验过程,而不是粘一堆代码后得出结论。
搭建环境
配置单机版Host
编辑本机的Hosts(/etc/hosts)
127.0.0.1 peer1
127.0.0.1 peer2
127.0.0.1 peer3
搭建测试环境
配置如下配置属性,详见High Availability, Zones and Regions,注意defaultZone
在Server侧需要写全,在Client侧可以写部分,否则没写的不会收到心跳信息,导致Server报错"Renews threshold"
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8081/eureka/,http://peer2:8082/eureka/,http://peer3:8083/eureka/
instance:
appname: eureka-server
---
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
instance-id: peer-id1
server:
port: 8081
---
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
instance-id: peer-id2
server:
port: 8082
---
spring:
profiles: peer3
eureka:
instance:
hostname: peer3
instance-id: peer-id3
server:
port: 8083
然后再加入@EnableEurekaServer
注解,就完成搭建一个Server了,依此启动这三个profile的SpringBoot程序
如果搭建成功,应该可以发现下面三个地址可以访问了
http://localhost:8081/
http://localhost:8082/
http://localhost:8083/
在启动过程中,不断刷新如下地址,可以发现apps__hashcode
会不断更新
http://localhost:8081/eureka/apps
执行分析
打开Wireshark,分析localhost网卡,进行如下过滤
# 发送与接收
http&&(tcp.port==8081 || tcp.port==8082 || tcp.port==8083)
# 接收
http&&(tcp.dstport==8081 || tcp.dstport==8082 || tcp.dstport==8083)