路由器和过滤器:Zuul
路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。
Netflix使用Zuul进行以下操作:
- 认证
- 洞察
- 压力测试
- 金丝雀测试
- 动态路由
- 服务迁移
- 负载脱落
- 安全
- 静态响应处理
- 主动/主动流量管理
1、引入依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
2、程序启动类中添加@EnableZuulProxy 注解
@@EnableZuulProxy 注解中包含了服务注册和熔断机制的注解
3、 这时候启动程序后,可以同zuul 代理的端口访问被注册的服务
例如:
http://192.168.1.107:8089/eureka-client/show/001
可以通过zuul 服务器地址加服务名(eureka-client)的方式调用
zuul 参数配置
1、对于特定的服务,我们可以指定服务标识,去调用指定的服务
zuul:
ignoredServices: '*'
routes:
eureka-client: /ec/**
上述方式我们可以同过/ec 标识调用eureka-client客户端
ignoredServices: ‘*’ : 在此示例中,除 “用户” 之外,所有服务都被忽略
忽略单个,可以加单个的服务名
2、我们还可以通过serviceId和指定路径,来对服务进行细粒度的绑定
zuul:
routes:
ecmark:
path: /ec/**
serviceId: eureka-client
ecmark : 只代表一个名字,没有实际意义
path为 ant样式模式,所以“/ ec/ *”只匹配一个级别,比如/ec/show
但“/ ec / **”分层匹配, 例/ec/show/001
3、 我们也可以通过URL 方式来指定服务
zuul:
routes:
ecmark:
path: /ec/**
url: http://192.168.1.107:8083/
4、通过Zuul上传文件
如果您@EnableZuulProxy您可以使用代理路径上传文件,只要文件很小,它就应该工作。对于大文件,有一个替代路径绕过“/ zuul / ”中的Spring DispatcherServlet(以避免多部分处理)。也就是说,如果zuul.routes.customers=/customers/*则可以将大文件发送到“/ zuul / customers / *”。servlet路径通过zuul.servletPath进行外部化。如果代理路由引导您通过Ribbon负载均衡器,例如,超大文件也将需要提升超时设置
application.yml
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000
ribbon:
ConnectTimeout: 3000
ReadTimeout: 60000