分享总结:开源网关-应用管理篇

Posted eolink

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享总结:开源网关-应用管理篇相关的知识,希望对你有一定的参考价值。

需求痛点

在这互联网高速发展的时代,企业业务系统多、渠道广,如何管理内外部调用端系统具有极大的挑战。
  1. 数量方面:API网关需要对各端应用统一管理,例如对企业自身很多的前端应用,包括不限于web应用、移动APP、小程序,甚至第三方各端的应用进行管理,确保各应用有序、合规调用服务。
  2. 安全方面:API网关需要对应用进行安全管理,例如对用户权限和接口访问控制进行限制,防止恶意攻击和数据泄露等安全问题。
  3. 监控方面:API网关需要对应用调用API进行实时监控,收集、分析和展示服务性能和用户行为等数据,为优化服务提供有力支持。
  4. 治理方面:API网关需要对应用请求流量进行治理,包括流量控制、限流、熔断、降级等措施,以确保后端服务的可靠性和稳定性。
基于上述挑战,Apinto 网关提出应用管理概念,统一管理应用及其生命周期。应用作为业务通讯的发起者角色,始终贯穿着整个调用链,Apinto网关对应用请求的流量进行鉴权认证,并对其服务治理,同时还对其监控告警,统计应用调用情况。

功能介绍

Apinto网关的应用管理提供了对API的身份认证和访问控制功能。在Apinto网关中,应用是调用API的主体,每个应用能够自定义属性和添加转发时的请求头部信息,作为API被调用时的附加信息。同时Apinto为应用提供了四种鉴权方式: ApiKeyAkSkJwtBasic,能对API进行访问控制。更细化一层,还能够对鉴权配置标签信息,用于区分是应用下的哪个鉴权。
 
当用户调用API的请求通过了某个应用的鉴权,可以将该应用认为是API的调用方,应用的相关信息也会被赋予该请求。此外,Apinto的流量策略、访问策略等服务治理功能,能够对特定应用生效。结合策略和应用,也能够从应用的维度对API进行限流等访问控制。

 

配置步骤

接下来使用Apinto网关的控制台来演示如何配置上游服务、API以及应用。

步骤一:配置上游服务

这一步中配置了静态服务,请求超时时间配置为1000ms并上线至test_apinto集群。
备注:上游服务配置的节点为官方示例接口,该接口会返回请求的信息。
 

 

 

步骤二:配置API

步骤二配置的示例api使用了上一步的服务,请求路径为/demo_api,接着上线至test_apinto集群。
 

 

步骤三:配置应用

步骤三新建了一个名为demonstratetion_app的应用,自定义属性app_namedemonstratetion_app。并且转发请求的头部携带上app_namedemonstratetion_app

 

 

步骤四:配置应用的鉴权

在这一步中,为应用新建一个鉴权,类型为apikey,并且鉴权永不过期。
配置说明:当请求头部有Authorization: demo_apikey时通过鉴权。

 

步骤五:调用API

这里使用eolink的apikit进行演示,调用上线至test_apinto集群的api,请求路径为/demo_api,请求头不携带鉴权信息。可以从下图的请求结果看到返回了403。

 

而这次在请求头部中携带Authorization: demo_apikey,可以看到请求返回内容中确实携带了应用的头部信息。
 

 

总结

Apinto是一款高性能、可扩展、易维护的API网关。
 
Apinto网关开箱即用,整个过程仅用2个小时就能快速入门,至于其他功能后续再进行研究!
 
喜欢或感兴趣的小伙伴们赶紧去下载安装体验吧!
 
为了支持Apinto团队提供更好的开源体验,记得fork一下噢。
 
开源地址:https://github.com/eolinker/apinto
 
 
 

PassJava 开源 : Spring Cloud 整合Gateway网关 #私藏项目实操分享#

PassJava (佳必过) 项目全套学习教程连载中,第一时间获取。

文档在线地址:www.passjava.cn

Spring Cloud 整合Gateway网关

1.Gateway网关介绍

  • 网关:流量的入口
  • 网关常用功能:路由转发,权限校验,限流控制
  • Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架
  • Spring Cloud Gateway取代了netflix的Zuul网关

2.Gateway原理

PassJava项目中,小程序和管理后台请求先访问到API网关.

API网关通过注册中心实时感知微服务的状态的路由地址,准确地将请求路由到各个服务.

官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/

  • 请求到达网关后,先经过断言Predicate,是否符合某个路由规则
  • 如果符合,则按路由规则路由到指定地址

  • 请求和响应都可以通过过滤器Filter进行过滤

3.创建Gateway 模块

  • 适用Spring 初始化器创建Gateway module

  • 创建module

  • 选择Gateway依赖

  • 引入Gateway模块
<module>passjava-gateway</module>

4.配置Gateway

  • 引入Nacos组件

因common模块引入了nacos注册中心组件,所以我们可以直接引用common模块

<dependency>
    <groupId>com.jackson0714.passjava</groupId>
    <artifactId>passjava-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
  • 应用类上添加注解@EnableDiscoveryClient
@RefreshScope
@EnableDiscoveryClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class PassjavaGatewayApplication 
    public static void main(String[] args) 
        SpringApplication.run(PassjavaGatewayApplication.class, args);
    

5.使用Gateway demo

  • 新建application.yml文件

    spring:
    cloud:
      gateway:
        routes:
          - id: route_qq
            uri: http://www.qq.com
            predicates:
              - Query=url,qq
          - id: route_baidu
            uri: http://www.baidu.com
            predicates:
              - Query=url,baidu

    第一条路由规则:当请求路径中包含url=qq,则跳转到http://www.qq.com

    第二条路由规则:当请求路径中包含url=baidu,则跳转到http://www.baidu.com

后续在PassJava项目中使用Gateway的强大功能.

代码地址

https://github.com/Jackson0714/PassJava-Platform

以上是关于分享总结:开源网关-应用管理篇的主要内容,如果未能解决你的问题,请参考以下文章

PassJava 开源 : Spring Cloud 整合Gateway网关 #私藏项目实操分享#

【分享】啥是API网关?大公司为啥都有API网关?

一线架构师总结:五种开源微服务API网关的终极大PK

通过两级网关设计来路由服务网格流量

开源LoRa网关与服务器

阿里API网关使用总结