服务与路由
服务与路由是 API7 网关中流量路由的基本构成要素。二者共同定义网关如何匹配传入请求,以及将请求代理到哪里。
服务
服务是共享后端(上游)和插件配置的一组路由的逻辑集合。在微服务架构中,一个服务通常代表一项业务能力或一个微服务,例如“用户服务”或“支付服务”。
主要字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 服务的唯一名称。最多 100 个字符。 |
type | string | 否 | http(默认)或 stream。 |
hosts | array | 否 | 服务接受的域名列表。最多 32 项。 |
path_prefix | string | 否 | 监听路径前缀,必须以 / 开头。 |
strip_path_prefix | boolean | 否 | 如果为 true(默认),代理到上游前会移除 path_prefix。 |
upstream | object | 否 | 后端目标配置。 |
plugins | object | 否 | 应用于此服务中所有路由的插件。 |
路由
路由为服务内的传入请求定义具体匹配规则,例如 URI、HTTP 方法和主机。请求匹配路由后,网关会应用定义的策略,并将请求代理到服务的上游。
主要字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 路由的唯一名称。 |
paths | array | 是 | 要匹配的 URL 路径列表(位于 path_prefix 之后)。最多 64 项,每项必须以 / 开头。 |
methods | array | 否 | 允许的 HTTP 方法,例如 GET、POST。如果为空,则允许所有方法。 |
vars | array | 否 | 使用 API7 表达式定义的高级匹配规则。 |
priority | integer | 否 | 匹配优先级,值越大优先级越高,默认为 0。 |
enable_websocket | boolean | 否 | 为路由启用 WebSocket 代理。 |
plugins | object | 否 | 此路由专用的插件。 |
请求流程
下图展示了请求如何通过路由和服务流向后端:
企业版与开源版工作流对比
在 API7 企业版中,控制面存储网关配置,并将其同步到相应的数据面节点。这种架构无需单独的发布流程,即可提供集中管理、可审计性和环境隔离。
| 特性 | 开源 APISIX | API7 企业版 |
|---|---|---|
| 持久化 | 通过 etcd 立即更新数据面。 | 存储在控制面数据库中,并同步到数据面节点。 |
| 配置范围 | 直接针对 APISIX 集群管理配置。 | 配置按网关组划分,通过控制面管理。 |
| 部署 | 保存后更改立即生效。 | 更改从控制面同步到目标网关组中的数据面节点。 |
| 审计 | 变更跟踪能力有限。 | 完整记录控制面操作的审计日志。 |