首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Cloud入门教程-Zuul实现API网关和请求过滤

简介

Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能:

认证

过滤

压力测试

Canary测试

动态路由

服务迁移

负载均衡

安全

静态请求处理

动态流量管理

在本教程中,我们将用zuul,把web端的请求转发到对应的产品服务上,并且定义一个pre过滤器来验证是否经过了zuul的转发。

基础环境

JDK 1.8

Maven 3.3.9

IntelliJ 2018.1

Git

项目源码

Gitee码云

创建Zuul服务

在IntelliJ中创建一个maven项目:

cn.zxuqian

apiGateway

然后在中添加如下代码:

需要注意的是,Spring官网的教程给的zuul的artifactId为spring-cloud-starter-zuul,这个是旧版zuul的名字,在我们的版本中已经更名为。

添加文件,指定:

创建类:

- Zuul内置的filter类型有四种,, ,,,分别代表请求处理前,处理时,处理后和出错后。

- 指定了该过滤器执行的顺序。

- 是否开启此过滤器。

- 过滤器的业务逻辑。这里只是简单的log了一下reqeust的请求方式和请求的路径。

接下来,在我们的配置中心的git仓库中创建文件,并添加如下配置:

这里配置了zuul的端口为8083,然后映射所有的请求到我们的服务上。如果不配置,那么这个Key就会默认作为ServiceId,而我们的例子中,ServiceId包括了,所以在下边显示指定了ServiceId。配置完成后提交到git。

更新productService

productService的uri做了一点改动,使其更符合rest风格:

这里匹配的路径改为了,之前是。

更新web客户端

在我们的web客户端的中添加一个新的方法:

这次我们直接请求服务,然后由它把我们的请求反射代理到服务。最后在中添加一个请求处理方法:

用来处理请求,然后调用类中的方法。

测试

使用启动,, , ,这几个工程,然后启动第二个,使用。

访问几次,然后除了会在浏览器看到返回的结果,我们还会在的命令行窗口中看到如下字样:

GET 方式请求 http://xuqians-imac:8083/product/list

然后在两个的命令行窗口中,我们还会看到随机出现的

Access to /products endpoint

说明也会自动进行负载均衡。

大家有什么想法欢迎来讨论。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180506G0JPVB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券