我是靠谱客的博主 坦率爆米花,最近开发中收集的这篇文章主要介绍APISIX,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • APISIX
    • 核心对象
      • Router对象代表的含义是什么?
      • upstream对象代表的含义是什么?
      • Router与Upstream的关系
    • 环境搭建
      • APISIX搭建
      • apisix-dashboard
      • 测试路由功能

调研网关调研好久,了解到kong,gravitte之类的网关,最后还是觉得APISIX 666实在。据说性能比Kong要好。下面记录下搭建笔记

APISIX

在Web Gateway中我整理了网关到底是什么东西,这里我来介绍下APISIX对于网关的封装。

APISIX官网上的图不太清楚,我自己整理下流程大概就是这样:
在这里插入图片描述

客户端请求到达APISIX网关,APISIX首先进行路由匹配,然后执行最终匹配路由所绑定的插件,插件执行完可能请求会被拦截(认证失败等),可能会被路由到最终目标服务上。这里它引入了一个Upstream对象,相当于一个服务实例列表的抽象。

核心对象

Router对象代表的含义是什么?

在这里插入图片描述
其实这里的路由和nginx中路由概念是相当的。一个路由包含匹配路径和所属域名。
另外包含所绑定的插件和upstream(后端服务实例列表)。

在这里插入图片描述
选择Upstream对象,底下的都是默认信息填充的。
在这里插入图片描述
选择插件(包括限流,认证插件…)

在这里插入图片描述

upstream对象代表的含义是什么?

upstream是服务实例列表对象
在这里插入图片描述
填写实例的端口和IP等信息,还可以选择什么样的负载均衡算法。
在这里插入图片描述

Router与Upstream的关系

Router和Upstream是1对N关系,比如你一个应用有两套API,管理员和用户,权限不一样。/app/user,/app/admin两个Router就可以绑定到同一个upstream对象。

环境搭建

APISIX前后端分离的,我搭建主要是为了验证我理解的概念,用spring boot简单跑个web应用试一下。

APISIX搭建

先得装一堆依赖,最好电脑联网,参考依赖安装。

然后下载apisix rpm

sudo yum install -y https://github.com/apache/apisix/releases/download/2.1/apisix-2.1-0.el7.noarch.rpm
# start apisix
apisix start

启动完之后,应该是安装在CentOS7的/usr/local/apisix下。日志也在那里。

apisix-dashboard

安装golang 13+,nodev14+,yarn(类似npm)

# golang
yum -y install golang
go env -w GOPROXY=https://goproxy.cn,direct
# yarn
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
sudo yum -y install yarn
# nodejs
tar xz node-v15.3.0-linux-x64.tar.xz
ln -s /var/lib/node/node-v15.3.0-linux-x64/bin/node /usr/bin/node

然后下载前端项目:

git clone -b v2.0 https://github.com/apache/apisix-dashboard.git
cd apisix-dashboard
make build

有点慢,yarn可能会出现node版本问题,再执行下:

ln -s /var/lib/node/node-v15.3.0-linux-x64/bin/node /usr/bin/node

把前端项目跑起来:

$ cd ./output

$ ./manager-api

# or running in background
$ nohup ./manager-api &

这个前端项目跑的端口号和地址,你可以去output文件夹下有个conf/conf.yaml看,

conf:
  listen:
    host: 0.0.0.0 # `manager api` listening ip or host name
    port: 8080 # `manager port

测试路由功能

随便跑个web项目。比如localhost:7000上,先在dashboard上新建一个upstream:

在这里插入图片描述
配个路由,填路径,比如你的web项目根路径是/,就填/*,如果是/app,就填/app/*

在这里插入图片描述
然后绑定到刚才创建的upstream对象:

在这里插入图片描述
ok,搞定后,通过网关端口访问你填的那个路径:

# route的名字不影响路由啊,所以最好每个应用有个根路径比如/app
curl http://$ip:9080/app/getDate

在这里插入图片描述

最后

以上就是坦率爆米花为你收集整理的APISIX的全部内容,希望文章能够帮你解决APISIX所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部