网站重新设计需要多久,医疗app开发需要多少费用,wordpress 外链转内链 页面,采网站建设本文将介绍Apache APISIX#xff0c;这是一个开源API网关#xff0c;可以处理速率限制选项#xff0c;并且可以轻松地完全控制外部流量对内部后端API服务的访问。我们将看看是什么使它从其他网关服务中脱颖而出。我们还将详细讨论如何开始使用Apache APISIX网关。
在深入讨…本文将介绍Apache APISIX这是一个开源API网关可以处理速率限制选项并且可以轻松地完全控制外部流量对内部后端API服务的访问。我们将看看是什么使它从其他网关服务中脱颖而出。我们还将详细讨论如何开始使用Apache APISIX网关。
在深入讨论这个主题之前让我们先讨论一下API网关。
API网关
API网关是所有客户机的单一入口点。它们位于客户端和后端服务之间。通过调用多个后端服务将来自客户机的API请求代理/路由到适当的服务。然后将结果聚合并返回给客户机。
网关实现的难点
大多数API网关适合处理企业内网流量无法承受数以万计的客户端请求。一些网关依赖于关系数据库这对弹性扩展具有挑战性。这些系统大多是老旧的并且是在微服务出现之前开发的。
APISIX
Apache APISIX是Apache基础下的顶级项目。它是一个云原生API网关可以处理云计算、金融科技、保险、市场、房地产、安全、语音识别和旅游等行业多个平台上的接口流量。
Apache APISIX只是一个动态的、实时的、高性能的API网关。与传统的API网关相比APISIX提供了适合微服务系统下API管理的功能。这可以通过动态路由、身份验证、可观察性、插件热加载、gRPC协议转码等实现。
企业可以使用Apache APISIX快速管理API和微服务流量使用流限制身份验证、日志安全性和对复杂自定义插件的支持等特性。
APISIX有一个管理仪表板用户可以很容易地管理和配置插件、路由和其他组件。它可以与许多开源统计和监控组件如Prometheus、Apache Skywalking和Zipkin集成以提高性能。
APISIX架构
Apache APISIX架构
Apache APISIX包括三个部分
数据平面动态控制请求流量实现流量的处理和分配控制平面存储和同步网关数据配置AI平面TODO编排插件以及实时分析和处理请求流量。 APISIX组件
**插件**APISIX有70多个用Lua开发的内置插件包括身份认证、限制速率、限制请求、安全性、日志、可观察性等。这些插件涵盖了用户在企业中可能遇到的所有功能。通过这些插件用户可以将APISIX转换为其业务所需的各种网关。尽管受到Kong的启发Apache APISIX插件的架构和设计是完全不同的。它支持热重新加载所以你不必重新启动服务它还减轻了编写代码的困难。
**路由**APISIX使用自适应lua -rest -radixtree来组合路由的所有良好特征。lua -rest -radixtree单核可以达到每秒数百万次匹配。它支持Nginx的所有内置变量和自定义函数。
**模式**Apache APISIX使用JSON模式它为Lua/LuaJIT提供了JSON模式草案4、草案6和草案7验证器。这个JsonSchema负责API的描述并促进个人与用户界面之间的合作。该验证标准几乎涵盖了C、Java、JS等主流语言。虽然APISIX使用JSON模式语义但它并不局限于JSON。
**存储**APISIX只依赖于etcd因此APISIX是为高可用性而设计的。它使用lua-resty-etcd从etcd获取配置。
与其他网关对比
它涵盖了Nginx的所有功能。高性能高性能是Apache APISIX的主要优势。Apache APISIX最重要的特性是它是完全动态的包括路由、SSL证书、插件等。Hot-updated插件。在Apache APISIX内部插件的构建类似于乐高积木。您可以轻松地修改删除或添加插件而无需重新启动服务。这使得在APISIX中控制外部工作负载变得简单和灵活得多。Apache APISIX还提供定制插件来处理业务边缘层中的定制处理。APISIX由两种重要的体系结构支持X86和ARM64。它还支持OpenResty 和 Tengine运行环境并在裸机上运行到公共云中的各种服务器上。APISIX提供多协议和多平台支持如HTTP、TCP、UDP、HTTP到gRPC转码、Websocket、gRPC、Apache Dubbo和MQTT代理支持版本控制。在使用APISIX时如果新发布的版本出现错误您可以轻松地退格旧版本而不会在此过程中遇到任何缺点。基于身份的零信任。外部身份验证可以通过新集成的Future实现。目前实现零信任和使用外部身份验证提供者访问所有服务很简单。部署几个参数后我们可以向API添加身份验证功能。开源Apache APISIX于2019年6月6日开源。从那时起它在GitHub上获得了8700多颗星星和约287名贡献者。这是一个拥有2000多名成员的开发者社区你可以通过Slack 或 Mailing list.加入社区。
APISIX快速开始
Apache APISIX有管理仪表板可以方便管理员定义路由、Upstream和后端服务。要开始使用Apache APISIX这里是快速入门步骤
通过Docker安装Apache APISIX。在Admin API的帮助下为你的API网关创建一个路由、Upstream服务。将路由与Upstream绑定。通过Apache APISIX的Admin API验证结果。
简单的路由配置示例
假设你有一个后端服务运行在 http://localhost:8080想要通过 APISIX 对外暴露一个 API 接口步骤如下
启动 APISIX 首先确保已经安装并启动了 APISIX 服务不同操作系统启动方式稍有不同比如在 Linux 下可以通过对应的启动脚本启动。配置路由 可以使用 APISIX 的管理 API通常通过 http://127.0.0.1:9080/apisix/admin 访问具体根据你的配置情况或者使用 APISIX Dashboard如果已经部署了可视化界面来配置路由。
通过管理 API 使用 curl 命令示例如下
curl -i http://127.0.0.1:9080/apisix/admin/routes/1 \
-H X-API-KEY: your_api_key \
-H Content-Type: application/json \
-X PUT -d
{uri: /test-api,upstream: {type: roundrobin,nodes: {localhost:8080: 1}}
}上述配置创建了一个路由当访问 APISIX 服务的 /test-api 路径时会将请求转发到后端 http://localhost:8080 服务上。其中 X-API-KEY 需要替换为你实际设置的 API 密钥。
使用插件示例以限流插件为例
假设要对某个 API 接口进行限流限制每分钟最多允许 100 次请求访问基于前面的路由配置添加限流插件步骤如下
了解限流插件配置参数 APISIX 的限流插件有多个配置参数比如 count限制的请求次数、time_window时间窗口单位秒等。配置带限流插件的路由
curl -i http://127.0.0.1:9080/apisix/admin/routes/1 \
-H X-API-KEY: your_api_key \
-H Content-Type: application/json \
-X PUT -d
{uri: /test-api,upstream: {type: roundrobin,nodes: {localhost:8080: 1}},plugins: {limit-count: {count: 100,time_window: 60,key: remote_addr,rejected_code: 429}}
}这里在路由配置中添加了 limit-count 插件设置每分钟time_window 为 60 秒最多允许 100 次请求count通过客户端 IPkey 为 remote_addr来区分不同请求源当超过限制时返回 429 状态码表示请求过多被拒绝。
基于服务发现配置路由以 Consul 为例
如果后端服务众多且使用了服务发现机制如 Consul可以让 APISIX 自动发现后端服务并进行路由配置。
配置 APISIX 与 Consul 集成 修改 APISIX 的配置文件通常是 conf/config.yaml添加如下相关配置示例需根据实际情况调整
discovery:consul:host: 127.0.0.1port: 8500service_name: your_service_nametag: your_service_tag这里配置了 Consul 的地址、端口以及要发现的服务名称和标签等信息。
创建基于服务发现的路由
curl -i http://127.0.0.1:9080/apisix/admin/routes/2 \
-H X-API-KEY: your_api_key \
-H Content-Type: application/json \
-X PUT -d
{uri: /discovery-api,upstream: {service_name: your_service_name,type: roundrobin}
}这样 APISIX 会根据 Consul 中的服务信息自动找到对应的后端节点并将访问 /discovery-api 路径的请求转发到相应的后端服务上。
这些只是 APISIX 开发中的基础示例实际应用中还可以结合更多插件如鉴权插件、日志插件等以及应对更复杂的业务场景来灵活配置和开发。