Eureka简介
Eureka 是一个基于REST风格的服务注册与发现组件。
设计方案
通常我们的注册中心服务只有一个,如果当前的这个注册中心挂了,那整个系统是不是就都出问题了,那我们是不是可以多创建几个注册中心服务,防止其中如果一个服务挂了,那你还可以去另一个注册中心里面去注册,就不会对系统造成影响。
方案验证
安装双注册中心
- eureka1的配置文件
spring:
application:
name: eureka1
server:
port: 8761
eureka:
instance:
prefer-ip-address: true
client:
# 是否将自己注册到Eureka,默认为true。如果是单注册中心的话需改为false,多注册中心相互注册,设为true
registerWithEureka: true
# 是否从注册中心获取注册信息,多注册中心,设为true
fetchRegistry: true
# 设置为其他注册中心的url
service-url:
defaultZone: http://localhost:8762/eureka
- eureka2的配置文件
spring:
application:
name: eureka2
server:
port: 8762
eureka:
instance:
prefer-ip-address: true
client:
# 是否将自己注册到Eureka,默认为true。如果是单注册中心的话需改为false,多注册中心相互注册,设为true
registerWithEureka: true
# 是否从注册中心获取注册信息,多注册中心,设为true
fetchRegistry: true
# 设置为其他注册中心的url
service-url:
defaultZone: http://localhost:8761/eureka
- 结果验证,启动2个服务,查看服务中心的注册信息:
高可用验证
- 启动一个client服务,只向单个注册中心注册,查看是否2个注册中心都有注册信息
- client的配置信息
server:
port: 8001
spring:
application:
name: client1
eureka:
instance:
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
- 结果显示
- 启动一个client服务,向2个注册中心注册,查看是否2个注册中心都有注册信息
- client的配置信息
server:
port: 8002
spring:
application:
name: client2
eureka:
instance:
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
- 结果显示
- 停掉eureka1,在eureka2中依然可以发现client2
=》问题:依然可以看到CLIENT1、EUREKA2
- 在client中添加业务,测试功能
- 使用openfeign相互访问业务接口,能够正常访问
- 当掉线一个注册中心后,也能够正常访问
过程问题
-
注册中心显示:EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.=》blog.csdn.net/u012373281/…
-
Openfeign报错:Load balancer does not have available server for client=》之前我是新建一个maven project,再建module;后改为新建一个empty project,问题没有了。