マイクロサービスのシナリオでは、多くの時間は、ゲートウェイを使用する必要があります。
- 依存の紹介
本明細書に組み込まれる三の大依存、zuul依存し、設定に依存ナコスと(ナコスクライアントが含まれています)ナコスサービス検出を依存しています
<!--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コメント
-
ナコス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ダイナミックルーティングの設定セットなどのナコスあり、あなたがすることができ、リフレッシュ方法とlocateRoutes方法SimpleRouteLocatorのクラスをオーバーライドする必要がありますが、自分自身の実験の後とナコスを見つけました手動でサービスを再起動する必要がなく、構成がオーバーロードされます。ルーティングの設定およびタイムアウト設定など