0%

GateWay简介

由于zuul升级为zuul2时,netflix公司内部出现了分歧,所以springcloud自己研发了一套网关gateway,提供一种简单有效的方式来对API进行路由,以及提供一些强大的过滤器功能,如:熔断、限流、重试等,基于WebFlux框架实现的,底层使用了高性能的Reactor模式通信框架Netty

特性

  • 基于spring5和springboot2构建
  • 动态路由:能够匹配任何请求属性
  • 可以对路由指定断言和过滤器
  • 集成Hystrix断路器功能
  • 集成springcloud服务发现功能
  • 请求限流
  • 支持路径重写
阅读全文 »

新版本Hystrix服务监控

将springcloud由D版本升级到F版本,是一个大版本的跃升,由 1.X升级到了2.X,所以改动量还是挺大的

依赖

1
2
3
4
 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

启动类配置

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableHystrixDashboard // 开启hystrix监控面板
public class HystrixDashBoardApp {

public static void main(String[] args) {
SpringApplication.run(HystrixDashBoardApp.class,args);
}
}
阅读全文 »

Hystrix配置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@HystrixCommand(groupKey="UserGroup", commandKey = "GetUserByIdCommand",
commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "100"),//指定多久超时,单位毫秒。超时进fallback
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),//判断熔断的最少请求数,默认是10;只有在一个统计窗口内处理的请求数量达到这个阈值,才会进行熔断与否的判断
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "10"),//判断熔断的阈值,默认值50,表示在一个统计窗口内有50%的请求处理失败,会触发熔断
},
threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "30"),
@HystrixProperty(name = "maxQueueSize", value = "101"),
@HystrixProperty(name = "keepAliveTimeMinutes", value = "2"),
@HystrixProperty(name = "queueSizeRejectionThreshold", value = "15"),
@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "12"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "1440")
})
  • groupKey group标识,一个group使用一个线程池
  • commandKey command标识,当前执行方法名
  • threadPoolKey
  • fallbackMethod fallback方法名,两者需要返回值和参数列表相同
  • ignoreExceptions
  • observableExecutionMode
  • raiseHystrixExceptions
  • defaultFallback

commandProperties参数

HystrixCommandProperties

阅读全文 »

OpenFeign超时

openFeign默认超时时间是1s,如果超时则会报错feign.RetryableException: Read timed out executing GET http://SPRINGCLOUD2-PROVIDER/timeout

设置超时

由于OpenFeign是整合的ribbon进行的负载均衡,所以使用ribbon进行配置超时时间即可

1
2
3
4
# 设置openFeign超时时间
ribbon:
ReadTimeout: 5000 # 读取可用资源时间
ConnectTimeout: 5000 # 建立连接时间

OpenFeign日志打印

OpenFeign提供了日志打印功能,可以配置不同级别的日志级别

1
2
3
4
5
6
7
8
9
10
public enum Level {
//默认,不显示任何日志
NONE,
//仅记录请求方法、url、响应状态码及执行时间
BASIC,
//除记录BASIC信息外,还记录请求头和响应头
HEADERS,
// 除了HEADERS信息外,还有请求和响应正文以及元数据
FULL
}
阅读全文 »