APISIX的主要概念

Apache APISIX是一个动态、实时、高性能的API网关,提供丰富的流量管理特性,例如负载均衡、动态路由、灰度发布、服务熔断、身份认证等。支持多种环境部署,并提供大量插件实现不同业务场景需求,且支持编写自定义插件,提供dashboard供用户通过页面管理apisix。

APISIX网关的数据面和控制面分离,和传统网关相比,它具有负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能,并且它的动态路由和插件热加载非常适合管理微服务;

APISIX有完整的生态系统,能支持多种协议(http,tcp,udp,mqtt,grpc,…),丰富的插件(身份认证,安全,流控,监控,日志,…);

1.我们为何选择它?
1).开源社区活跃,国内参与度高;
2).高可用集群,功能强大,成熟的生态圈;
3).丰富的插件,支持热加载,可随时插拔,修改;
4).最主要的是我司的业务场景90%以上都能满足;

image-20251017102338089

image-20251017102346088

我们是如何部署的?

1.外置etcd集群存储apisix元数据,保证数据不丢失和高可用;
2.通过k8s-configmap管理dashboard+apisix的config配置;
3.在k8s集群内部部署多个apisix服务,保证服务高可用;
4.修改apisix相关组件日志输出,所有日志采集到腾讯日志云,本地不存储日志;

我们是如何使用它?
1.将k8s ingress ,nginx ,springgateway 合并,在ingress中采用通配二级域名使所有请求转发到apisix服务上

image-20251017103018816

image-20251017103033344

2.通过apisix-dashboard配置路由规则,替代所有nginx代理功能,并处理L7层流量,使所有流量先经过网关再转发到对应微服务;

3.所有上层SaaS服务根据k8s-service-name+k8s-service-port进行转发,支持k8s容器服务发现;

4.开发ext-plugin插件,开辟内部PaaS服务网关,对所有PaaS服务统一入口,统一鉴权,统一流控;

5.创建统一的前端service(web)和后端service(java),通过配置服务的kafka插件把所有访问数据推送到kafka上,开发对应服务对topic上数据进行消费,统计各系统API PV,UV;

6.灰度发布,通过不同的请求头标识,配置不同路由规则实现,服务灰度发布和流量切换;

image-20251017103133488

4.总结
作为cloud-native gateway 后续我们会整合所有L7层流量治理,定制个性化插件,打造云原生网关,提供更可靠,成本低,更高效的企业级网关系统;

APISIX 组件

服务

Service 也称为服务,是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。

image-20251017102437562

上游

Upstream 也称为上游,上游是对虚拟主机的抽象,即应用层服务或节点的抽象。

上游的作用是按照配置规则对服务节点进行负载均衡,它的地址信息可以直接配置到路由或服务上。当多个路由或服务引用同一个上游时,可以通过创建上游对象,在路由或服务中使用上游的 ID 方式引用上游,减轻维护压力。

image-20251017102448080

路由

Route 也称为路由,是 APISIX 中最基础和最核心的资源对象。

APISIX 可以通过路由定义规则来匹配客户端请求,根据匹配结果加载并执行相应的插件,最后把请求转发给到指定的上游服务。路由中主要包含三部分内容:匹配规则、插件配置和上游信息。

image-20251017102513022

路由基本使用

示例:https://paas.jrit.top/paas/test/v1/service/queryElectronicReceipt转发到

k8s服务jr-paas-pay-service-svc,端口10808,/jr-paas-pay/pay/v1/service/queryElectronicReceipt

请求头:

1
2
3
4
5
6
7
x-paas-app-key:com.junrunrenli.rpa

X-HMAC-PAY-TYPE:PAY_TYPE_BANK

X-HMAC-ACCESS-KEY:com.junrunrenli.rpa

x-paas-app-tenant:default

参数:

1
2
3
4
5
6
7
8
9
{

"yurref": "20240514173301",

"bankType": "1",

"receiptType": "4"

}

创建服务

image-20251017102622714

创建上游

image-20251017102630481

创建路由

image-20251017102637407

image-20251017102641524

image-20251017102647327

hmac-auth验签

生成密钥,并推给APISIX

image-20251017102656278

image-20251017102701195

image-20251017102750768