Apache APISIX云原生网关介绍

Apache APISIX介绍

API网关的需求
两个基本功能,突出了对API的需求,即普通网络服务器无法提供的东西。

1)复杂的速率限制

如果支付了订阅费用,可能会访问一个有常规内容的资源。然而,当你的业务是销售数据时,你可能会根据数量消费来销售它们。虽然服务本身有可能嵌入计费功能,但它阻止了更多的分布式架构,即依靠几个服务来提供所需的数据。在这一点上,只有一个中央接入点可以可靠地测量和收取使用费。

3)负载均衡

目前行业中的API网关的一个非详尽列表包括:

Apache APISIX
Kong Gateway
Tyk
Gloo
Ambassador
Gravitee

APISIX于2019年6月捐赠给Apache基金会,并在2020年7月成为一个顶级项目。在技术方面,APISIX是基于流行的Nginx网络服务器,上面有一个Lua引擎(OpenResty)和一个插件架构。

APISIX提供了几个核心对象:

Upstream

虚拟主机抽象,根据配置规则在一组给定的服务节点上执行负载均衡

Consumer

客户端的身份

Route

路由通过定义规则匹配客户的请求,然后根据匹配结果加载和执行相应的插件,并将请求转发给指定的Upstream

Service

一个可重复使用的对象,它同时绑定了一组插件和一个Upstream

对象被存储在etcd中,这是一个分布式的键值存储,也被Kubernetes使用。Apache APISIX暴露了一个REST API,这样你就可以以一种技术无关的方式访问配置。在这里,我们请求所有现有的路由。

配置访问默认是受保护的。需要传递API密钥。

使用其他对象的对象可以定义它们或指向现有的引用。例如,人们可以将一个独立的Route定义为:

定义upstream

现在我们可以在一个新的Route中引用新创建的Upstream:

初试牛刀

尝试Apache APISIX的最快捷方式是通过Docker。Apache APISIX的配置依赖于etcd,所以让我们使用Docker Compose:

version: "3"

services:
  apisix:
    image: apache/apisix:2.12.1-alpine
    command: sh -c "/opt/util/wait-for etcd:2397 -- /usr/bin/apisix init && /usr/bin/apisix init_etcd && /usr/local/openresty/bin/openresty -p /usr/local/apisix -g 'daemon off;'"
    volumes:
      - ./apisix_log:/usr/local/apisix/logs
      - ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
      - ./util:/opt/util:ro
    ports:
      - "9080:9080"
      - "9091:9091"
      - "9443:9443"
    depends_on:
      - etcd
  etcd:
    image: bitnami/etcd:3.5.2
    environment:
      ETCD_ENABLE_V2: "true"
      ALLOW_NONE_AUTHENTICATION: "yes"
      ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2397"
      ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2397"
    ports:
      - "2397:2397"
引用了wait-for
我们在config.yaml文件中配置了Apache APISIX。一个最小的配置文件看起来像这样:

apisix:
node_listen: 9080
allow_admin:
– 0.0.0.0/0
admin_key:
– name: “admin”
key: edd1c9f034335f136f87ad84b625c8f1
role: admin
etcd:
host:
– “http://etcd:2397″
prefix: “/apisix”
timeout: 30

!/bin/sh

curl http://localhost:9080/apisix/admin/routes -H ‘X-API-KEY: edd1c9f034335f136f87ad84b625c8f1’ -X POST -d ‘
{
“name”: “Route to httpbin”,
“uris”: [“/*”],
“upstream”: {
“type”: “roundrobin”,
“nodes”: {
“httpbin.org”: 1
}
}
}’

我们现在可以测试这个路由了,http://httpbin.org/ 提供了几个端点。命名合适的/anything端点返回请求数据中传递的任何内容。我们可以使用这个端点来检查与测试所有的工作是否符合预期:

curl ‘localhost:9080/anything?foo=bar&baz’ -X POST -d ‘{ “hello”: “world” }’ -H ‘Content-Type: application/json’

输出结果应与以下内容非常相似:

{
“args”: {
“baz”: “”,
“foo”: “bar”
},
“data”: “{ \”hello\”: \”world\” }”,
“files”: {},
“form”: {},
“headers”: {
“Accept”: “/“,
“Content-Length”: “20”,
“Content-Type”: “application/json”,
“Host”: “localhost”,
“User-Agent”: “curl/7.79.1”,
“X-Amzn-Trace-Id”: “Root=1-6239ae8e-633a33fb0d5fe44e354c9149”,
“X-Forwarded-Host”: “localhost”
},
“json”: {
“hello”: “world”
},
“method”: “POST”,
“origin”: “172.21.0.1, 176.153.7.175”,
“url”: “http://localhost/anything?foo=bar&baz”
}

对比KONG

从 API 网关核心功能点出发:

详细比较:

在API时代,网络服务器已经达到了另一个阶段。API网关。Apache APISIX就是这样一个网关。它不仅具有友好的Apache v2许可证,而且是Apache基金会的一部分。

使用Apache APISIX很容易。使用Docker,加上APISIX和Etcd镜像,就可以开始了。

今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

Original: https://www.cnblogs.com/wintersun/p/16155175.html
Author: PetterLiu
Title: Apache APISIX云原生网关介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553934/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球