路由
本文档将介绍 APISIX 中路由(Route)的基本概念、APISIX 提供的不同路由选项,以及重复路由配置的缺点和解决方案。
在文档末尾探索其他资源,以获取有关相关主题的更多信息。
概述
路由(Route)定义了通往上游服务的路径。在 APISIX 中,路由对象用于在 APISIX 运行于应用层时创建路由,这与流路由对象不同,后者用于在 APISIX 作为运行于传输层的流代理时创建路由。路由负责根据配置的规则匹配客户端请求,加载并执行相应的插件,并将请求转发到指定的上游端点。
一个简单的路由可以使用路径匹配 URI 和相应的上游地址来设置。下图显示了一个示例,用户向 APISIX API 网关发送两个 HTTP 请求,这两个请求根据路由中配置的规则被相应转发:
路由通常也配置有插件。例如,在路由中配置限流限速插件将启用限流效果。
路由选项
APISIX 提供三种 HTTP 路由选项:
-
radixtree_host_uri:按主机和 URI 路径路由请求,在匹配过程中优先考虑主机名而不是 URI 路径。这是默认设置。它可用于路由客户端和服务器之间的南北向流量。 -
radixtree_uri:按主机和 URI 路径路由请求,在匹配过程中优先考虑 URI 路径而不是主机名。它可用于路由东西向流量,例如微服务之间的流量。 -
radixtree_uri_with_parameter:增强了radixtree_uri,支持在路径匹配中使用参数。
这些路由选项可以在 conf/config.yaml 的 apisix.router.http 下配置。有关更多信息,请参阅路由选项。
路由、上游和服务
虽然路由在定义流量路径方面至关重要,但重复的路由配置(即为一组路由硬编码相同的上游地址或插件名称)也存在缺点。在更新期间,需要逐个遍历和更新这些路由的重复字段。这种配置结果会导致维护成本大幅增加,特别是在拥有许多路由的大规模系统中。
为了解决这个问题,设计了 上游 (Upstreams) 和 服务 (Services) 来抽象重复信息并减少冗余,遵循 DRY 原则。