网站开发项目小组成员职责,免费正能量网站下载ww,企业内部管理系统网站建设,私人制定网站#x1f4e3;读完这篇文章里你能收获到#xff1a; #x1f310; 深入Apache APISIX架构#xff1a; 从Nginx到OpenResty#xff0c;再到etcd#xff0c;一站式掌握云原生API网关的构建精髓#xff0c;领略其层次化设计的魅力。 #x1f50c; 核心组件全解析#xff… 读完这篇文章里你能收获到 深入Apache APISIX架构 从Nginx到OpenResty再到etcd一站式掌握云原生API网关的构建精髓领略其层次化设计的魅力。 核心组件全解析 路由、上游、服务、消费者、插件…这些不再是抽象的概念而是你API管理中的强大工具。 路由配置实操 通过Admin API轻松创建上游、配置路由实现请求的精准转发让理论与实践完美结合。 APISIX的独特优势 动态路由、热插拔插件、云原生兼容性…这些特性让APISIX在API网关领域独树一帜。 常用命令速查 从启动到停止从重启到版本检查一系列APISIX和etcd命令让你的运维工作更加得心应手。 文章目录 一、Apisix介绍1.1 基础架构剖析1.2 关键技术要素1.3 产品优势 二、路由配置入门初体验2.1 Admin API应用2.2 Dashboard可视化操作 三、Apisix常用命令3.1 Apisix命令3.2 Apisix-Dashboard命令3.3 ETCD命令 一、Apisix介绍
Apache APISIX 是 Apache 软件基金会下的云原生 API 网关它具有动态、实时、高性能等特点提供了负载均衡、动态上游、灰度发布金丝雀发布、服务熔断、限速、防御恶意攻击、身份认证、可观测性等丰富的流量管理功能。可以使用 Apache APISIX 来处理传统的南北向流量也可以处理服务间的东西向流量。
1.1 基础架构剖析
APISIX 的核心架构采用层次化设计
Nginx底层依赖 Nginx 提供高效的网络通信和数据传输OpenResty上层则通过 OpenResty 封装的 Lua 环境实现灵活的逻辑控制和业务扩展。etcd在配置管理方面APISIX 利用 etcd 作为分布式键值存储系统使得所有节点上的配置能够实时同步并动态更新从而确保整个服务集群具备高度的弹性和一致性。插件系统APISIX 提供了一个强大的插件生态系统这些插件可自由组合以满足不同场景下的功能需求如身份验证Key Auth、JWT、Basic Auth、限流限速、熔断、灰度发布、A/B 测试等。 1.2 关键技术要素
接下来我们来了解下 APISIX 的一些功能。在了解之前我们需要对 APISIX 的几个主要概念和组件简单了解下
**路由Routes**定义了如何将不同的请求映射到指定的上游服务可以根据请求的方法、路径、头部、查询参数等进行精确匹配。**上游Upstream**代表一组后端服务实例用于负载均衡可以通过多种负载均衡策略如轮询、权重、一致性哈希等分配请求。服务Service 是一组提供相同功能的后端服务器实例的集合通常对应着微服务架构中的一个具体服务。它通常与上游服务抽象是一一对应的Route 与 Service 之间通常是 N:1 的关系。**消费者Consumer**需要与用户认证配合才可以使用。消费者在访问服务时API 网关可以根据预先设定的规则对消费者的请求进行验证和过滤。。当不同的消费者请求同一个 API 时APISIX 会根据当前请求的用户信息对应不同的 Plugin 或 Upstream 配置。 如果 Route、Service、Consumer 和 Plugin Config 都绑定了相同的插件只有消费者的插件配置会生效。插件配置的优先级由高到低的顺序是Consumer Route Plugin Config Service。 **插件**插件是 APISIX 的核心功能单元每个插件可以实现特定的功能如认证、限流、缓存、日志记录等。**Admin API**APISIX 提供了强大的 Admin API 和 Dashboard 供用户使用Admin API 是一组用于配置 Apache APISIX 路由、上游、服务、SSL 证书等功能的 RESTful API。可以通过 Admin API 来获取、创建、更新以及删除资源。同时得益于 APISIX 的热加载能力资源配置完成后 APISIX 将会自动更新配置无需重启服务。 1.3 产品优势
APISIX 基于 Nginx 和 etcd与传统 API 网关相比APISIX 具有动态路由和热加载插件功能避免了配置之后的 reload 操作同时 APISIX 支持 HTTP(S)、HTTP2、Dubbo、QUIC、MQTT、TCP/UDP 等更多的协议。而且有 Dashboard提供强大而灵活的界面。同样也提供了丰富的插件支持功能而且还可以让用户自定义插件。 主要具有以下几个优势
高性能得益于 Nginx 的高性能内核和 LuaJIT 的快速脚本执行APISIX 即使在大规模并发环境下也能保持优异的性能指标低延迟、高吞吐量即便启用大量插件也无损其响应速度。**云原生兼容性**APISIX 无缝集成于 Kubernetes 等容器编排平台支持服务发现、自动注入标签等云原生特性。全动态能力APISIX 支持实时从 etcd 获取最新配置并立即生效。热插拔插件无需停服即可添加、移除或修改插件配置增强服务运维灵活性。易用性APISIX 支持与以下工具和平台集成HashiCorp Vault、Zipkin、Apache SkyWalking、Consul、Nacos、Eureka。通过 APISIX Dashboard运维人员可以通过友好且直观的 UI 配置 APISIX。多语言插件支持APISIX 支持多种开发语言进行插件开发开发人员可以选择擅长语言的 SDK 开发自定义插件。 二、路由配置入门初体验
2.1 Admin API应用
下文中的的 X-API-KEY 的值在 APISIX 的配置文件中 apisix_config.yaml 中有配置位于 deployment.admin.admin_key 下面。 Apache APISIX 使用 routes 来提供灵活的网关管理功能在一个请求中routes 包含了访问路径和上游目标等信息。 目标创建一个路由将客户端的请求转发至 httpbin.org这个网站能测试 HTTP 请求和响应的各种信息。
创建一个_upstream_指向 httpbin.org
curl http://127.0.0.1:9180/apisix/admin/upstreams \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{id:upstream-demo1-id,name: upstream-demo1, type:roundrobin, nodes: [ {host: httpbin.org,port: 80,weight: 1}]
}创建一个路由routes绑定以上创建的upstream
curl http://127.0.0.1:9180/apisix/admin/routes \
-H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X PUT -d
{id:routes-demo1-id,name: routes-demo1, methods: [GET,POST], uris: [/ip,/get] , upstream_id: upstream-demo1-id
} 发送一个请求进行验证访问http://127.0.0.1:9080/ip 2.2 Dashboard可视化操作
Apache APISIX 使用 routes 来提供灵活的网关管理功能在一个请求中routes 包含了访问路径和上游目标等信息。 目标创建一个路由将客户端的请求转发至 httpbin.org这个网站能测试 HTTP 请求和响应的各种信息。
创建一个_upstream_指向 httpbin.org
点击上游-创建-填写目标节点信息-下一步-提交 创建一个路由routes绑定以上创建的upstream
点击路由-创建-填写匹配路径-填写HTTP匹配方法-下一步-选择上游服务-下一步-提交 发送一个请求进行验证访问http://127.0.0.1:9080/ip 三、Apisix常用命令
3.1 Apisix命令
启动apisix服务
apisix start停止apisix服务
apisix stop优雅地停止apisix服务
apisix quit重启apisix服务
apisix restart重新加载apisix服务
apisix reload初始化本地nginx.conf
apisix init初始化etcd的数据
apisix init_etcd测试生成的nginx.conf
apisix test显示apisix的版本信息
apisix version显示apisix帮助信息
apisix help3.2 Apisix-Dashboard命令
启动apisix-dashboard服务
systemctl start apisix-dashboard停止apisix-dashboard服务
systemctl stop apisix-dashboard重启apisix-dashboard服务
systemctl restart apisix-dashboard3.3 ETCD命令
启动etcd
nohup sudo /usr/bin/etcd --data-dir/data/etcd /tmp/etcd.log 21 停止etcd
# 查找etcd进程的PID
ps aux | grep etcd# 假设找到的PID是12345使用kill命令停止etcd
sudo kill 12345重启etcd 先停止再启动
# 1. 查找etcd进程的PID
ps aux | grep etcd# 2. 假设找到的PID是12345使用kill命令停止etcd
sudo kill 12345# 3. 启动
nohup sudo /usr/bin/etcd --data-dir/data/etcd /tmp/etcd.log 21 # 4. 重新加载apisix
sudo apisix reload