03.3 Eureka集群实战

Eureka集群实战记录

1. Eureka集群原理

上图是来自eureka的官方架构图

基于集群配置的eureka

  • 处于不同节点的eureka通过Replicate进行数据同步
  • Application Service为服务提供者
  • Application Client为服务消费者
  • Make Remote Call完成一次服务调用

服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。
当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。
服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。

2. 修改hosts文件

为了方便分辨不同的结点,在host文件中定义不同的域名来表示,可以手动修改hosts文件,但是并不推荐.
推荐使用SwitchHosts工具(感兴趣的朋友这里下载:https://u20964900.pipipan.com/dir/20964900-35317200-59ca11)
hosts文件中增加:

1
2
3
4
#尚硅谷springcloud教程
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com

3. 组成集群

3.1 新建工程

新建microservicecloud-eureka-7002和microservicecloud-eureka-7003,也可以直接复制7001工程.

3.2 父工程pom.xml

增加如下内容:

1
2
<module>microservicecloud-eureka-7002</module>
<module>microservicecloud-eureka-7003</module>

3.3 三个子工程的yml配置修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port: 7001
eureka:
instance:
# eureka服务端的实例名称
hostname: eureka7001.com
client:
# #false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
# #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port: 7002
eureka:
instance:
# eureka服务端的实例名称
hostname: eureka7002.com
client:
# #false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
# #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server:
port: 7003
eureka:
instance:
# eureka服务端的实例名称
hostname: eureka7003.com
client:
# #false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
# #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/

4. 修改provider yml文件配置

由原来的单节点修改为集群模式

1
2
3
4
5
6
7
8
9
10
11
eureka:
client:
# 客户端注册进eureka服务列表内
service-url:
# defaultZone: http://localhost:7001/eureka
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
# 自定义服务名称信息
instance-id: microservicecloud-dept8001
# 访问路径可以显示IP地址
prefer-ip-address: true

5. 验证

分别启动eureka7001/7002/7003,然后启动provider8001
下图表示集群启动成功,并且成功注册上provider8001服务

资源获取

公众号回复 : Eureka集群实战 获取本节代码

公众号回复 : SpringCloud思维导图

Tips

欢迎收藏和转发,感谢你的支持!(๑•̀ㅂ•́)و✧

欢迎关注我:后端小哥,专注后端开发,希望和你一起进步!