使用到的组件介绍
spring-cloud全家桶
- Eureka:服务治理组件,包含服务注册中心,服务注册与发现机制的实现。(服务治理,服务注册/发现)
- Zuul:网关组件,提供智能路由,访问过滤功能
- Ribbon:客户端负载均衡的服务调用组件(客户端负载)
- Feign:服务调用,给予Ribbon和Hystrix的声明式服务调用组件 (声明式服务调用)
- Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力。(熔断、断路器,容错)
pom依赖说明
spring-cloud-starter-netflix-eureka-server
EurekaServer-服务注册中心依赖,Eureka Discovery-服务提供方和服务消费方。因为,对于eureka来说:服务提供方和服务消费方都属于客户端
spring-cloud-dependencie
总体依赖
spring-cloud-starter-netflix-eureka-client
客户端
注解文件说明
@SpringBootApplication//springboot启动类
@EnableEurekaServer // 声明当前springboot应用是一个eureka服务中心
@EnableDiscoveryClient//开启Eureka客户端功能
配置说明
应用名称,会在Eureka中显示
对于服务端来说的意义;;;对于客户端来说的意义# 应用名称,注册到eureka后的服务名称
spring.application.name=eureka-server
EurekaServer的地址,现在是自己的地址,如果是集群,需要加上其它Server的地址
eureka.client.service-url.defaultZone=http://127.0.0.1:${server.port}/eureka
客户端注册到服务端的地址,如果是集群就写多个
eureka.client.service-url.defaultZone=http://127.0.0.1:10086/eureka
服务提供者配置:服务失效时间,默认值90秒
eureka.instance.lease-expiration-duration-in-seconds=90
服务提供者配置:服务续约(renew)的间隔,默认为30秒
eureka.instance.lease-renewal-interval-in-seconds=30
服务消费者配置:获取服务列表,默认为30秒
eureka.client.registry-fetch-interval-seconds=5
注册中心配置:失效剔除,开出那些死掉的服务,扫描失效服务的间隔时间(缺省为60*1000ms)
eureka.server.eviction-interval-timer-in-ms=1000
注册中心配置:关闭自我保护模式(缺省为打开)
eureka.server.enable-self-preservation=false
服务消费者设置ribbon负载均衡的策略
service-provider.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
原生ribbon的用法
@Bean
@LoadBalanced
public RestTemplate restTemplate() {return new RestTemplate();
}
String baseUrl = "http://service-provider/user/" + id;User user = this.restTemplate.getForObject(baseUrl, User.class);
原理:LoadBalancerInterceptor会拦截RestTemplate
负载均衡的策略配置:
封装在这几个实现类里面,可以通过配置改变service-provider.ribbon.NFLoadBalancerRuleClassName