微服务学习11——spring cloud的网关zuul

1,为什么需要网关服务

如果有很多个微服务,用户需要依次去和各个微服务打交道吗?当然不需要,这样很不方便,通过一个网关就可以了!

通过中间的一层gateway访问即可

2,服务网关的要素

(1)稳定性,高可用;要是网关不可用,那么所有服务都不可用了!

(2)性能和并发性;

(3)安全性

(4)扩展性

3,常用的网关方案

(1)Nginx+Lua,性能好,具有高可用性,并且具有良好的扩展性(它本身被设计成耦合度极低的各个模块)

(2)KONG,基于Nginx二次开发,是商业软件,得花钱

(3)Tyk,是一个开源的、轻量级、快速、可伸缩的API网关,支持配额和速度限制。Go语言开发的,性能和扩展性上海市不错的。

(4)Spring Cloud Zuul,用了spring cloud再用zuul还是很合适的,快速上手的好方案。但是一代的zuul在性能上不具备优势

4,Zuul的特点

(1)路由+过滤器=Zuul

(2)核心是一系列的过滤器

5,Zuul的四种过滤器API

(1)前置(Pre)

(2)路由(Route)

(3)后置(Post)

(4)错误(Error)

Zuul整个的架构图如下:

6,请求生命周期

7,调用zuul

实际上调用spring cloud zuul相对比较简单

(1)pom加入依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-zuul</artifactId>

</dependency>

(2)在启动类上加入@EnableZuulProxy

(3)启动服务后,按照如下格式可以访问其他服务!

zuul服务/微服务名/访问路径:

http://localhost:8080/product/product/list

这样就可以访问,product的 /product/list服务。

8,自定义路由

在yml文件中加入这么一段即可:

zuul:

routes:

myProduct:

path: /myProduct/**

serviceId: product

访问就可以用这种方式:

http://localhost:8080/myProduct/product/list

上面的这段有简便写法:

zuul:

routes:

# myProduct:

# path: /myProduct/**

# serviceId: product

# 简洁写法

product: /myProduct/**

如果要将一些接口隐藏而不暴露出来,加上ignored即可:

zuul:

routes:

# myProduct:

# path: /myProduct/**

# serviceId: product

# 简洁写法、

product: /myProduct/**

# 排除某些路由

ignored-patterns:

- /myProduct/product/list

- /product/product/list

当然也可以用通配符:

/**/product/list

猜你喜欢

转载自blog.csdn.net/qq_22059611/article/details/89434228
今日推荐