摘要
提到API网关,大家比较熟悉的有Spring Cloud体系中的Gateway和Zuul,这些网关在使用的时候基本都要修改配置文件或自己开发功能。今天给大家介绍一款功能强大的API网关apisix,自带可视化管理功能,多达三十种插件支持,希望对大家有所帮助!
简介
apisix是一款云原生微服务API网关,可以为API提供终极性能、安全性、开源和可扩展的平台。apisix基于Nginx和etcd实现,与传统API网关相比,apisix具有动态路由和插件热加载,特别适合微服务系统下的API管理。
核心概念
我们先来了解下apisix的一些核心概念,对我们接下来的使用会很有帮助!
- 上游(Upstream):可以理解为虚拟主机,对给定的多个目标服务按照配置规则进行负载均衡。
- 路由(Route):通过定义一些规则来匹配客户端的请求,然后对匹配的请求执行配置的插件,并把请求转发给指定的上游。
- 消费者(Consumer):作为API网关,有时需要知道API的消费方具体是谁,通常可以用来做身份认证。
- 服务(Service): 可以理解为一组路由的抽象。它通常与上游是一一对应的,路由与服务之间,通常是多对一的关系。
- 插件(Plugin):API网关对请求的增强操作,可以对请求增加限流、认证、黑名单等一系列功能。可以配置在消费者、服务和路由之上。
安装
由于官方提供了Docker Compose部署方案,只需一个脚本即可安装apisix的相关服务,非常方便,这里我们也采用这种方案来部署。
- 首先下载apisix-docker项目,其实我们只需要使用其中的example目录就行了,下载地址
- 接下来我们把example目录上传到Linux服务器上去,来了解下这个目录里面的东西;
drwxrwxrwx. 2 root root 25 Jun 19 10:12 apisix_conf # apisix配置文件目录
drwxrwxrwx. 2 root root 71 Jun 24 09:36 apisix_log # apisix日志文件目录
drwxrwxrwx. 2 root root 23 Jun 23 17:10 dashboard_conf # 可视化工具apisix-dashboard配置文件目录
-rwxrwxrwx. 1 root root 1304 Jun 19 10:12 docker-compose-alpine.yml # docker-compose 部署脚本(alpine)版本
-rwxrwxrwx. 1 root root 1453 Jun 19 10:12 docker-compose.yml # docker-compose 部署脚本
drwxrwxrwx. 2 root root 27 Jun 19 10:12 etcd_conf # ectd配置文件目录
drwxrwxrwx. 3 root root 31 Jun 23 17:06 etcd_data # ectd数据目录
drwxrwxrwx. 2 root root 107 Jun 19 10:12 mkcert
drwxrwxrwx. 2 root root 40 Jun 19 10:12 upstream # 两个测试用的Nginx服务配置
- 从docker-compose.yml中我们可以发现,该脚本不仅启动了apisix、apisix-dashboard、etcd这三个核心服务,还启动了两个测试用的Nginx服务;
version: "3"
services:
# 可视化管理工具apisix-dashboard
apisix-dashboard:
image: apache/