随着业务场景和需求越来越复杂和多样化,越来越多的标准和协议都开始崭露头角。Apache APISIX 作为 Apache 基金会的顶级开源项目,一直积极参与并推进相关生态层面的扩展。
本文将从多协议代理与多语言支持两个角度,为大家带来 Apache APISIX 即将发布的 xRPC 框架与多语言插件的相关示例。
多协议代理
在 Apache APISIX 中,每个请求都会对应一个 Route 对象。目前 Apache APISIX 的代理场景主要以下两种。
第一种是 HTTP 协议代理,也是目前 APISIX 中最常用的请求代理。基于 HTTP 协议代理,Apache APISIX 目前已经实现了数十种流量治理能力,如:细粒度的流控、安全和可观测性等。
第二种则是基于 TCP 和 UDP 的动态协议代理和负载均衡,它提供了最基础的流量准入能力和链接级别的日志能力。这种代理模式可以代理任何基于 TCP/UDP 协议的请求,如:MySQL、Redis、Mongo 或 DNS 等。但由于它是基于 TCP/UDP 的代理没有上层的应用层协议,只能获取到四元组的一些基础信息,所以在扩展能力上会稍弱一些。
为什么要开发 xRPC 框架
由于 Stream Route 在协议代理上的限制,加之我们希望在 APISIX 上可以支持更多的应用层协议,以服务更多用户和应用场景,xRPC 框架应运而生。
通过 xRPC 框架可以非常便捷地扩展协议能力,不管是特定还是私有数据协议,都可以具备类似 HTTP 协议代理的精准颗粒度的和更高阶的 7 层控制, 比如请求级别的可观测性、高级访问控制和代理策略等功能。
什么是 xRPC
xRPC 从字面角度来分析,即 X 为协议资源的抽象代表。而 RPC 是我们认为所有经过网关的资源都为一个过程调度,即它是一个协议扩展框架。所以在定位上,xRPC 是一个基础框架,而不是一种具体协议的实现。