美文网首页springbootconfigspringbootfeign
SpringCloud(六):搭建API网关服务

SpringCloud(六):搭建API网关服务

作者: 抓蛙行者 | 来源:发表于2017-10-25 22:52 被阅读519次

    一、概念部分

    1.什么是API网关?
    api网关就是应用程序接口网关,在微服务架构中分布着许多微服务,这些微服务不直接给用户调用,而是通过一个api网关的url为用户提供一致的服务。

    2.为什么需要API网关?
    为了简化调用逻辑,api网关对外提供一致的调用接口,可以简化客户端调用的复杂度。api网关可以将多个微服务的调用逻辑进行聚合,减少客户端的请求次数,优化客户端的使用体验。

    3.API网关的主要功能是什么?
    API网关主要功能是路由和服务治理。在微服务架构中,每个不同的后端服务可能都有用户维护的业务,所以在微服务中会有很多冗余的登录校验和签名校验,我们可以把微服务中的这些功能独立出来做成单独的OAuth2鉴权授权服务器,然后通过API网关调用OAuth2服务器来过滤用户的请求,保证对外服务的安全性。

    Spring Cloud 提供了基于Netflix Zuul 实现的API网关组件 Spring Cloud Zuul,在Zuul中封装了API网关的各种功能,比如路由,过滤,Cookie和熔断与Ribbon的支持。
    下面引用了Spring官网的图:

    二、代码示例

    1.创建项目 api-gateway , 在build.gradle中为项目添加依赖

    dependencies {
       compile('org.springframework.cloud:spring-cloud-starter-zuul')
       compile('org.springframework.cloud:spring-cloud-starter-eureka')
       testCompile('org.springframework.boot:spring-boot-starter-test')
    }
    

    2.创建项目配置文件 application.yml

    #服务器配置
    server:
      #端口
      port: 8080
    
    #服务器发现注册配置
    eureka:
      client:
        serviceUrl:
          #配置服务中心(可配置多个,用逗号隔开)
          defaultZone: https://www.apiboot.cn/eureka
    
    #spring配置
    spring:
      #应用配置
      application:
        #名称: api网关服务
        name: api-gateway
    
    #API网关配置
    zuul:
      #路由配置
      routes:
        producer:
          #响应的路径
          path: /producer/**
          #重定向到的服务(根据服务id名称从注册中心获取服务地址)
          serviceId:  producer-service
    

    3.启动类添加注解

    /**
    * API网关服务
    * @ EnableZuulProxy 支持网关路由
    */
    @SpringBootApplication
    @EnableZuulProxy
    public class ApiGatewayApplication {
    
       public static void main(String[] args) {
          SpringApplication.run(ApiGatewayApplication.class, args);
       }
    }
    

    4.启动项目(为了测试方便,我把服务部署到自己的服务器上并用域名绑定)

    打开服务注册中心 https://www.apiboot.cn/


    发现注册中心里面有三个服务,其中producer-server是我们的服务提供者,api-gateway是我们的api网关服务。

    为了加以区分服务,我把api网关所在的服务端口也做了二级域名映射。
    浏览器访问 api网关服务 https://api.apiboot.cn/


    我们的api网关服务目前只有一个根路径控制器,我们现在测试一下配置文件中配置的路径,看看能否实现重定向。
    打开浏览器,输入地址: https://api.apiboot.cn/producer/hello?name=lanshiqin

    可以看到api网关服务已经成功将url重定向到producer-service所在的服务上。

    项目地址: https://github.com/lanshiqin/cloud-project
    欢迎点赞。

    相关文章

      网友评论

      • huanfuan:有个问题一直困惑我 到底一个个模块是剥离成RPC的那种服务生产者 消费者模式 还是API接口模式 呢?

      本文标题:SpringCloud(六):搭建API网关服务

      本文链接:https://www.haomeiwen.com/subject/mbocpxtx.html