20191003 尚硅谷Spring Cloud教学视频 (3)

修改pom.xml;

<!-- Ribbon相关 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>

修改application.yml;

eureka: client: register-with-eureka: false service-url: defaultZone: :7001/eureka/,:7002/eureka/,:7003/eureka/

为RestTemplate增加@LoadBalanced注解;

@Bean @LoadBalanced//Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 public RestTemplate getRestTemplate() { return new RestTemplate(); }

主启动类添加开启Eureka客户端功能注解@EnableEurekaClient;

修改URL地址,将IP端口修改Eureka上注册的服务名称;

private static final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT";

进行测试;

Ribbon和Eureka整合后Consumer可以直接调用服务而不用再关心地址和端口号了。

32.尚硅谷_SpringCloud_Ribbon负载均衡

Ribbon在工作时分为两步:
第一步优先选择Eureka Server,它优先选择在同一个区域内负载较少的server。
第二步再根据用户指定的策略,在从Server渠道的服务注册列表中选择一个地址。
其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。

Ribbon其实就是一个软负载均衡的客户端组件,它可以和其他所需请求的客户端结合使用,和eureka结合只是其中一个实例。

33.尚硅谷_SpringCloud_Ribbon核心组件IRule

IRule: 根据特定算法从服务列表中选取一个要访问的服务

Robin内置了一些算法:

算法 功能
RoundRobinRule   轮询  
RandomRule   随机  
AvailabilityFilteringRule   会先过滤由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问  
WeightedResponseTimeRule   根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule  
RetryRule   先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务  
BestAvailableRule   会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务  
ZoneAvoidanceRule   默认规则,符合判断server所在区域的性能和server的可用性选择服务器  
34.尚硅谷_SpringCloud_自定义Ribbon的负载均衡策略(上)

自定义Ribbon规则:

主启动类添加@RibbonClient注解

@RibbonClient(name="MICROSERVICECLOUD-DEPT",configuration=MySelfRule.class)

注意细节
自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是说达不到特殊定制的目的了。

Feign 36.尚硅谷_SpringCloud_Feign是什么

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持Spring MVC标准注解和HttpMessageConverts。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易。
只需要创建一个接口,然后在上面添加注解即可。

Feign是面向接口编程

37.尚硅谷_SpringCloud_Feign工程构建

添加GAV依赖;

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>

编写接口,使用注解@FeignClient;

@FeignClient(value = "MICROSERVICECLOUD-DEPT") public interface DeptClientService { @RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET) public Dept get(@PathVariable("id") long id); @RequestMapping(value = "/dept/list", method = RequestMethod.GET) public List<Dept> list(); @RequestMapping(value = "/dept/add", method = RequestMethod.POST) public boolean add(Dept dept); }

主程序添加注解@EnableFeignClients;

使用接口编写调用代码;

Hystrix 38.尚硅谷_SpringCloud_Hystrix断路器是什么

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzysjd.html