2020.8.2

前言

本人是一枚正学习就java的程序员,想通过这里来记录每天学习的知识

SpringCloud

Ribbon的作用,解决的问题:

1.负载均衡:(微服务系统必须的功能)

当只有一台的服务器时,随着访问量的增大,服务器的压力也增大,这时很容易使服务器的崩溃,这时我们可以

使用负载均衡可以将访问压力分散到多个服务器,解决高并发,解决高可用问题

其中,我了解的负载均衡的策略有:

  1. 轮询 (默认):按时间顺序注意添加

    ​ 权重 :按权重轮询分配

    ​ url-hash /ip-hash:第一访问后,第二次按url定位到访问过的服务器

    ​ fair:按后端服务器的相应时间来分配请求,响应时间短的优先

​ 1.1ribbon依赖(在eureka client中已经包含)

​ 1.2添加@LoadBlanced注解,用Ribbion封装RestTemple对象,对RestTemplate功能进行增强

@LoadBalanced//就可以使用负载均衡和重试
@Bean
public RestTemplate restTemplate(){
return new RestTempalte();
}

1.3在RibbonController中,请求的后台服务器路径,改成service-id,根据eureka地址表,可以获取这个服务器的集群主机地址列表

 restTemplate。getForObject("http://service-id/{1}",JsonResult.class,userId)
     service-id就是服务id,就是在eureka注册的服务名称,当同一个服务id有两台主机时(80018002)就可以通过ribbon的负载均衡来访问这两台主机
2.重试:容错(不是必须功能)

重试就是如果访问失败就会重试,如果访问成功就返回结果

1.添加Ribbon重试

​ 1.1设置参数:

​ MaxAutoRetries-单台服务器的重试次数

​ MaxAutoRetriesNextServer-更换服务器的次数

​ OkToRetryOnAllOperation -是否对所有类型请求都重试,默认只对get重试,设成true就是对所有请求重试,如果是post可能重复提交数据

下面两个超时设置不能再yml中配置,需要再java代码中设置

​ connectTimeOut -建立连接超时时间

​ readTimeOut-已建立连接并发送请求,等待响应的超时时间

当第一次请求失败后,30秒后可以自动发起重试请求

Hystrix

是一个容错工具

Hystrix提供的容错功能:

1.降级

2.熔断

降级:

当调用后台服务失败,或超时,可以向客户端返回降级结果。即是提供一种快速失败的方式,

快速失败:

就是客户端不必长时间阻塞等待后台服务,超时后可以获德反馈。

防止雪崩,防止错误传播

熔断:

熔断就像家里的电箱,有一个总闸,如果访问量 过大,触发熔断,家里面的电路就会被断开。

当系统访问量过大,出现大量的失败情况时,会触发熔断,断路器打开,所有的请求直接执行降级代码返回降级结果。

触发熔断的条件:

1.10秒内20请求(必须首先满足,如10秒18次100%请求失败,但是不满足前提条件,不会触发熔断)

2.50%失败,执行了降级的代码

添加Hystrix降级

1.hystrix依赖

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

2.添加主程序注解,启动hystrix断路器,触发断路器自动配置

//@EnableCircuitBreaker//启动hystrix断路器的主程序注解
//@EnableDiscoveryClient//新版本可以不加
//@SpringBootApplication
@SpringCloudApplication//可以代替以上三个注解

3.添加降级代码

​ 3.1远程调用方法上,添加注解:

​ 3.2实现降级方法:

即是当方法不执行时或执行报错,就降级执行fallbackMethod指定的方法
@HystrixCommand(fallbackMethod = "addOrderFB")
@GetMapping("/order-service/")
public JsonResult addOrder() {}   

//--------fallbackMethod指定的方法------------//
public JsonResult addOrderFB() {
		return JsonResult.err("添加订单失败");
}

​ 4.hystrix超时时间默认是1秒,一般设置应该大于ribbon的最大时长

hystrix dashboard

hystrix 仪表盘,对hystrix出现错误的情况进行监控

actuator:是springboot提供的一个项目监控工具,可以监控项目的各种运行数据,hystrix利用actuater,可以添加hystrix的监控数据

添加actuator:

1.actuator依赖

2.暴露监控数据

3.只有ping没有出来一大坨的数据,这时候需要去访问监控业务的路径

搭建仪表盘项目

hystrix仪表盘是一个完全独立的项目,启动后,需要再他的额界面上指点监控数据的路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值