APISIX云原生API网关

1、简介

apisix是一款云原生微服务API网关,可以为API提供终极性能、安全性、开源和可扩展的平台。apisix基于Nginx和etcd实现,与传统API网关相比,apisix具有动态路由和插件热加载,特别适合微服务系统下的API管理。
在这里插入图片描述

我们先来了解下apisix的一些核心概念,对我们接下来的使用会很有帮助!

  • 上游(Upstream):可以理解为虚拟主机,对给定的多个目标服务按照配置规则进行负载均衡。
  • 路由(Route):通过定义一些规则来匹配客户端的请求,然后对匹配的请求执行配置的插件,并把请求转发给指定的上游。
  • 消费者(Consumer):作为API网关,有时需要知道API的消费方具体是谁,通常可以用来做身份认证。
  • 服务(Service): 可以理解为一组路由的抽象。它通常与上游是一一对应的,路由与服务之间,通常是多对一的关系。
  • 插件(Plugin):API网关对请求的增强操作,可以对请求增加限流、认证、黑名单等一系列功能。可以配置在消费者、服务和路由之上。

2、安装

git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
docker-compose -p docker-apisix up -d

在这里插入图片描述

apisix安装官方文档

3、界面化功能使用

3.1、通过可视化工具来管理apisix界面

  • 登录账号密码为admin:admin,访问地址:http://192.168.5.78(部署机ip):9000/

在这里插入图片描述

  • 登录之后看下界面,还是挺漂亮的,apisix搭建非常简单,基本无坑;
    在这里插入图片描述
  • 还有两个测试服务,web1访问地址:http://192.168.5.78:9081/
    在这里插入图片描述
  • 另一个测试服务web2访问地址:http://192.168.5.78:9082/
    在这里插入图片描述

3.2、路由功能

我们先来体验下apisix的基本功能,之前已经启动了两个Nginx测试服务web1和web2,接下来我们将通过apisix的路由功能来访问它们。

  • 首先我们需要创建上游(Upstream),上游相当于虚拟主机的概念,可以对真实的服务提供负载均衡功能;
    在这里插入图片描述
  • 创建web1的上游,设置好名称、负载均衡算法和目标节点信息;
    在这里插入图片描述
  • 再按照上述方法创建web2的上游,创建完成后上游列表显示如下;
    在这里插入图片描述
  • 再创建web1的路由(Route),路由可以用于匹配客户端的请求,然后转发到上游;
    在这里插入图片描述
  • 再选择好路由的上游为web1;
    在这里插入图片描述
  • 接下来选择需要应用到路由上的插件,apisix的插件非常丰富,多达三十种,作为基本使用,我们暂时不选插件;
    在这里插入图片描述
  • 再创建web2的路由,创建完成后路由列表显示如下;
    在这里插入图片描述
  • 接下来我们通过apisix网关访问下web1服务:http://192.168.5.78:9080/web1/
    在这里插入图片描述
  • 接下来我们通过apisix网关访问下web2服务:http://192.168.5.78:9080/web2/
    在这里插入图片描述

3.3、身份认证功能

使用JWT来进行身份认证是一种非常流行的方式,这种方式在apisix中也是支持的,可以通过启用jwt-auth插件来实现。

  • 首先我们需要创建一个消费者对象(Consumer);
    在这里插入图片描述
  • 然后在插件配置中启用jwt-auth插件;
    在这里插入图片描述
  • 启用插件时配置好插件的key和secret;
    在这里插入图片描述
  • 创建成功后消费者列表时显示如下;
    在这里插入图片描述
  • 之后再创建一个路由,路由访问路径匹配/auth/*,只需启用jwt-auth插件即可;
    在这里插入图片描述
  • 访问接口获取生成好的JWT Token,需要添加两个参数,key为JWT插件中配置的key,payload为JWT中存储的自定义负载数据,JWT Token生成地址:http://192.168.5.78:9080/apisix/plugin/jwt/sign

在这里插入图片描述

  • 不添加JWT Token访问路由接口,会返回401,接口地址:http://192.168.5.78:9080/auth/
    在这里插入图片描述
  • 在请求头Authorization中添加JWT Token后即可正常访问;
    在这里插入图片描述

3.4、限流功能

有时候我们需要对网关进行限流操作,比如每个客户端IP在30秒内只能访问2次接口,可以通过启用limit-count插件来实现。

  • 我们在创建路由的时候可以选择配置limit-count插件;
    在这里插入图片描述
  • 然后对limit-count插件进行配置,根据remote_addr进行限流;
    在这里插入图片描述
  • 当我们在30秒内第3次调用接口时,apisix会返回503来限制我们的调用。
    在这里插入图片描述

3.5、跨域功能

如果你想让网关支持跨域访问的话,可以通过启用cors插件来实现。

  • 我们在创建路由的时候可以选择配置cors插件;
    在这里插入图片描述
  • 然后对cors插件进行配置,配置好跨域访问策略;
    在这里插入图片描述
  • 调用接口测试可以发现接口已经返回了CORS相关的请求头。
    在这里插入图片描述

4、总结

apisix作为全新一代的API网关,有可视化管理的网关果然不一样,简单易用,功能强大!如果你的微服务是云原生的话,可以试着用它来做网关。

其实apisix并不是个小众框架,很多国内外大厂都在使用了,如果你想知道哪些公司在使用,可以参考下面的连接。

https://github.com/apache/apisix/blob/master/powered-by.md

参考资料

apisix的官方文档非常友好,支持中文,简直是业界良心!过一遍官方文档基本就能掌握apisix了。

在这里插入图片描述

官方文档:https://apisix.apache.org/zh/docs/apisix/getting-started

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值