微服务中网关的作用及搭建
作用(1)统一入口为全部微服务提供唯一入口点,网关起到内部和外部隔离,保障了后台服务的安全性。(2)鉴权校验识别每个请求的 权限,拒绝不符合要求的请求。(3)动态路由动态的将请求 路由 到不同的后端集群中。(4)降低耦合度减少客户端与服务的 耦合 ,服务可以独立发展。通过网关层来做映射。...
·
作用
(1)统一入口
为全部微服务提供唯一入口点,网关起到内部和外部隔离,保障了后台服务的安全性。
(2)鉴权校验
识别每个请求的 权限,拒绝不符合要求的请求。
(3)动态路由
动态的将请求 路由 到不同的后端集群中。
(4)降低耦合度
减少客户端与服务的 耦合 ,服务可以独立发展。通过网关层来做映射。
搭建
1、添加依赖
创建一个Spring Boot项目,然后添加以下依赖。
ps:以下依赖适用于spring boot 2.x
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
2、添加注解
在启动类中添加 @EnableZuulProxy
注解。
4、配置eureka
# eureka 配置
eureka.client.service-url.defaultZone=http://127.0.0.1:8761/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.prefer-ip-address=true
4、使用方式
网关的作用是为全部微服务提供唯一的入口,那么其他服务是怎样通过网关的呢?
采用的是 IP:端口/服务名称/请求地址 的方式。例如:
http://127.0.0.1:9000/ebook.product.core/product/list
其中 127.0.0.1
对应IP,9000 对应端口,自然不用说。
ebook.product.core
对应的是服务名称,也就是服务的 application.properties 配置文件中的 spring.application.name=ebook.product.core
配置。
如果服务原本的url是 http://127.0.0.1:8020/product/list
,那么上边的 product/list
,就与此时的对应。
5、7种常用路由指定方式
## 1 ###################### 路由指定:URL指定 #############################
## URL匹配关键字,如果包含关键字就跳转到指定的URL中
#zuul.routes.book-product.path=/book-product/**
#zuul.routes.book-product.url=http://127.0.0.1:8020/
## 2 ###################### 路由指定:服务指定1 #############################
##将路径的/book-product/引到 eureka的e-book-product服务上
##规则:zuul.routes.路径名.path
##规则:zuul.routes.路径名.serviceId=eureka的服务名
##http://127.0.0.1:9010/book-product/product/list
##等同于
##http://127.0.0.1:9010/e-book-product/product/list
#zuul.routes.book-product.path=/book-product/**
#zuul.routes.book-product.serviceId=ebook-product-core
## 3 ###################### 路由指定:服务指定1 #############################
#zuul.routes后面跟着的是服务名,服务名后面跟着的是路径规则,这种配置方式更简单。
#zuul.routes.ebook-product-core.path=/book-product/**
## 4 ###################### 路由排除:排除某几个服务 #############################
##排除后,这个地址将为空 http://127.0.0.1:9010/e-book-product/product/list
## 多个服务逗号隔开
#zuul.ignored-services=ebook-product-core
## 5 ###################### 路由排除:排除所有服务 #############################
#由于服务太多,不可能手工一个个加,故路由排除所有服务,然后针对要路由的服务进行手工加
#zuul.ignored-services=*
#zuul.routes.ebook-consumer-feign-fallback.path=/book-consumer/**
## 6 ###################### 路由排除:排除指定关键字的路径 #############################
# 排除所有包括/list/的路径
#zuul.ignored-patterns=/**/list/**
#zuul.routes.ebook-product-core.path=/book-product/**
## 7 ###################### 路由添加前缀:为所有路径添加前缀 #############################
##http://127.0.0.1:9010/book-product/product/list
##必须改成
##http://127.0.0.1:9010/api/book-product/product/list
#zuul.prefix=/api
#zuul.routes.ebook-product-core=/book-product/**
更多推荐
已为社区贡献6条内容
所有评论(0)