Zuul网关服务
微服务调用过程前面的博客文章已经介绍过spring cloud的服务的相关内容信息,那么我们回顾一下多个微服务的调用过程。微服务一般会由不同的团队去维护,,那么就会由不同的域名和IP。客户端不可能维护那么多的域名,所以就需要统一的维护所有的域名。这个就是spring cloud提供的网关,网关维护着所有的微服务,客户端通过请求到网关,由网关分发到不同的微服务,这样客户端就只需要维护网关...
微服务调用过程
前面的博客文章已经介绍过spring cloud的服务的相关内容信息,那么我们回顾一下多个微服务的调用过程。微服务一般会由不同的团队去维护,,那么就会由不同的域名和IP。客户端不可能维护那么多的域名,所以就需要统一的维护所有的域名。这个就是spring cloud提供的网关,网关维护着所有的微服务,客户端通过请求到网关,由网关分发到不同的微服务,这样客户端就只需要维护网关的域名即可。
使用网关服务,将网关对外,实现简化和统一管理。网关就类似我们的路由器,由于所有的请求都要经过网关,所以可以在网关中拦截请求,过滤非法请求等。
简介
上面已经简单说明了网关的作用,这里我们对网关的功能简单介绍一下,但是这里只搭建简单的网关服务,无法详细介绍所有功能。但是我相信google总有你需要的东西。
Zuul是Netflix开源的服务网关,它可以和前面介绍的Eureka/Ribbon/Hystrix/Feign等组件很好的兼任使用。Zuul的核心是过滤器,通过过滤器实现功能。
- 身份认证与安全
- 审查与监控
- 动态链路
- 压力测试
- 负载均衡
- 静态响应处理
- 容错降级
Zuul默认使用Apache HTTP Client作为HTTP客户端。如果要使用RestClient可以配置ribbon.restclient.enabled=true。如果要使用okhttp3.0kHttpClient可以配置ribbon.okhttp.enabled=true。
实现服务网关
1.maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<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>
2.启动类添加注解@EnableZuulProxy
@EnableZuulProxy
@SpringBootApplication
public class ApiGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ApiGatewayApplication.class, args);
}
}
3.编写application.yml配置文件
server:
port: 9000
spring:
application:
name: api-gateway
eureka:
client:
service-url:
default-zone: http://localhost:8761/eureka/
zuul:
routes:
provider-user: /provider-user/**
consumer: /consumer/**
这里需要对zuul.routes.xxxx配置做讲解。zuul.routes是固定的,后面的provider-user/consumer是微服务在注册中心的名称。后面的值是映射地址。所有的/provider-user/匹配的请求都会被转发到provider-user名称的微服务中。/consumer也是一样的道理。当然写法有多种,这里是简便的写法。
Eureka.client.service-url.default-zone的作用就是将网关服务注册到注册中心。
只要启动网关服务,通过网关的ip和域名+zuul.routes中配置的路由规则就可以访问到对于的服务。
4.路由配置介绍
忽略指定的服务:zuul.ignored-services=名称1,名称2
忽略所有微服务,只路由指定的服务:zuul.ignored-services:’*’;zuul.routes.consumer=/consumer/**
忽略某些路径:zuul.ignored-patterns=/**/admin/**(包含admin的都被忽略)
关注微信公众号(程序员小兔)不定期分享技术
更多推荐
所有评论(0)