SpringCloud--04、Eureka集群
Eureka架构中的三个核心角色:
- 服务注册中心
Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo
- 服务提供者
提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,
只要对外提供的是Rest风格服务即可。本例中就是我们实现的user-service
- 服务消费者
消费应用从注册中心获取服务列表,从而得知每个服务方的信息,知道去哪里调用服务方。
本例中就是我们实现的consumer-demo
我们假设要搭建三台EurekaServer的集群,端口分别为:10086 10087 10088
服务同步:
多个Eureka Server之间也会互相注册为服务,当服务提供者注册到Eureka Server集群中的某个节点时,
该节点会把服务的信息同步给集群中的每个节点,从而实现数据同步
1、修改EurekaServer配置application.yml
server:
port: 10087 # 端口
spring:
application:
name: eureka-server # 应用名称,会在Eureka中显示
eureka:
client:
register-with-eureka: true # 是否注册自己的信息到EurekaServer,默认是true
fetch-registry: true # 是否拉取其它服务的信息,默认是true
service-url: # EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址。
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10088/eureka
2、相同的方法分别添加另个二台Eureka服务器 127.0.0.1:10088/10086
分别启动三台Eureka服务、这样集群就搭好了。
3、客户端注册服务到集群
eureka:
client:
service-url: # EurekaServer地址
defaultZone: http://127.0.0.1:10086/eureka,http://127.0.0.1:10087/eureka,http://127.0.0.1:10088/eureka
4、服务提供者续约、user-service加入配置
服务注册、服务续约(服务提供者会维持一个心跳)
eureka:
instance:
lease-expiration-duration-in-seconds: 90 #服务续约(renew)的间隔,默认为30秒
lease-renewal-interval-in-seconds: 30 #服务失效时间,默认值90秒
5、服务消费者:
获取服务列表:
当服务消费者启动时,会检测eureka.client.fetch-registry=true参数的值,如果为true,
则会从Eureka Server服务的列表只读备份,然后缓存在本地。并且每隔30秒会重新获取并更新数据。
我们可以通过下面的参数来修改:
eureka:
client:
registry-fetch-interval-seconds: 5 # 获取服务列表的周期:5s
6、失效剔除和自我保护
Eureka Server需要将这样的服务剔除出服务列表。它会开启一个定时任务,每隔60秒对所有失效的服务(超过90秒未响应)进行剔除。
修改Eureka 配置文件application.yml
eureka:
server:
enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)
还没有评论,来说两句吧...