Spring Cloud zuul网关服务 一
上一篇进行Netflix Zuul 1.0 与 gateway的对比。今天来介绍一下 zuul的搭建及应用
Zuul 工程创建
工程创建 cloud-gateway-zuul。还是基于之前的工程
pom文件导入
<parent>
<artifactId>spring-cloud-alibaba-basis</artifactId>
<groupId>com.xian.cloud</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-gateway-zuul</artifactId>
<name>网关服务zuul</name>
<dependencies>
<!-- 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
</dependency>
<!-- fengin 支持 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- zuul -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
创建GatewayZuulApplication启动类
package com.xian.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* <Description>
*
* @author xianliru@100tal.com
* @version 1.0
* @createDate 2019/10/29 10:52
*/
@EnableZuulProxy
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class GatewayZuulApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayZuulApplication.class,args);
}
}
创建 bootstrap.yml
spring:
profiles:
active: dev
application:
name: gateway-zuul-server
cloud:
nacos:
config:
server-addr: 47.99.209.72:8848
file-extension: yaml
zuul:
host:
# 目标主机的最大连接数,默认值为200
max-total-connections: 1000
# 每个主机的初始连接数,默认值为20
max-per-route-connections: 200
routes:
discovery-server:
path: /server/**
serviceId: cloud-discovery-server
client-common:
path: /client/**
serviceId: cloud-discovery-client
sensitiveHeaders: X-ABC,Authorization
# 所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)为SEMAPHORE。如果此隔离模式是首选,则zuul.ribbonIsolationStrategy可以更改为THREAD
ribbon-isolation-strategy: thread
# 这个属性意思,指定忽略的服务列表 * 代表忽略所有服务
ignored-services: '*'
# 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务
sensitive-headers: X-ABC
ribbon:
eager-load:
# 强制加载,不设置会进行懒加载。spring 第一次请求会非常慢
enabled: true
```
#### 参数
- zuul.host.max-total-connections 目标主机的最大连接数。
- zuul.host.max-per-route-connections 每个主机的初始连接数。
这个俩个参数是zuul的优化后的属性值,如果想有适合的配置,还需要根据业务情况而定
因为我们有俩个业务服务 一个服务提供者 一个是服务消费者我们配置俩个服务的分别路由 discovery-server、client-common
- path 是请求路径匹配规则
- serviceId 是我们服务的spring.application.name 对应的值。
- sensitiveHeaders 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务这个字段可以是全局设置也可以是单个服务配置。
- ribbon-isolation-strategy 所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)为SEMAPHORE。如果此隔离模式是首选,则zuul.ribbonIsolationStrategy可以更改为THREAD
- ignored-services 忽略所有微服务,只路由指定的微服务。
- ribbon.eager-load.enabled true 强制加载 false 默认懒加载
- true日志打印效果 false 将不打印这段日志
```
2019-10-29 23:47:11.377 INFO 61396 --- [ main] c.netflix.loadbalancer.BaseLoadBalancer : Client: cloud-discovery-server instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-server,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2019-10-29 23:47:11.382 INFO 61396 --- [ main] c.n.l.DynamicServerListLoadBalancer : Using serverListUpdater PollingServerListUpdater
2019-10-29 23:47:11.450 INFO 61396 --- [ main] c.netflix.config.ChainedDynamicProperty : Flipping property: cloud-discovery-server.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2019-10-29 23:47:11.452 INFO 61396 --- [ main] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client cloud-discovery-server initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-server,current list of Servers=[192.168.3.6:9012],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;]
},Server stats: [[Server:192.168.3.6:9012; Zone:UNKNOWN; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 08:00:00 CST 1970; First connection made: Thu Jan 01 08:00:00 CST 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]
]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@33e4b9c4
2019-10-29 23:47:11.576 INFO 61396 --- [ main] c.netflix.config.ChainedDynamicProperty : Flipping property: cloud-discovery-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2019-10-29 23:47:11.577 INFO 61396 --- [ main] c.netflix.loadbalancer.BaseLoadBalancer : Client: cloud-discovery-client instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-client,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2019-10-29 23:47:11.578 INFO 61396 --- [ main] c.n.l.DynamicServerListLoadBalancer : Using serverListUpdater PollingServerListUpdater
2019-10-29 23:47:11.639 INFO 61396 --- [ main] c.netflix.config.ChainedDynamicProperty : Flipping property: cloud-discovery-client.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647
2019-10-29 23:47:11.640 INFO 61396 --- [ main] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client cloud-discovery-client initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-discovery-client,current list of Servers=[192.168.3.6:9011],Load balancer stats=Zone stats: {unknown=[Zone:unknown; Instance count:1; Active connections count: 0; Circuit breaker tripped count: 0; Active connections per server: 0.0;]
},Server stats: [[Server:192.168.3.6:9011; Zone:UNKNOWN; Total Requests:0; Successive connection failure:0; Total blackout seconds:0; Last connection made:Thu Jan 01 08:00:00 CST 1970; First connection made: Thu Jan 01 08:00:00 CST 1970; Active Connections:0; total failure count in last (1000) msecs:0; average resp time:0.0; 90 percentile resp time:0.0; 95 percentile resp time:0.0; min resp time:0.0; max resp time:0.0; stddev resp time:0.0]
]}ServerList:com.alibaba.cloud.nacos.ribbon.NacosServerList@256589a1
```
将三个服务全部启动。服务提供者和服务消费者还有zuul 服务
在控制台 输入命令 curl http://localhost:9083/client/client/test
![file](https://img2018.cnblogs.com/blog/1848187/201910/1848187-20191030000449991-1087392078.png)
我们看到打印效果,请求通过网关服务成功转发到了我们的下游服务上。并返回
- ribbon-isolation-strategy
- ignored-services
- sensitiveHeaders
以上几个参数、还有zuul服务的路由拦截器的使用,将在下一篇讲解。
如何喜欢可以关注分享本公众号。
![file](https://img2018.cnblogs.com/blog/1848187/201910/1848187-20191030000450266-1926562552.png)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。转载请附带公众号二维码
Spring Cloud zuul网关服务 一的更多相关文章
- Spring Cloud Zuul 网关服务的fallback
当我们的zuul进行路由分发时,如果后端服务没有启动,或者调用超时,这时候我们希望Zuul提供一种降级功能,而不是将异常暴露出来. Spring cloud zuul提供这种降级功能,操作步骤如下: ...
- Spring Cloud gateway 网关服务二 断言、过滤器
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- Spring Cloud Zuul API服务网关之请求路由
目录 一.Zuul 介绍 二.构建Spring Cloud Zuul网关 构建网关 请求路由 请求过滤 三.路由详解 一.Zuul 介绍 通过前几篇文章的介绍,我们了解了Spring Cloud ...
- 创建swagger的springboot-stater,并在spring cloud zuul网关中引入
Swagger 是一款RESTFUL接口的.基于YAML.JSON语言的文档在线自动生成.代码自动生成的工具. 通过在controller中添加注解,即可轻易实现代码文档化. Swagger提供ui界 ...
- Spring cloud Zuul网关异常处理
Spring cloud Zuul网关异常处理 一 异常测试: 1> 创建一个pre类型的过滤器,并在该过滤器的run方法实现中抛出一个异常.比如下面的实现,在run方法中调用的doSometh ...
- Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
API 网关的出现的原因是微服务架构的出现,不同的微服务一般会有不同的服务地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题: 客户端会 ...
- Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。
时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...
- Spring Cloud 2-Zuul 网关服务(六)
Spring Cloud Zuul 1.pom.xml 2.application.yml Application.java 1.pom.xml <!-- zuul 网关服务 --> ...
- Spring Cloud gateway 网关服务 一
之前我们介绍了 zuul网关服务,今天聊聊spring cloud gateway 作为spring cloud的亲儿子网关服务.很多的想法都是参照zuul,为了考虑zuul 迁移到gateway 提 ...
随机推荐
- Postman工具使用-接口测试(实战一)
写在前面,本文首发[简书]https://www.jianshu.com/p/c188624c3580 作为一名测试人员,要去思考一下,如何能按需完成任务,又能轻松解决问题,这就很重要了!!! 凡事皆 ...
- C# https证书通信Post/Get(解决做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题)
public static string HttpPost(string url, string param = null) { HttpWebRequest request; //如果是发送HTTP ...
- Java行业未来发展
互联网时代的飞速发展,为机械,自动化,等传统行业敲响了警钟,曾经火爆一时的行业逐渐没落,曾经网上有个段子,一个人在20多年前,看BP机卖的如火如荼,自己一想,那么多人都在用,总会有坏的时候吧,然后去技 ...
- Python学习笔记整理总结【ORM(SQLAlchemy)】
一.介绍SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执 ...
- Spring 梳理 - ContentNegotiatingViewResolver
ContentNegotiatingViewResolver,这个视图解析器允许你用同样的内容数据来呈现不同的view.它支持如下面描述的三种方式: 1)使用扩展名http://localhost:8 ...
- 认识MongoDB复制集
从这一篇开始,我们要踏上MongoDB进阶之路啦,想想还有点小开心呢.一筐猪镇楼. 引入复制集 我们先来想一个场景,如果本地项目使用MongoDB,都是下载,安装,连接一条龙服务.这实际也就是 ...
- Winows 2008远程桌面访问多用户设置
一张图
- JavaScript 面向对象编程 · 理解对象
前言: 在我们深入 面向对象编程之前 ,让我们先理解一下Javascript的 对象(Object),我们可以把ECMAScript对象想象成散列表,其值无非就是一组名值对,其中值可以是数据 ...
- 自己动手实现智能家居之温湿度数据采集存储(DHT11,MySql)
[前言] 一个热爱技术的人一定向往有一个科技感十足的环境吧,那何不亲自实践一下属于技术人的座右铭:"技术改变世界". 就让我们一步步动手搭建一个属于自己的"智能家居平台& ...
- [Machine Learning] Linear regression
1. Variable definitions m : training examples' count \(y\) : \(X\) : design matrix. each row of \(X\ ...