springCloud Ribbon(负载均衡器) Feign Hystrix熔断器 学习笔记

***springCloud***是一系列框架的有序集合。它利用spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
个人理解:springCloud的底层依赖与spring Boot ,springCloud是分布式项目的解决方案。类似与dubbo
Ribbon实现远程调用和负载均衡功能
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
主启动类  在这里插入图片描述
Feign声明式调用
Feign是一个声明性的web服务客户端,它使编写web服务客户机变得更容易。使用Feign创建接口并对其进行注释,就可以通过该接口调用生产者提供的服务。Spring Cloud对Feign进行了增强,使得Feign支持了Spring MVC注解
两点:1、Feign采用的是接口加注解;
2、Feign 整合了ribbon
相关依赖
在这里插入图片描述
编写application.yml
spring:
application:
name: ConsumerUserFeign
server:
port: 7000
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true #使用ip地址注册服务
编写启动类ConsumerUserFeignStart
@SpringBootApplication
@EnableDiscoveryClient //打开eureka客户端
@EnableFeignClients //开启Feign功能
public class ConsumerUserFeignStart {

public static void main(String[] args) {
    SpringApplication.run(ConsumerUserFeignStart.class);
}

}
Feign方式进行远程调用,新建MovieServiceFeign接口
在这里插入图片描述
修改UserService 代码
在这里插入图片描述
Hystrix服务熔断 在我看来,hystrix熔断是一种保险措施吧,在服务器挂掉时返回程序员想让使用者看到的内容
使用Ribbon+Hystrix组合:consumer-user
引入Hystrix
< 引入hystrix进行服务熔断 -->

org.springframework.cloud
spring-cloud-starter-netflix-hystrix

主启动类中添加打开熔断注解
在这里插入图片描述
@HystrixCommand(fallbackMethod=“xxx”)来指定出错时调用xx方法
在这里插入图片描述
在本类编写buyMovieFallbackMethod方法,方法的参数、返回值和原来一样即可
public Map<String,Object> buyMovieFallbackMethod(Integer id){
User user = new User();
user.setId(-1);
user.setUserName(“未知用户”);
Movie movie = new Movie();
movie.setId(-100);
movie.setMovieName(“无此电影”);
Map<String,Object> result = new HashMap<>();
result.put(“user”,user);
result.put(“movice”,movie);
return result;
}
熔断器原理 yuzhi(阈值)

在这里插入图片描述
服务的健康状况 = 请求失败数 / 请求总数,
熔断器实际上是一个简单的有限状态机(Finite State Machine)
1.请求错误率达到某一阈值,熔断器全开,产生熔断(熔断期间会对所有请求采用降级处理)
2.到熔断时间窗口之后,熔断器会进入半开状态,此时hystrix会放过1个试验性请求
3.如果该试验性请求成功,熔断器进入关闭状态
4.如果该试验性请求失败,熔断器重新进入全开状态
使用Feign+Hystrix组合:consumer-user-feign
引入Hystrix
<!- 引入hystrix进行服务熔断 -->

org.springframework.cloud
spring-cloud-starter-netflix-hystrix

修改application.yml,开启Feign对Hystrix支持
开启Feign的熔断功能
feign:
hystrix:
enabled: true
开启断路保护功能@EnableCircuitBreaker
在这里插入图片描述
修改MovieServiceFeign,Feign已经集成了Hystrix,使用起来非常简单@FeignClient(name=“provider-user”,fallback=“异常处理类”)
在这里插入图片描述
allback="异常处理类"指定的异常处理类实现这个类的接口即可,并且放在容器中,需要增加@Component注解
@Component
public class MovieFeignExceptionHandlerService implements MovieServiceFeign {
/**
* 远程这个方法调用出问题就会调用此方法
*/
@Override
public Movie getNewMovie() {
Movie movie = new Movie();
movie.setId(-100);
movie.setMovieName(“无此电影呀…”);
return movie;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值