Api-Gateway(网关)

2019-06-21  本文已影响0人  你值得拥有更好的12138

以下概念性的语言均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网
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

过滤器链

上一篇下一篇

猜你喜欢

热点阅读