SpringCloud(1)Eureka服务治理:注册中心的集群
Eureka 服务中心:
第一个服务中心配置文件:
#服务注册中心端口
server:
port: 8898
#eureka的唯一标识
eureka:
instance:
hostname: eureka1
#契约时间90s
lease-expiration-duration-in-seconds: 90
#每隔30s续约一次
lease-renewal-interval-in-seconds: 30
client:
service-url:
defaultZone: http://localhost:8877/eureka/
#每隔30s重新拉取一次服务列表
registry-fetch-interval-seconds: 30
server:
enable-self-preservation: false
spring:
application:
name: eureka-server
第二个服务中心配置文件:
#服务注册中心端口
server:
port: 8877
#eureka的唯一标识
eureka:
instance:
hostname: eureka2
#契约时间90s
lease-expiration-duration-in-seconds: 90
#每隔30s续约一次
lease-renewal-interval-in-seconds: 30
client:
service-url:
defaultZone: http://localhost:8898/eureka/
#每隔30s重新拉取一次服务列表
registry-fetch-interval-seconds: 30
server:
enable-self-preservation: false
spring:
application:
name: eureka-server
其实就是两个服务交叉注册,我这里启动的时候都会报错,个人理解(服务中心两个A和B,A启动的时候需要去B注册,B启动的时候需要去A注册,这样的话无论怎么启动都会有问题),不过这个报错并不会影响服务挂掉,等到两个服务都起来就ok了
这里是 EurekaClientConfigBean 的源码,在这里可以看到如果defaultZone参数不写是有默认值的。
注意:
service-url:
defaultZone: http://localhost:8877/eureka/
这是一个map:因为eureka是支持集群的
服务提供者的配置:
server:
port: 8891
spring:
application:
name: hello-server
eureka:
client:
service-url:
defaultZone: http://localhost:8877/eureka/,http://localhost:8898/eureka/
服务提供者只需要讲两个服务中心的url都添加进去就好了以逗号分隔!
这里的服务消费者不是直接去访问服务注册中心,服务注册中心只是维护一份服务列表,服务消费者从服务注册中心中获取一份有效的服务列表,然后通过负载均衡算法去访问一个服务提供者(图中的服务提供者只有一个,但是实际上可以是一组服务器 ---集群)。
服务提供者有可能有的会挂掉或者说没有续约之类的,那么服务列表就需要更新,不然消费者拿到的列表中会有失效的服务
这个配置是指,90s内不来续约就视为签约结束
lease-expiration-duration-in-seconds: 90
这个是指每隔30s来续约一次
lease-renewal-interval-in-seconds: 30
每隔30s从新拉取一次服务列表
registry-fetch-interval-seconds: 30
这些配置一般默认即可