APISIX网关
所属分类 apisix
浏览量 247
Apache APISIX provides rich traffic management features like Load Balancing,
Dynamic Upstream, Canary Release, Circuit Breaking, Authentication, Observability, etc.
负载均衡、动态上游、灰度发布(金丝雀发布)、服务熔断、身份认证、可观测性等
使用Apache APISIX来处理传统的南北向流量,也可以处理服务间的东西向流量。
同时,它也支持作为K8s Ingress Controller来使用。
APISIX 部署架构 包含3个部分
API Gateway负责流量转发,etcd负责配置存储,API Gateway Admin是管理控制台
完整的APISIX服务会运行在多个端口,三个常用端口
9000:管理后台的运行端口
9080:客户端访问路由时使用的端口
9180:通过管理API执行路由添加等操作的端口
http://HOST:9000/
访问APISIX的Dashboard页面 amdin/admin
核心概念
Upstream 上游,上游是对虚拟主机的抽象,即应用层服务或节点的抽象。
上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。
当多个路由或服务引用同一个上游时,可以通过创建上游对象,在路由或服务中使用上游ID(即:upstream_id)的方式引用上游
Route
Route 路由,是APISIX中最基础和最核心的资源对象。
APISIX 通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游服务。
路由中主要包含三部分内容:匹配规则、插件配置和上游信息。
Service
Service 服务,是某类API的抽象(也可以理解为一组Route的抽象)
它通常与上游服务抽象一一对应,Route与Service之间,通常是N:1的关系
解决 Nginx 动态配置 以及 网关功能扩展问题,基于 Nginx 与 LuaJIT 技术带来的高性能、高灵活性
Apisix 运行于 Openresty 之上,Openresty 运行于 Nginx 之上
Nginx 优势在于处理高并发
事件驱动型 全异步的网络I/O处理 极致的内存分配管理
Openresty的目标是让用户的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,
不仅仅对 HTTP 客户端请求,对后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等专有协议请求都提供高性能支持。
Openresty 通过对 Nginx 做出充分的扩展,引出了许多 hook 点,可以使用 lua 语言对这些 hook 进行实现扩展功能
OpenResty 借用了 Nginx 的事件处理和 Lua 的实时编译机制。
LuaJIT 是 Lua 语言的实时编译(JIT,Just-In-Time Compilation)器的实现。
Lua 的设计目标是能与 C 或其它常用的编程语言相互集成
Lua 不仅是一个可以作为独立程序运行的脚本语言,也是一个可以嵌入其它应用的嵌入式语言。
Lua 作为传统脚本语言常见的两个问题:效率低和代码暴露。
LuaJIT 引入的 JIT 技术能够有效地解决了这两个问题。
LuaJIT 尝试将 Lua 的动态解释和 C 的静态编译两者的优缺点相结合,
在脚本语言的执行期间,通过不断地分析正在执行的代码片段,编译或重新编译这段代码,提升执行效率
Apisix本质上是接管了Openresty生命周期的管理框架。
OpenResty在Nginx的Master和每个Worker进程中加入了LuaJIT VM 来解析 lua代码,在lua执行过程中创建的协程会共用一个Lua虚拟机。
Openresty 对 Nginx 做了扩展,引出了许多 hook 点,Apisix 使用 lua 语言对这些 hook 进行实现。
Apisix 中的转发上游服务的负载均衡逻辑实际上是使用了lua-resty-core/ngx/balancer库
Apisix的启动流程核心是根据Apisix配置生成nginx.conf,接着运行openresty。
初始化结束后,Apisix将会接管openresty的各种生命周期管理。
Apisix基于 etcd 和 Lua 实现了对 Nginx 集群配置的动态管理。
上一篇
下一篇
社保医保公积金查询
智能网格设置要点
k8s部署应用的三种方法
KVM虚拟化
国内外互联网平台
MQTT Broker选型要点