RestTemplate
RestTemplate 是 spring 提供给我们的微服务http rest 远程调用组件, 可以这么使用
@Bean @LoadBalanced //使用@LoadBalanced注解赋予RestTemplate负载均衡的能力 public RestTemplate restTemplate(){ return new RestTemplate(); } restTemplate.postForObject( "http://CLOUD-PAYMENT-SERVICE/"+ "/payment/create" ,payment,CommonResult.class ); restTemplate .getForObject( "http://CLOUD-PAYMENT-SERVICE/" + "/payment/get/" +id, CommonResult. class , id);
加入 @LoadBalanced 这个注解后 RestTemplate 可以直接和我们注册中介结合, 使用 服务名称 调用服务并且有负载均衡的能力, 在没有加入LoadBalanced 注解的时候是无法和注册中心结合的;
@EnableDiscoveryClient
spring 定义的 必须放入spring boot 主启动类, 表示这是一个注册中心的客户端, 像 Eureka 、consul、zookeeper 都实现了这个注解客户端@EnableEurekaClient = EnableDiscoveryClient
Ribbon
他可以实现我们的在客户端的负载均衡策略, eureka , consul, zookeeper, 客户端都默认 引入 了 Ribbon 在使用 RestTemplate @ LoadBalanced 注解的时候这个时候也就开启了负载均衡策略, 有很多这里就不多说了, 默认策略是轮询策略,
public IRule ribbonRule() { return new RandomRule();//这里配置策略,和配置文件对应 }
@EnableFeignClients
Feign默认的情况下会集成 Ribbon @EnableFeignClients 是开启Feign客户端代理, 它对 Ribbon 进行了一次包装, 让我们调用Http rest 接口像调用 RPC框架一样简单方便
Hystrix
对服务的 降级 -> 熔断 -> 限流
- 降级: 举例来说以前比如查询查出100条记录, 现在服务无法访问了(超时 …) 我们可以吧数据查询10条给 用户 或者返回一个错误页面 及降低服务的能力
- 熔断: 在 客户端调用服务端多次无法返回正常数据的时候 吧这个服务剔除调用其他服务, 为什么这么做, 如果服务已经达到 了极限 我们客户端一直调用 那么会导致这个服务卡死, 或者数据库等奔溃 , 所以需要熔断;
- 限流: 对每个服务进行限流超过浏览 直接返回异常, 或者排队