以下概念性的语言均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网
Github源码参考:https://github.com/HanJuly/SpringCloudDemo
什么是API网关
网络层面的网关指网关(Gateway)又称网间连接器、协议转换器。
在这里我们指的网关是一个软件高层的概念,它是一个对所有微服务进行集中管理的系统,可以具有分流,鉴权,过滤规则等功能的系统。
为什么需要网关
1.在实际的生产中,我们不能把后面的所有服务都暴露给前端,那将是很危险的。
2.我们也需要在网关做一些路由的工作,比如对同样的实例进行划分域,10台在开发域,20台在生产域。这时就需要路由避免开发人员与运维人员或者测试人员相互干扰
https://blog.csdn.net/forezp/article/details/83792388
3.如果鉴权系统或者一些共同的过滤规则在网关,那么我们就可以统一修改,不必每个服务维护一份。
搭建:
pom.xml配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
路由功能
不需要在SpringBoot中加注解,直接在yaml中配置:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true #开启默认路由
lowerCaseServiceId: true #允许服务名小写
routes
- id: path_route #路由的名字
uri: lb://HELLO-PROVIDE #路由终点,lb表示用负载均衡的方式发送
predicates:
- Path=/gatewy/** #凡是这样形式的url都会被路由,后面的通配符与Ant类似
filters:
- StripPrefix=1 #发送时去掉前缀
使用postman验证,它将调用到Hello-provide这服务:
网关服务通过负载均衡转发的日志
image.png
网友评论