APISIX的使用
APISIX的主要概念
Apache APISIX是一个动态、实时、高性能的API网关,提供丰富的流量管理特性,例如负载均衡、动态路由、灰度发布、服务熔断、身份认证等。支持多种环境部署,并提供大量插件实现不同业务场景需求,且支持编写自定义插件,提供dashboard供用户通过页面管理apisix。
APISIX网关的数据面和控制面分离,和传统网关相比,它具有负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能,并且它的动态路由和插件热加载非常适合管理微服务;
APISIX有完整的生态系统,能支持多种协议(http,tcp,udp,mqtt,grpc,…),丰富的插件(身份认证,安全,流控,监控,日志,…);
1.我们为何选择它?
1).开源社区活跃,国内参与度高;
2).高可用集群,功能强大,成熟的生态圈;
3).丰富的插件,支持热加载,可随时插拔,修改;
4).最主要的是我司的业务场景90%以上都能满足;


我们是如何部署的?
1.外置etcd集群存储apisix元数据,保证数据不丢失和高可用;
2.通过k8s-configmap管理dashboard+apisix的config配置;
3.在k8s集群内部部署多个apisix服务,保证服务高可用;
4.修改apisix相关组件日志输出,所有日志采集到腾讯日志云,本地不存储日志;
我们是如何使用它?
1.将k8s ingress ,nginx ,springgateway 合并,在ingress中采用通配二级域名使所有请求转发到apisix服务上


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.灰度发布,通过不同的请求头标识,配置不同路由规则实现,服务灰度发布和流量切换;

4.总结
作为cloud-native gateway 后续我们会整合所有L7层流量治理,定制个性化插件,打造云原生网关,提供更可靠,成本低,更高效的企业级网关系统;
APISIX 组件
服务
Service 也称为服务,是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系。

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

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

路由基本使用
示例:https://paas.jrit.top/paas/test/v1/service/queryElectronicReceipt转发到
k8s服务jr-paas-pay-service-svc,端口10808,/jr-paas-pay/pay/v1/service/queryElectronicReceipt
请求头:
1 | x-paas-app-key:com.junrunrenli.rpa |
参数:
1 | { |
创建服务

创建上游

创建路由



hmac-auth验签
生成密钥,并推给APISIX





