마이크로 서비스 시나리오에서 많은 시간은 게이트웨이를 사용하는 데 필요합니다.
- 종속 등장
본원 삼대 의존성 zuul 종속 상기 구성 의존 nacos 및 (Nacos - 클라이언트 포함) nacos 서비스 디스커버리 의존
<!--Zuul依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--Nacos相关依赖-->
<!-- NacosConfig的依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!-- Nacos服务注册发现的依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
-
시작 클래스 플러스 @EnableZuulProxy 댓글
-
Nacos의 YML에 Zuul의 구성 파일
zuul:
routes:
nacos-consumer-demo:
service-id: nacos-consumer-demo
strip-prefix: true
path: /v5/**
nacos-provider-demo:
service-id: nacos-provider-demo
strip-prefix: false
path: /nacosdemo/provider/**
#忽略所有的默认路由(即禁止通过service-id访问),让所有路由配置均维护在配置文件中,以达到网关启动的时候就默认初始化好各个路由转发的负载均衡对象
ignored-services: '*'
host:
# host配置适用于routes 为url请求服务的路由方式,如果是service-id路由方式则配置ribbon
connect-timeout-millis: 6000
socket-timeout-millis: 6000
max-per-route-connections: 2000
max-total-connections: 10000
ribbon-isolation-strategy: thread
thread-pool:
use-separate-thread-pools: true
thread-pool-key-prefix: zuulgw
FormBodyWrapperFilter:
pre:
disable: true
# 开启保持原始请求参数编码
# force-original-query-string-encoding: true
# 全局配置请求头参数传递,有效防止会话丢失,即由zuul转发至对应服务处理时,会将配置的请求头一同带过去,默认值"Cookie","Set-Cookie", "Authorization"
sensitive-headers: Access-Control-Allow-Origin,Access-Control-Allow-Methods,Access-Control-Allow-Credentials
#开启重定向转链,否则服务重定向时地址变成具体服务的地址,默认false
# add-host-header: true
semaphore:
max-semaphores: 5000
proxy:
auth:
load-balanced: true
#设置ribbon超时(熔断器超时必须大于负载均衡超时时间,否则不生效)
ribbon:
#ribbon请求连接的超时时间- 限制3秒内必须请求到服务,并不限制服务处理的返回时间
ConnectTimeout: 3000
#请求处理的超时时间 下级服务响应最大时间,超出时间消费方(路由也是消费方)返回timeout
ReadTimeout: 5000
#针对某个服务设置ribbon超时
nacos-consumer-demo:
ribbon:
ConnectTimeout: 5000
ReadTimeout: 5000
#针对某个服务设置ribbon超时(同样的,如果匹配上服务,就不用默认的)
nacos-provider-demo:
ribbon:
ConnectTimeout: 5000
ReadTimeout: 5000
##该参数用来开启重试机制,默认是关闭
spring.cloud.loadbalancer.retry.enabled: true
##对所有操作请求都进行重试
#ribbon.OkToRetryOnAllOperations: true
##对当前实例的重试次数
ribbon.MaxAutoRetries: 1
##切换实例的重试次数
ribbon.MaxAutoRetriesNextServer: 1
#设置hystrix超时(Edgware版本下default配置不生效,默认超时2秒,建议hystrix超时时间>其他超时时间配置[如ribbon])
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 5000
# 针对某个服务设置hystrix超时(生效)如果匹配上了,就不会再用默认的超时
nacos-consumer-demo:
execution:
isolation:
thread:
timeoutInMilliseconds: 10000
# 针对某个服务设置hystrix超时(生效)如果匹配上了,就不会再用默认的超时
nacos-provider-demo:
execution:
isolation:
thread:
timeoutInMilliseconds: 10000
여기에 2 점을 참고 :
-
당신이 문서를 참조 할 수 사용의 스트립 접두사
" 접두사와 사용하는 방법 스트립 접두사 내부 Zuul ." -
타임 아웃 및 포유류 리본으로, 구체적인 구성은 상기 주석 게이트웨이 구성되어 시간 초과
질문 : 당신이 열려 동적 새로 고침 구성 (기본적으로 활성화) 경우 대부분의 온라인 기사 + zuul 동적 라우팅 구성 세트 등의 nacos, 당신은 할 수있다, 새로 고침 방법과 locateRoutes 방법 SimpleRouteLocator 클래스를 재정의해야하지만, 자신의 실험 후 Nacos 발견 필요없이 서비스, 과부하 구성을 다시 수동으로합니다. 를 포함하여 구성 및 제한 시간 구성을 라우팅